デコーダとは

デコーダとは、Transformer(トランスフォーマー)で、出力する文章を1トークンずつ順に生成する側の部品のことです。入力を読み取って理解するエンコーダと対になる存在で、ChatGPTのような文章を作るAIの心臓部にあたります。

1語ずつ、順番に文章を作る

デコーダは、文章を一気にではなく1トークンずつ順番に作り出します。これまで自分が生成したトークンを手がかりに「次の1トークン」を予測し、それを繰り返して文をつないでいく仕組みです(自己回帰と呼ばれます)。前に書いた内容だけを見て先へ進むため、流れの自然な文章を組み立てられます。

エンコーダとの役割分担

もとのTransformerは、入力を理解するエンコーダと、出力を生成するデコーダの2つで成り立っていました。エンコーダは「読む・理解する」係、デコーダは「書く・生成する」係と考えると分かりやすいでしょう。この組み合わせ方の違いで、AIは大きく3つの型に分かれます。

3つのタイプとGPT

代表的なのが次の3型です。エンコーダだけのBERT(理解・分類が得意)、デコーダだけのGPT(文章生成が得意)、両方を持つ翻訳・要約向けの型になります。文章を生成する大規模言語モデルの多くは、このうち「デコーダのみ」の型を採用しています。

TopicGPTは、Transformerの「半分」を捨てた

意外なことに、ChatGPTのGPTは、もとのTransformerから”理解担当”のエンコーダを取り去り、”生成担当”のデコーダだけを残した構成です。半分を省いたにもかかわらず、文章生成にはそれで十分だと分かり、いまの大規模言語モデルの主流設計になりました。引き算が大きな前進を生んだ一例といえます。

デコーダに関するよくある質問

エンコーダとは何が違うのですか?
エンコーダは入力を「読む・理解する」係、デコーダは出力を「書く・生成する」係です。もとのTransformerは両方を備えていましたが、ChatGPTのGPTは生成担当のデコーダだけを残した構成です。
なぜ文章が1語ずつ生成されるのですか?
デコーダは、これまで自分が出力したトークン(語のかたまり)を手がかりに「次の1トークン」を予測し、それを繰り返して文をつなぐためです(自己回帰と呼ばれます)。前の内容だけを見て先へ進むので、流れの自然な文章になります。
BERTとGPTは、どちらもデコーダを使っているのですか?
いいえ。BERTは理解・分類が得意なエンコーダだけの型、GPTは文章生成が得意なデコーダだけの型です。文章を生成する大規模言語モデルの多くは、この「デコーダのみ」の型を採用しています。