ひとつの表が単語を読み込み、その同じ表が書き出す。 モデルは、各単語をベクトルに変える巨大な表を持つ——これが読む仕組み。話すには逆向きが要る——ベクトルを単語へ戻す。静かな妙手は、これを同じ表で両方向に使えること。重み共有(weight tying):ひとつの共有された地図で、単語を読み、単語を書く。
ふつうは、表をひとつでなく巨大な二つ抱える。 E∈RV×d,U∈RV×dE \in \mathbb{R}^{V \times d}, \qquad U \in \mathbb{R}^{V \times d} 読み込みは、単語ごとに一行の表を使う——語彙Vのぶんだけ縦に高く、モデル幅dのぶんだけ横に広い。書き出しにはその鏡像、もうひとつのV×dの表が要り、候補となる各単語に点をつける。別々に学習され、両者は鏡映しの仕事をこなす二つの巨人だ。同じ中身のトランクを二つ担ぐ荷役夫のように——中身は同じ、重さは二倍、どちらも運び、保たねばならない。
だが語彙はひとつ。ならば表もひとつにする。 in: x=etout: zi=ei⊤htie: U=E\text{in: } x = e_t \qquad \text{out: } z_i = e_i^{\top} h \qquad \text{tie: } U = E どちらの仕事も同じ単語に触れる。ならば一つの表に両方を担わせる。単語を読み込むベクトルeが、書き出すときに単語を採点する物差しになる——ある単語の点数は、そのベクトルと進行中の思考hとの内積にすぎない。書き出しの表を読み込みの表に等しくする——これが結びつけだ。音叉のように:叩けばその音が鳴り、弦に近づければ同じ音を検知する。
予測とはつまり——どのベクトルが一番そろうか。 zi=ei⊤h=∥ei∥ ∥h∥cosθiz_i = e_i^{\top} h = \lVert e_i \rVert \, \lVert h \rVert \cos\theta_i 表を結べば、予測は幾何になる。単語の点数は、そのベクトルと今の思考とのそろい具合——同じ向きなら大きく、ちがえばほぼ零。次の単語は、最もそろうベクトルを探して選ぶ。風見のように:風に沿うまで振れ、それが指す向きが勝つ。
節約を数えよう——表の半分が消える。 2Vd⏟untied ⟶ Vd⏟tied\underbrace{2Vd}_{\text{untied}} \;\longrightarrow\; \underbrace{Vd}_{\text{tied}} V×d個の数からなる表が、二つから一つになる。語彙5万語・幅768のモデルなら、およそ3800万個もの数が減る——小型モデルの三分の一近くだ。おまけに、ある単語の読み込み側と書き出し側の意味はずれようがない。同じ数だからだ。一本の本管のように:二本の並行配管ではなく一本で家に給水する——掘る手間は半分、圧力はひとつを分かち合う。
読むことと書くことは、まったく同じ仕事ではない。 正直な但し書き:単語を理解するのに最適な空間と、それを予測するのに最適な空間は、近縁ではあっても同一ではない。等しくすることは強く有益な偏り——調整つまみは減り、過学習も減る——だが柔軟さを少し費やす。結びつけたまま、小さな学習可能な補正を足すモデルもある。一本のレンチのように、多くのボルトに:大半には合うが、ときどき細いアダプターを欲しがるボルトもある。
意味の地図はひとつ、両方向に読まれる。 こうしてモデルは、単語のひとつの地理を持つ。読むには、単語がどこにあるかを調べ、書くには、思考が最も近い場所を問う。同じ地図を二通りにたどる——一度築けば、言語の両半分に仕える。橋のように、ひとつの橋面が双方向の往来を運ぶ:帰り道のためにもう一本の橋桁を架けはしない。
読むことと話すことが、同じ住所を分かち合うなら…… 単語が理解される場所が、まさにそれが語り出される場所であるとき、単語を受け取ることと返すことの境目は細くなる。🌱 モデルは、単語を知ることと言うことを本当に見分けているのか——それとも根底では、行きと帰りに読まれるひとつの動きにすぎないのか。