GPT-2におけるテキスト生成

Tags
GPT-2におけるテキスト生成
Page content

はじめに

Machine Learning部門の江間見です。ストックマークでは、自然言語処理技術の研究開発を行っています。

昨今、OpenAIからGPT-3が発表され、生成系モデルが大きな注目を集めています。 そこで、本記事では、弊社で作成している生成系モデルの紹介をいたします。

自然言語処理におけるテキスト生成

自然言語処理(NLP)は、人間の言語(自然言語)とコンピュータの相互理解、特に大量の自然言語データをコンピュータに処理および分析させるための研究分野です。 今回紹介するテキスト生成は、この自然言語処理の研究分野の一つです。

テキスト生成の応用例の一つは、スマートフォンのキーボードでの次の単語の予測です。このタスクはまさに​​言語モデルが行うことと同様です。言語モデルは、単語のリストを受け取り、次の単語を予測します。

図1の例では、言語モデルが「今日は」という単語を受け取り、次の単語である可能性の単語リストを返すシステムと考えることができます(図では、「良い」が最も可能性が高い単語です)。

図1. スマートフォンでの次単語予測の一例


テキスト生成モデルは、基本的に次の単語の予測を自動的に繰り返してテキストを生成する言語モデルです。

テキスト生成モデルにも多種多様なモデルがありますが、本記事では、OpenAIから発表されました「GPT-2」を取り扱います。

GPT-2とは

2019年2月にOpenAIからGPT-2が発表されました。

本モデルは、発表時にOpenAIの開発陣から「あまりにも高度な文章が作成でき、危険過ぎる」と危惧されGPT-2の論文公開が延期され、また、開発された4つのモデルも一気に公開せず、2019年2月、5月、8月と段階的に公開されました。

現在では、さらにバージョンアップされたGPT-3も発表されています。

GPT-2はTransformerをベースとしたテキスト生成モデルであり、与えられたテキストの単語を元に、逐次的に次の単語を予測します(図2は、「今日は」と「良い」という単語がGPT-2に与えられて、その単語群に続く単語を予測し、予測した単語とその前までに出現していた単語を元にさらに次の単語を予測しています)。

図2. GPT-2でのテキスト生成イメージ


GPT-2の詳細について今回は割愛しますが、興味がある方は、Jay Alammar氏が公開しているThe Illustrated Transformerというサイトにイラスト付きで説明されていますので、参照してみてください。

GPT-2には、OpenAIで公開された4つのバージョン(Small、Medium、Large、X-Large)があります。 それぞれ、異なるレイヤー数(デコーダーブロック)、アテンションヘッドの数、および埋め込みサイズとなります。モデルが巨大になるほど、パフォーマンスが向上しています。

図3. OpenAIから公開されているGPT-2のモデルの種類


StockmarkのGPT-2

弊社でも、ビジネスニュースを学習データとして、日本語のGPT-2を作成しました。

弊社のGPT-2は、EleutherAIのGPT Neoを参考にパラメータをセットしています。

GPT-2のMedium モデルに似ていますが、レイヤー数(24レイヤー)とアテンションヘッド(アテンションヘッド16)がMediumモデルと同等、埋め込みサイズ(1536)とコンテキストサイズ(2048)がMediumより大きくなっています。これらの違いにより、GPT-2のLargeのパラメータ数と同じ最大760Mにパラメータの数が増加しています。

そして、学習には、Adamオプティマイザーを使用して、TPUv3で、バッチサイズは2048、学習率は2.5e-4で、16日間トレーニングしました。 最終的にモデルを約9000イテレーションでトレーニングした後、lossが約2.8に収束しています。

テキスト生成

弊社のGPT-2でテキスト生成をしてみます。

以下のテキストをGPT-2へ入力してみます。ちなみに、このテキストは弊社HPに記載している取締役CTO有馬のメッセージです。

  • 入力テキスト

    「ビジネスとは本来クリエイティブで楽しいものであり、最大のエンターテイメントの1つであると考えています。50年来のブレイクスルーを得た機械学習技術でならば、単なる生産性向上や後ろ向きなコストカットだけでなく、ビジネスにおける創造性の幅を極大化させ、人々の勇気ある挑戦を後押しできると考えております。」

上記のテキストから以下のテキストがGPT-2によって生成されました。

  • 出力テキスト

    「私はこの点について非常に強い確信を持っています。 開発者・技術者双方にとって大変面白いプロジェクトだと言えるのではないでしょうか。まず、私たちの仕事をする言語は、コンピュータネットワークよりも文章を素早く正確に翻訳する特性があります。処理が自動化され、人間がより早く、より効率的に判断できるように進化しているからです。 ディープラーニングは、人間や機械が人間と対話できるよう、自動的に能力を向上させたことで大きな成功を収めましたが、近年さらに人間の感情を理解できるよう、ディープラーニングは進化を続けています。 互いに考えを巡らせることも非常に難しく、人とやり取りする際の妙な問題が発生したり、データと実世界をつなぐことができなくなっています。だからこそ、我々がこうした歴史的瞬間を切り開くことで、未来のビジネスが発展する可能性を持ちたいです。 私たちの50年の歴史は、ビジネスの成功、クリエイティビティ、社会実装の3点の軸で成り立ちます。この3軸の中で、いまやIT革命と呼んでいいでしょう。あらゆる分野に進化した者がそのことを忘れがちなのです。 (以下、省略)」

生成されたテキストが事実かどうかは置いておいて、入力テキストに続くそれらしいテキストが生成されているように見えます。 なお、実際はこの10倍くらいのテキストが生成されていますが、長文で読み辛いので、省略しています。

