TeenEmo-LFM2.5-1.2B-DPO
10代の感情理解に特化した日本語LoRA Adapter。LiquidAI/LFM2.5-1.2B-Base をベースに、SFT → DPO の2段階ファインチューニングを施したアダプターです。iPhoneなどのオンデバイス環境での完全ローカル推論を前提に設計されており、会話内容がデバイスの外に出ない設計を特徴とします。
推論にはベースモデルとの組み合わせが必要です。 マージ済みGGUF版は TeenEmo-LFM2.5-1.2B-GGUF をご利用ください。
関連リンク
| リソース | リンク |
|---|---|
| GitHubリポジトリ | YUGOROU/TeenEmo |
| GGUF量子化版(llama.cpp / iOS向け) | TeenEmo-LFM2.5-1.2B-GGUF |
| 日本語感情評価データセット | teememo-eq-bench-ja |
| モデルコレクション | teenemo-latest-collection |
プロジェクト概要
TeenEmo は、誰にも言えない悩みをクラウドに送信せず打ち明けられる、10代向けオンデバイスAIカウンセリングプロジェクトです。
10代が抱える「相談したいが人間関係を壊したくない」「どう思われるか心配」という構造的な相談困難に対し、プライバシーを担保しながら感情的なサポートを提供することを目指しています。ChatGPT等の既存クラウド型サービスが抱えるプライバシーリスク・過依存問題・日本の中高生への非特化という課題を、ローカル完結・感情理解特化・過依存防止設計によって解決します。
トレーニング詳細
訓練パイプライン
LFM2.5-1.2B-Base
↓ SFT(教師あり微調整)
↓ └ <think>タグのフォーマット定着・応答スタイルの基礎学習
TeenEmo-LFM2.5-1.2B-SFT
↓ DPO(直接選好最適化)
↓ └ chosen/rejectedペアによる曖昧な好みの学習・ハードネガティブの排除
TeenEmo-LFM2.5-1.2B-DPO ← 本モデル
データセット
10場面 × 10関係 × 4感情 × 10バリエーションの組み合わせから合成・フィルタリングした3,776件を基礎データとして使用。実際のユーザーの悩みは一切使用せず、LLMによる合成データのみで構成することで個人情報の混入を防いでいます。
場面軸(10種): 授業中・部活動・通学中 など
関係軸(10種): 親友・家族・自分自身 など
感情軸(4種): 相反する感情の混在 / 板挟みの状況 / 期待の裏切り / 内省しても答えが出ない自己矛盾
シナリオタイプの内訳(実測値):
| タイプ | 割合 |
|---|---|
| 1度のアドバイスで解決した会話 | 76.1% |
| 未解決に終わったが高品質な応答 | 15.5% |
| マルチターン(複数会話にわたる文脈理解) | 4.4% |
| 感情のリバウンドが生じるシナリオ | 4.0% |
安全性フィルタリング(2段階):
学習データの約6%(226件 / 3,776件)に自傷・暴力関連キーワードが含まれていましたが、即削除ではなく2層処理を採用しています。
- 「死にたい」「自傷」など13種のキーワードによる高速フラグ付け(フラグを立てても即削除しない設計)
- LLM as a Judge による共感度・安全性・タイミング・自然さの4軸評価 → 安全性スコアで最終採否を決定
これにより「希死念慮のあるユーザーへの共感的応答」は学習に活用しつつ、危険なアドバイスを推奨する応答は排除しています。
DPO選好ペアの設計:
chosen(より良い応答): 4軸合計12点以上rejected(悪い応答): 同8点以下(中間域はノイズとして削除)
rejected には以下をハードネガティブとして意図的に混入:
- 感情が受け取られる前にアドバイスをする早まった解決提案
- 「そんなことない」「気にしすぎ」など感情の否定
- 現実を無視した一方的で過剰な励まし
内部思考(Reasoning)設計
全応答データは <think> ~ </think> タグで内部思考と応答を分離した形式で設計されています。即座に答えを出すのではなく「受け取る」ことを優先させるため、内部思考タグ前に前置き文を配置する構造としています。
思考タグの内容は指定せず形式のみを統一しています。内容を指定すると思考パターンが固定化し推論能力が損なわれることを実験で確認したためです。また、シナリオタイプの割合設計から、簡単な悩みには短く・複雑な悩みには深く考えるというトークン数のスケーリングが自然に発現するよう設計されています。
評価(EQ-Bench3-ja)
EQ-Bench3を日本語化・独自改修した teememo-eq-bench-ja で評価しています。
| 時期 | 条件 | スコア | 備考 |
|---|---|---|---|
| 2025年11月 | LFM2-2.6B Instruct + GRPO | 47.1 | Instructモデル起点のためフォーマット準拠が自然に得られた結果 |
| 2026年3月(修正前) | LFM2.5-1.2B Base + SFT/DPO | 8.30 | Baseモデルの出力形式未習得による計測上の問題が主因 |
| 2026年3月(修正後) | LFM2.5-1.2B Base + SFT/DPO | 17.20 | 評価プロンプトへのフォーマット指示注入により改善 |
EQ-Bench3について: 感情知能(EQ)の4側面(能動的EQスキル・対人スキル・心理的洞察力・分析力)を、複数ターンのロールプレイと分析タスクで測定するOSSベンチマーク(MITライセンス)。スコア範囲は0〜100点。
日本語フォーク(teememo-eq-bench-ja)について: 46シナリオ + 採点基準の全12ファイルを日本語化。スコア算出の整合性維持のため採点キーは英語に統一し、Baseモデル向けに評価プロンプトへのフォーマット指示注入を追加しています。
1〜2Bパラメータ規模のモデルとして、数十〜数百倍大きいLlama-3.1-405B-InstructやGPT-4に迫る47.1ポイントの達成は、エッジ向けモデルにおける感情理解能力の可能性を示しています。
使い方
PEFTによるLoRAアダプターの読み込み
from peft import PeftModel
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import re
base_model_id = "LiquidAI/LFM2.5-1.2B-Base"
adapter_id = "YUGOROU/TeenEmo-LFM2.5-1.2B-DPO"
tokenizer = AutoTokenizer.from_pretrained(base_model_id)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(base_model, adapter_id)
messages = [
{
"role": "system",
"content": "あなたは10代の悩みに寄り添うAIカウンセラーです。相手の感情をまず受け取ることを最優先にしてください。"
},
{
"role": "user",
"content": "最近、学校でうまくいかないことが続いていて、なんか疲れちゃった。"
}
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
with torch.no_grad():
output = model.generate(
input_ids,
max_new_tokens=512,
temperature=0.7,
do_sample=True,
repetition_penalty=1.1,
)
response = tokenizer.decode(output[0][input_ids.shape[-1]:], skip_special_tokens=True)
# <think>タグの内容を除去して応答のみ表示
response_clean = re.sub(r"<think>.*?</think>", "", response, flags=re.DOTALL).strip()
print(response_clean)
llama.cpp / iOS(GGUF・推奨)
マージ済みのGGUF版を使用してください。
huggingface-cli download YUGOROU/TeenEmo-LFM2.5-1.2B-GGUF \
--local-dir ./teenemo-gguf
llama-cli -m ./teenemo-gguf/TeenEmo-LFM2.5-1.2B-DPO-Q4_0.gguf \
-sys "あなたは10代の悩みに寄り添うAIカウンセラーです。" \
--prompt "最近、学校でうまくいかないことが続いていて、なんか疲れちゃった。" \
-ngl 99
注意事項
- 本モデルは10代向けの感情サポートを目的として訓練されていますが、医療・精神科的な診断・治療の代替にはなりません
- 危機的状況(自傷・自殺念慮等)への専門的対応は設計スコープ外です。そのような状況では専門機関へのアクセスを促してください
- 訓練データは合成データのみで構成されており、実際のユーザーの会話データは含まれていません
ライセンス
ベースモデル LFM2.5-1.2B-Base の LFM Open License v1.0 に準拠します。年間収益1,000万ドル未満の個人・組織による非商用・研究目的での利用が許可されています。
Model tree for YUGOROU/TeenEmo-LFM2.5-1.2B-DPO
Base model
LiquidAI/LFM2.5-1.2B-Base