EmotiAI技術解説:AIに感情記憶を実装する
概要
EmotiAIは、AIエージェントに人間のような感情記憶・学習能力を付与する革新的なシステムです。 従来のAIが持つ一時的な感情分析を超えて、感情の記憶・統合・予測を実現し、 真の感情的知性(EQ)を持つAIエージェントの構築を可能にします。
この記事では、EmotiAIのコアとなる技術要素を詳しく解説します。
1. ハイブリッド感情モデル(OCC + Plutchik)
OCC理論(Ortony, Clore, Collins)
OCC理論は、感情を認知的評価プロセスとして捉える理論です。 出来事・エージェント・オブジェクトの3つの側面から感情を分析します。
- 出来事ベース: 喜び、苦悩、希望、恐怖
- エージェントベース: 誇り、恥、賞賛、非難
- オブジェクトベース: 好き、嫌い
Plutchik理論(感情の輪)
Plutchikの感情の輪は、8つの基本感情とその組み合わせを視覚的に表現したモデルです。
- 基本8感情: 喜び、信頼、恐怖、驚き、悲しみ、嫌悪、怒り、期待
- 強度の段階: 各感情に弱・中・強の3段階
- 感情の組み合わせ: 愛(喜び+信頼)、罪悪感(喜び+恐怖)など
ハイブリッドモデルの実装
EmotiAIでは、この2つの理論を統合したハイブリッドモデルを実装しています:
from backend.src.models.emotion_models import HybridEmotionModel
# 初期化
emotion_model = HybridEmotionModel()
# テキストから感情分析
text = "友人との再会がとても嬉しい!"
result = emotion_model.analyze(text)
print(f"Emotion: {result['emotion']}") # joy
print(f"Intensity: {result['intensity']}") # 0.8
print(f"Arousal: {result['arousal']}") # 0.7
print(f"Valence: {result['valence']}") # 0.92. Q学習による感情-行動最適化
Q学習とは
Q学習は、強化学習の一種で、状態と行動のペアに対する「価値(Q値)」を学習します。 EmotiAIでは、感情状態に基づいて最適な行動を選択するために使用しています。
感情状態と行動の互換性
感情状態と行動には相性があります。例えば:
- 喜び状態 → 「共感する」「励ます」行動が適切
- 怒り状態 → 「冷静に対処する」「一旦距離を置く」が適切
- 悲しみ状態 → 「寄り添う」「傾聴する」が適切
実装例
from backend.src.learning import QLearning, ActionSelector
# Q学習の初期化
q_learner = QLearning(
learning_rate=0.1, # 学習率
discount_factor=0.95, # 割引率
exploration_rate=0.2 # 探索率(ε-greedy)
)
# 行動選択器
action_selector = ActionSelector(q_learner)
# 感情状態から行動を選択
emotional_state = {"joy": 0.7, "excitement": 0.5}
action = action_selector.select_action(emotional_state)
# フィードバックで学習
reward = 1.0 # 正のフィードバック
q_learner.update(emotional_state, action, reward)Q値の更新式
Q値は以下の式で更新されます:
Q(s, a) ← Q(s, a) + α[r + γ max Q(s', a') - Q(s, a)]
s: 現在の感情状態
a: 選択した行動
r: 報酬(フィードバック)
α: 学習率
γ: 割引率
s': 次の感情状態3. 感情記憶システム
記憶の3層構造
EmotiAIの記憶システムは、人間の記憶モデルを参考に3層構造を採用しています:
- 短期記憶(Redis): 直近の感情状態を高速に取得
- 中期記憶(PostgreSQL): 1週間~1ヶ月の記憶を保持
- 長期記憶(PostgreSQL統合): 統合・圧縮された重要な記憶
記憶の統合アルゴリズム
類似した感情記憶を統合し、長期記憶として保存します:
from backend.src.core import MemoryManager
from backend.src.models import EmotionalMemory
memory_mgr = MemoryManager()
# 記憶の保存
memory = EmotionalMemory(
emotion="joy",
intensity=0.8,
context="友人との再会",
timestamp="2025-11-26T10:00:00Z"
)
memory_mgr.store(memory)
# 類似記憶の検索
similar_memories = memory_mgr.retrieve(
emotion="joy",
similarity_threshold=0.7,
limit=10
)記憶の減衰モデル
記憶は時間とともに減衰しますが、感情の強度によって減衰率が異なります:
def calculate_decay(intensity: float, days_elapsed: int) -> float:
"""
記憶の減衰計算
強い感情(intensity > 0.7)は減衰が遅い
弱い感情(intensity < 0.3)は減衰が速い
"""
base_decay = 0.95 ** days_elapsed
intensity_factor = intensity ** 0.5
return base_decay * intensity_factor4. 3D感情空間マッピング
3次元感情空間
感情を3次元空間(Valence, Arousal, Dominance)にマッピングすることで、 感情間の類似度や遷移を計算できます。
- Valence(感情価): ポジティブ↔ネガティブ(-1.0 ~ +1.0)
- Arousal(覚醒度): 落ち着き↔興奮(0.0 ~ 1.0)
- Dominance(支配性): 受動的↔能動的(0.0 ~ 1.0)
実装例
from backend.src.core import Emotion3DManager
emotion_3d = Emotion3DManager()
# 感情を3D空間にマッピング
vector = emotion_3d.map_to_3d(
emotion="joy",
intensity=0.8,
arousal=0.7,
valence=0.9
)
print(f"3D Vector: {vector}")
# Output: [0.9, 0.7, 0.8]5. パーソナライズ機能
ユーザー別感情プロファイル
EmotiAIは、ユーザーごとに感情反応のパターンを学習し、 パーソナライズされた感情分析を提供します。
from backend.src.core import PersonalizedAnalyzer
from backend.src.models import EmotionalProfile
analyzer = PersonalizedAnalyzer()
# ユーザープロファイルの作成
profile = EmotionalProfile(
user_id="user_123",
baseline_emotions={
"joy": 0.6,
"trust": 0.7,
"fear": 0.2
},
sensitivity=0.8
)
# パーソナライズ分析
result = analyzer.analyze_with_profile(
text="今日は良い一日だった",
profile=profile
)
print(f"Personalized Emotion: {result['emotion']}")
print(f"Intensity Adjustment: {result['adjustment']}")6. 技術スタック
バックエンド
- Python 3.11+: コアロジック実装
- FastAPI: RESTful API
- Redis: 短期記憶(高速キャッシュ)
- PostgreSQL: 中長期記憶(永続化)
機械学習
- NumPy: 数値計算
- Pandas: データ処理
- scikit-learn: 機械学習アルゴリズム
NLP(多言語対応)
- spaCy: 自然言語処理
- transformers: 感情分類モデル
- 対応言語: 日本語、英語、中国語、韓国語
7. パフォーマンス最適化
目標パフォーマンス
- 記憶処理: 10ms以内
- API応答: 100ms以内
- 同時処理: 1,000リクエスト/秒
最適化手法
- Redis キャッシュ: 頻繁にアクセスされる記憶をメモリに保持
- 非同期処理: FastAPIの async/await を活用
- バッチ処理: 記憶統合を夜間バッチで実行
- インデックス最適化: PostgreSQLのインデックス設計
8. セキュリティとプライバシー
データ暗号化
- 転送時: TLS 1.3
- 保存時: AES-256暗号化
アクセス制御
- JWT認証: トークンベース認証
- ロールベースアクセス制御: ユーザー・管理者権限
GDPR/CCPA準拠
- データ削除権: ユーザーによる記憶削除機能
- データポータビリティ: 記憶データのエクスポート
まとめ
EmotiAIは、OCC理論とPlutchik理論を統合したハイブリッド感情モデル、Q学習による行動最適化、 3層構造の記憶システムにより、AIエージェントに真の感情的知性を与えます。
Python、FastAPI、Redis、PostgreSQLを組み合わせた高性能なアーキテクチャで、 リアルタイム感情分析と長期記憶を実現しています。