コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
Self-Attention
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''Self-Attention'''とは、[[Transformer]]の中核となっている部分です。 == 擬似コード == Self-Attentionの基本的な構造は以下のように表現できます。 なお、このコードはPythonの擬似コードであり実際には動作しません。 <source lang="python"> def self_attention(input, mask=None): # Query, Key, Valueの計算 # まず入力からQuery、Key、Valueを計算します。 # これらはそれぞれ異なる全結合層(query_projection、key_projection、value_projection)によって計算されます。 queries = query_projection(input) keys = key_projection(input) values = value_projection(input) # スコアの計算 # 次にQueryとKeyの内積を計算しスコアを得ます。 # このスコアは各入力トークンが他のすべてのトークンとどの程度関連しているかを示します。 scores = matmul(queries, keys.transpose()) # スコアをスケーリング # d_kは内積が大きくなりすぎてSoftmax関数が非常に小さな勾配を持つようになる # (つまり、勾配消失問題が発生する)のを防ぐためのスケーリングファクターです。。 # d_kは通常、Query、Key、Valueの次元数です。 d_k = 64 scores = scores / sqrt(d_k) # マスクを適用(必要な場合) if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) # スコアを確率分布に変換 # スコアをSoftmax関数に通すことで確率分布(attention_weights)を得ます。 attention_weights = softmax(scores) # Valueとの重み付き和を計算 output = matmul(attention_weights, values) return output </source> [[category: 人工知能]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化