また、生成されたテキストの最終部分(今回は省略部分)は、最初の話題からかけはなれ、学習塾業界の話になっていました。これは長文を生成することで少しずつ本来のテキスト意図から離れていってしまったことが原因です。

もう一つ以下のテキストを試してみます。ストックマーク株式会社についてテキストを生成してもらいましょう。

  • 入力テキスト

    「ストックマーク株式会社は」

  • 出力テキスト

    「1961年の創業以来、事業領域を拡大し、独自のビジネスモデルを確立してきました。本年度は収納グッズのシェアリングサービス[Reliable(リーリーブル)]、リユースの[Rival(再)」]、スマートフォンサイト[Rakugeki(らくエビ)]の3分野への拡大、収納支援ツール[Rakote(ラクット)]の拡販に注力します。リユースは今後も積み重ねることで集積される時代で、ロイヤリティの高い商品、価値ある商品を適切かつお得に購入・販売することができるようになると考えています。 日本では1990年代後半から2000年代前半に、都市化に伴う住宅ローンや住宅ローン問題の不満から、新築住宅の購入を躊躇し始める人が多くいました。加えて、その後のバブルな住宅ブームは、世帯数の減少や新築住宅の価格変動など、消費者が住まいを気にする方向に、大きな影響を与えるようになりました。 暮らしに課題を抱える消費者の中からは、中古住宅購入以外の利用に抵抗感をもつ声も多く、既存住宅の流通は活発ではなくなってきています。移動時の転勤や女性が家を持つのに手間、家は実需に比べて購入期間が圧倒的に短く、中古住宅の場合は購入まで後々の維持管理や修繕費で時間が掛かるという声をよく聞きます。当社は、中古住宅購入の機会と住宅購入の選択肢を広げることで、住宅購入の選択肢を広げたくています。 当社では、長期優良住宅や民間住宅、中古住宅の仲介プラットフォームを通じ、大手流通企業の参入のみならず、自治体や金融機関向けの住宅ローンサービスなどを行うことで、中古住宅市場の活性化につなげたかったと考えています。 昨年6月、住宅購入検討者はクロスマッチ(機会損失)を避け、住宅購入の“選択肢”として、戸建て住宅や借り換え住宅よりも、流通企業の新築住宅や賃貸住宅ブランドを用いた住宅選びをあわせて選択する時代となり、当社は、住宅購入処理精度の向上により住宅購入をスムーズに検討している消費者に対し、住宅メーカーと連携して提案できる環境を整備することで、CBRE(住宅金融支援機構)への関心を高めていくことを目指します。(以下、省略)」

完全なフェイクテキストですが、生成されました。どうやら住宅関係の会社のようですね。

「スマートフォンサイト[Rakugeki(らくエビ)]」等は実際のサービスのように見えるので、Webで検索しましたが、見つけることができませんでした。似たような文章からGPT-2が生成したように見受けられます。

上記の2つの例では日本語としてはそれらしきテキストを生成することができました。 もちろん、上手くいかないパターンもありますが、自動でここまで生成できること自体、驚くべき結果です。

本記事を読んでいただいた方も試せるようにGoogle Colaboratoryを作成しましたので、Google Colaboratoryの使い方をご存じの方は以下リンクからぜひ試してみてください。 なお、弊社のGoogle Cloud Storageからモデルをロードするために、アクセス数によって夜間の停止等の可能性がありますので、ご了承ください。

Google Colaboratoryリンク

また、弊社GPT-2のデモサイトも公開を検討しておりますので、良いご報告ができる際はテックブログで紹介させていただきます。

終わりに

今回弊社で作成したGPT-2モデルを紹介いたしました。

それらしき文章が生成され、生成系モデルの進化を実感することができました。

一方、生成系モデルには、以下のような懸念が今後ついてまわってくるはずです。

  • 生成された文章に対する信頼度
  • 生成ではなく学習元のデータをそのまま出力しているのではないかという疑念
  • 差別的発言の出力

1点目は、生成された文章が文脈的には正しいが、事実かどうかという点で信頼できません。これは学習元のデータにもよりますし、何らかの手法で信頼性を確保する必要があります。

2点目は大規模な言語モデルで特に起こり得ることです。 大規模な言語モデルは表現力が高く、学習データが少なければ、学習データから汎化するのではなく、そのまま記憶してしまう可能性があります。 そのため、ほとんど学習データと同じことを出力している可能性があります。今回生成された文章ももしかしたらそのようになっているかもしれません。

しかし、人間もある意味学習データ(本やニュース等)から記憶し、自分なりに汎化することで、自分の言葉としていますので、人間でも起こり得ることだと考えられます。 人間は忘却の機能があるため、ある意味汎化されやすい(大筋だけを記憶する)と考えられますので、このような仕組みを取り入れることで改善できる可能性があります。

3点目はモデルの学習データに強く依存します。弊社は学習データとしてニュース記事を用いているので差別的発言は混入しづらいですが、Webデータをそのまま学習元にすると大きなバイアスがかかってしまいます。そのため、別途チェックする機構が必要となります。

生成系モデルの応用として、現状では、人間の入力補助(最終チェックは人間)からが進めやすいのではないでしょうか。

上記のような懸念事項はあるものの、懸念事項をクリアしていけば、生成系モデルの適用範囲は、多岐に渡ります。 弊社では、今後も生成系モデルを研究・調査・検証を進めて、プロダクトヘの応用を模索して参ります。

謝辞

今回のGPT-2の作成には、Google社のTensorFlow Research Cloud(TFRC)のCloud TPUを利用させていただきました。

参考リンク