Hello there, ('ω')ノ
✅ 今回の目的
ChatGPTのようなAIが「どんな答え方が良いのか」を人間の評価を通して学ぶ仕組みを体験してみる!
今回はあくまで簡易体験のため、以下の流れで進めます:
- GPTのような小型モデルに回答を生成させる
- それに対して人間(あなた)が「どれが良いか」評価
- その評価結果をもとに、“報酬モデル”を模した簡易学習を行う
💻 Colab環境の準備
まず、Google Colab ノートブックを新規作成して、以下のコードを実行しましょう。
▶ ライブラリのインストール
!pip install transformers datasets
🧠 ステップ①:小型GPTモデルで回答を生成
ここでは、Hugging Face から事前学習済みの GPT-2 を使います。
from transformers import GPT2Tokenizer, GPT2LMHeadModel model_name = "gpt2" tokenizer = GPT2Tokenizer.from_pretrained(model_name) model = GPT2LMHeadModel.from_pretrained(model_name) def generate_responses(prompt, num_return_sequences=2): input_ids = tokenizer.encode(prompt, return_tensors='pt') outputs = model.generate( input_ids, max_length=50, do_sample=True, top_k=50, num_return_sequences=num_return_sequences ) return [tokenizer.decode(o, skip_special_tokens=True) for o in outputs]
🧪 ステップ②:回答を並べて、人間が“好み”で選ぶ
prompt = "AIとは何ですか?" responses = generate_responses(prompt) print("質問:", prompt) for i, resp in enumerate(responses): print(f"[{i}] {resp}")
ここで出力された複数の回答のうち、「どれが一番よかったか?」を手動で選びます(例:0番が良かった、など)。
📈 ステップ③:簡易的なフィードバックでスコアを学習(擬似RLHF)
今回は報酬モデルを使わず、簡易的に「選ばれた回答にスコア1、それ以外に0」という仕組みで“好み”を記録します。
# 人間が選んだ良い応答の番号を指定 preferred_index = 0 # 例:あなたが選んだ番号を入力 # 擬似フィードバック記録 feedback_data = [ {"text": resp, "reward": 1 if i == preferred_index else 0} for i, resp in enumerate(responses) ] # 結果確認 for entry in feedback_data: print(f"報酬: {entry['reward']} | 応答: {entry['text']}")
🛠 ステップ④:理想的にはこのフィードバックで微調整!
ここでは学習までは行いませんが、実際のRLHFではこのフィードバックを使って:
- 報酬モデル(人間の好みを予測するAI)を訓練し
- モデルの生成結果を「強化学習」でチューニング
というプロセスが行われます。
📌 今回はその一部を体験的に再現する形になっています。
🧩 応用アイデア
この仕組みを使って、以下のような簡易実験が可能です:
| 活用アイデア | 例 |
|---|---|
| 社内FAQのトーン改善 | 同じ答えに対して「わかりやすい表現」を選んで学習 |
| メール文テンプレートの好感度調整 | 読み手に優しい書き方を選んで学習 |
| AIライティング支援ツール | 「好ましい文章」をフィードバックで強化 |
✅ まとめ:ColabでRLHFの流れを“なんちゃって体験”
✅ RLHFは、人間の好みや判断をAIに学ばせる強力な手法
✅ 実際には複雑な学習プロセスがあるが、Colabでも体験可能な部分はある
✅ 「複数案から選ぶ」だけでも、立派なフィードバックデータになる
✅ 社内でのカスタマイズにも応用可能な考え方!
Best regards, (^^ゞ