| Up | 出力指標ベクトル p | 作成: 2026-03-21 更新: 2026-03-23 |
DNN は,出力のときに,つぎの2つを使う: ・N次元ベクトル p = ( p(1), ‥‥, p(N)) 即ち,出力はつぎのようになる: p( k ) ≈ 1 のとき,U( k ) を出力。 ここで 「p はほぼ one-hot になっている」は,しくみはわからぬが,訓練 Training の賜。 チャットAI,画像認識AI は,ともに DNN ということで,この流れは同じ。 即ち,つぎの2つは同型: ・画像認識AI が,入力画像に対しカテゴリーを出力 テクスト 画像 ↓ ↓ レイヤー処理 レイヤー処理 ↓ ↓ p参照 p参照 ↓ ↓ トークン カテゴリー 強調するが,チャットAI と画像認識AI の 「入力から出力までの流れ」 の同型は,トークンがチャットAI の出力である。 チャットAI のテクスト出力は,チャットAI がつぎのループを気の済むまで続ける様である: テクスト ←──┐ ↓ │追加 レイヤー処理 │ ↓ │ p参照 │ ↓ │ トークン ───┘ ○ チャットAI ・N : 登録トークン数 ・ユーザの入力テクストを,トークンベクトル列に翻訳 : [ x_1, x_2, ‥‥, x_n ] [ o_1, o_2, ‥‥, o_n ] とする。 これに対し,つぎの計算: logits_i = o_i W_out p_i = softmax( logits_i ) ・訓練時は,これに逆伝播処理が続く。 製品では,トークンの出力となり, p_n が p として使われる。 即ち,p_nk ≈ 1 のとき,ID が k のトークンを出力。 ○ 画像認識AI ・N : 登録カテゴリー数 ・ユーザの入力画像を,パッチに分け, パッチ列を特徴ベクトル列に翻訳 : [ x_1, x_2, ‥‥, x_n ] [ o_1, o_2, ‥‥, o_n ] とする。 画像全体を表す1個のベクトル:o ∈ R^d に変換する (Pooling): o(i) = ∑ { o_j(i) | j ∈ r(i) } / n Global Max Pooling o(i) = max{ o_j(i) | j ∈ r(i) } ここで, r(i) : 局所近傍(例:3 × 3) logits = o W_out p = softmax( logits ) ・訓練時は,これに逆伝播処理が続く。 製品では,カテゴリーの出力となり, p(k) ≈ 1 のとき,ID が k のカテゴリーを出力。 |