GPT-2
Generative Pre-trained Transformer 2 (GPT-2)
Generative Pre-trained Transformer 2(GPT-2) は、2019年2月にOpenAIによって開発されたオープンソースの人工知能ソフトウェアである。GPT-2は、テキストを翻訳し、質問に答え、文章の要約を行い、時には人間と見分けがつかないようなテキスト出力を生成するが、長い文章を生成すると繰り返したり意味不明な表現になることもある。GPT-2は、多目的学習器であり、特定のタスク(仕事)を行うための特別な訓練を受けてはおらず、これらのタスクを行う能力は、任意の順序で次の項目を正確に合成する一般的な能力の延長線上にある。GPT-2は、OpenAIの2018年版GPTモデルの「スケールアップ版」として構築され、パラメータ数と訓練用データセットがともに10倍に増加した。
GPTアーキテクチャは、ディープラーニング(深層学習)によるニューラルネットワーク、具体的には「トランスフォーマー(Transformer)モデル」を実装しており、これまでの回帰型や畳み込み型のアーキテクチャの代わりに「アテンション」を使用している。アテンション機構により、モデルは、入力テキストの中から最も関連性が高いと予測される部位に選択的に焦点を当てることができる。このモデルでは、並列化を大幅に向上させることができ、RNN/CNN/LSTMに基づくモデルのこれまでのベンチマークよりも優れた性能を発揮している。
OpenAIは、2019年11月、GPT-2言語モデルの完全版(15億個のパラメータを含む)を公開した。GPT-2に続いて、1,750億個のパラメータを含むGPT-3が、2020年に公開される予定だった(そのソースコードは公開されていない)。GPT-3へのアクセスは、OpenAIとマイクロソフトが提供するアプリケーションプログラミングインタフェース(API)を通じてのみ提供されている。
コンピューティングの歴史から人工知能は研究対象であった。1950年にアラン・チューリングが提唱した「イミテーション・ゲーム(imitation game)」(しばしばチューリング・テストと呼ばれる)は、電子システムや機械的システムの知的行動をとる能力を、評価者がシステムと人間の行動を区別する能力によって判定することを提案するものである。「機械学習(machine learning)」という用語は、早くも1959年に、IBMの研究者であるアーサー・サミュエルによって、人工知能の可能性を説明する言葉として最初に使われた。現在、この用語には、統計的学習、データサイエンス、ニューラルネットワークなど、計算問題に対するさまざまな手法(しばしば人工知能の下に置かれる)が包含されている。
コンピュータによる自然言語処理(NLP)は、もともと計算言語学の一分野として考えられていたもので、コンピュータのハードウェアに能力が備わると同時に試みられるようになった。1948年、ロンドンのバークベック・カレッジで開発された辞書ルックアップテーブルが最初の応用例である。1954年のジョージタウンIBM実験では、60文のロシア語の文章を英語に翻訳するという(主にロシア語の単語を英語の同義語に置き換える)完全に自動化された機械翻訳が実演された。そのシステムには6つの文法規則と250語の語彙しかなく、統語構造の解析や翻訳も行われなかったため、翻訳は粗雑なものが多かった。しかし、この実験によって、コンピュータが自然言語を解釈し処理できることが一般に証明され、さらなる研究のためにCIAの資金が確保された。直接置換は、機械翻訳プログラムを評価する際の基準として残存している。
20世紀半ばには、人間とコンピュータの対話(HCI)に自然言語を利用するシステムも登場し始めた。1968年から1970年にかけてMITで開発された「SHRDLU」は、いくつかの物体がある仮想空間で、ユーザーが自然言語による命令を使って対話を行うプログラムである(たとえば「今持っているものより高いブロックを探して、箱の中に入れる」)。1966年に開発されたおしゃべりロボットの「ELIZA」は、人間の対話者が入力したテキストからキーワードを解析し、会話に適する返答をした。多くの被験者が、ELIZAの会話と人間の会話を区別できないと主張したが、これが知性を構成するかどうかという問題については議論となった(もっとも有名な台本は、心理療法士がユーザーの言ったことをほぼそのまま繰り返すというパロディであった)。
機械翻訳の初期の試みは純粋に計算によるものだったが、1950年代になると、計算言語学の主流がノーム・チョムスキーの普遍文法という概念が重視されるようになった。当時のNLP研究は、任意の自然言語の文を、言語に依存しない論理構造に還元する試みが中心であった。1970年代には、意味論的なNLPシステムは、構文的なエンコーディング(syntactic encodings)を避け、より一般意味論的なエンコーディング(semantic encodings)を支持するようになった。しかし、ニューラルネットワークが登場するまでは、ほとんどのシステムが、手作業でプログラムされた大規模な(そしてますます扱いにくくなった)ルールセットに依存し続け、当初の狙いどおりに拡張することはできなかった。
人工知能の分野は20世紀後半も発展を続けたが、ときおり「AIの冬」と呼ばれる停滞期が訪れた。さまざまな文献で、「AIの冬」はさまざまな時期に発生したと述べられている。1994年にHoweは、1973年に始まって10年続いたと著し、2003年のRussell & Norvigは、1988年にすぐ始まったと述べている。
人工知能の初期の概念であるコネクショニズムは、生物学的な脳におけるニューロン(神経細胞)の挙動をシミュレートするように設計された人工ニューラルネットワークによって知的行動を引き起こそうとするものであった。人工ニューラルネットワークの最初の例は、1951年に構築された「Stochastic neural analog reinforcement calculator」である。「パーセプトロン」(二値分類器の一種)は、1957年に心理学者のフランク・ローゼンブラットによって発表された。彼の機械は、400個のフォトセル(光電池)を「ニューロン」に接続してするように設計され、加重値はポテンショメータで決定されていた(訓練過程で電気モーターで調整)。パーセプトロンは大きな話題となり、ニューヨーク・タイムズ紙の記事で『(海軍が)期待する電子コンピュータの萠芽は、歩き、話し、見て、書き、自己複製し、自分の存在を意識できるようになるだろう』と紹介された。しかし、マービン・ミンスキーとシーモア・パパートによる1969年の書籍「パーセプトロン (書籍)」において、当時の最先端技術(単層パーセプトロン)の欠点として、排他的論理和(XOR)関数を符号化できないことなどが指摘されて以来、パーセプトロンシステムは数十年間も衰退したままであった。この本は当時、有望な研究分野としてのパーセプトロン(および一般的なニューラルネットワーク)を否定するものと考えられていた。
ニューラルネットワークは、「訓練(training)」および「学習(learning)」という過程を経て、さまざまな入力を分類することができるようになる(すなわち個別のカテゴリに区分する)。学習は、まずネットワークの重み(各ニューロンの「活性化」が後続層の特定ニューロンの活性化に影響を与える量)をランダム(無作為)に初期化する。この状態では、ネットワークの出力も同様にランダムとなる。そして、ネットワークの出力がどれだけ望ましいできばえに近いかを定量的に測定する損失関数などの目的関数を定義する(たとえば、手書きの数字からなる入力が、その数字に対応する出力ニューロンのみを活性化させる頻度)。この関数とネットワークのできばえから、重みを調整して性能を改善することができる。
バックプロパゲーションは、1974年のポール・ワーボスの学位論文で初めて機械学習システムに適用した教師ありアルゴリズムであり、所与の入出力例に対するネットワーク全体の重みの最適調整を記述するベクトル場である「勾配」の計算を効率化した。この勾配を使用してニューラルネットワークを訓練する勾配降下法によって、より複雑なシステムを構築することが可能となり、1980年代にはニューラルネットワークの自然言語処理への応用が広まることになった。1985年にはD.B. Parkerがワーボスの手法を再発見し、1986年にはラメルハート、ヒントン、ウイリアムスが「深層学習(ディープラーニング)」ネットワークと呼ばれる隠れ層を持つニューラルネットワークで、入力データの内部表現を生成するためにこの手法を応用し、この研究はその後の回帰型ニューラルネットワークの基礎を築いた。
従来の順伝播型ニューラルネットワーク(FFNN)は、各層が前の層からの出力を取り入れ、次の層に送り出すことからその名が付けられた。FFNNの構造には、情報が逆流するような「巡回(cycles)」は存在しない。これに対して、回帰型ニューラルネットワーク(RNN)は、活性化の流れの巡回を少なくとも一つ持っている。RNNネットワークでは、ある項目そのものと、以前の項目を処理したときの出力の両方を使用して一連の項目を処理できるため、順序付いた項目を処理する(および将来の順序項目を予測する)ためによく使用された。
1979年に福島邦彦が哺乳動物の視覚野における神経構造モデルに基づいて提唱したネオコグニトロンは、画像処理で広く使われる畳み込みニューラルネットワーク(CNN)の基礎を築いた。CNNは、大きな入力層に対して小さな層を「重ねて滑らせる」ことで、より少ない計算量でより深い処理を行うことができる。たとえば、100×100の画像には10,000個の画素があり、全結合層で処理するには10,000個の重みが必要だが、画像上をスライドする5×5の「窓」からなる畳み込み層では、わずか25個の学習可能なパラメータでエッジ検出を行うことが可能である。畳み込み層は「プーリング層」によって結合され、「全結合層」(一般的に多層パーセプトロン)によって処理される。
回帰型ニューラルネットワーク(RNN)は、系列的な情報を処理することができるため、多くの自然言語処理(NLP)アプリケーションで利用されている。RNNは、FFNNとは異なり、同じ項目に対して、順序項目の周囲の状況に応じて異なる重みを符号化する(そして異なる出力を与える)ことができる。ということは、一度に一個の単語を解析するRNNシステムでも、「黒い犬(black dog)」は毛むくじゃらの脚、「アメリカンドッグ(corn dog)」はケチャップ、「幻日(sun dog)」は屈折のように、同じ「dog」から異なる連想ができる。さらに、RNNでは、以前の順序項目の情報を再帰的に呼び出すことができるため、ずっと以前に遡って任意の項目を思い出すようにシステムを設計することができる。たとえば、「トムは黒い犬を見た」「トムはアメリカンドッグを見た」「トムは幻日を見た」という順序項目を、それぞれ「優しく」「飢えて」「間接的に」と続けることができるようになる。
しかし、多層型のFFNNとRNNは優れた解を出せる一方で、どちらも勾配消失問題に対して脆弱であることが判明した。勾配は有限精度の数値として符号化され、モデルの全ての層にわたって逆伝播する必要があるため、多数の層を重ねるとゼロに「消滅」、または無限大に「発散」する可能性がある。1995年-1997年にかけて、Sepp HochreiterとJürgen Schmidhuberが初めて提案した長・短期記憶ネットワーク(LSTM)は、「入力」「出力」「忘却」ゲートを持つ複数の個別の「セル」からなる新しいアーキテクチャを導入することによって、この問題を解決しようとした。2009年に、Alex Gravesチームが提出したLSTMに基づくモデルが、手書き文字認識のICDARコンペティションで優勝し、もう一つのモデルは最も正確なモデル、3番目のモデルは最も高速なモデルであった。
RNNやLSTMが抱えるもう一つの問題は、以前の順序項目の文脈しか考慮できないことである。このため、「トムはバイクに乗って店に行き、キックスタンドを下ろしてエンジンを切った」のように、「バイク(自転車)」が「モーターバイク(オートバイ)」であるという必要な文脈が最後でしか明らかにならない文章を解析するときに問題を引き起こすことがある。このような問題を解決する一つが双方向LSTM(bidirectional LSTM)であり、双方向に同時に進行することで、「過去」と「未来」の両方の入力特徴にアクセスすることを可能にする。条件付き確率場(CRF)は、タグを使って入力と出力を直接結びつける。 上記のアプローチの組み合わせた、LSTM-CRFネットワークやBI-LSTM-CRFネットワークもある。その他に、RNNモデルの改良として、ニューラルチューリングマシン、適応計算時間(adaptive computation time)、ニューラルプログラマー(neural programmers)、アテンション機構などがあり、最後のものはGPT-2や関連技術の基礎をなしている。
2010年代初頭まで、ニューラル機械翻訳で最高の性能を発揮したのは、RNNやLSTMによる「エンコーダネットワーク」が原文をベクトルに符号化し、そのベクトルを同様のアーキテクチャの「デコーダネットワーク」が処理して翻訳出力を得るという「エンコーダ・デコーダ」モデルであった。2014年に、非常に複雑な「アテンション」機構が導入され、これらのモデルの性能は大幅に向上した。アテンション機構は、デコーダネットワークに、テキスト全体を単一ベクトルとして解析するのではなく、原文の特定の側面に適応的に「アテンション(注意)」を集中させる能力を与えた。
その後、2017年には、さらに一歩進んでアテンション機構を使用して、RNN/LSTMアーキテクチャを完全に置き換えた「トランスフォーマー(Transformer)」モデルが導入された。
エンコーダ・デコーダモデルの制約の一つに、より大きな文章を符号化して固定長のベクトルに圧縮することの難しさがあり、入力が大きくなるにつれて性能が低下することがよく見られた。2014年、Bahdanauらは、「整列と翻訳を共同で行う」ことができるエンコーダ・デコーダモデルの拡張を発表した。Bahdanauモデルのエンコーダ(各方向に1000個の隠れユニットを持つ双方向RNN)は、翻訳された原文の各単語に対して、その文の残り全てを検索して関連する情報の位置を探した。従来のように入力文全体を固定長でベクトル化してデコーダに入力するのではなく、それらの位置と以前に生成したターゲット語を関連付けた「文脈ベクトル」を生成した。そして、デコーダ(これも1000個の隠れユニットを持つ)は、この文脈ベクトルを使用して、どこに「注意」を向けるかを決定した。
「アテンション」機構の探究は、Luongらによる2015年の論文で継続された。Bahdanau論文に基づく「グローバル」アプローチと、原語の部分集合のみを一度に「考慮」する「ローカル」アプローチが試みられ、ローカルアプローチは、アーキテクチャ的にはより複雑だが、計算量が少なく、訓練が容易であった。1秒間に1,000個のターゲット語を翻訳できるように特別に設計された英語-ドイツ語翻訳モデルを完全に訓練するのに7-10日を要した。その精度は、2014年のACL Workshop on Machine Translation(WMT'14)における英語-ドイツ語文ペアのタスクに対するテストで、23.0 BLEUという結果を達成した。これは、以前の試みで達成した最高結果であるBuck et al. 2014によるフレーズベースの言語モデルよりも2.1 BLEU優れていた。
アテンション機構は、既存の畳み込み型ニューラルネットワークや回帰型ニューラルネットワークのアーキテクチャを改善するために使うことで性能向上に効果的であったが、すぐに、何も基礎を置かずにアテンション機構単独でも高性能なモデルを構築できることがわかった。
2017年6月、Google Brain、、およびトロント大学の研究者が発表した論文で、Transformerアーキテクチャが初めて紹介された。Transformerは、畳み込みや回帰を完全に捨て去り、アテンション機構のみに基づいたモデルの一種である。従来のRNNに基づくモデルと異なり、Transformerは、系列的に入力される各項目について順番に計算することなく処理できるため、大規模な並列化が可能であることを意味した。WMT'14フランス語-英語タスクでは、Transformerアーキテクチャを使用して特別に訓練したフランス語-英語翻訳モデルが、41.8 BLEUという新しい単一モデルのベンチマークを達成することができた。Transformerは、導入以来、多くの自然言語処理(NLP)アプリケーションで使用されている。
2018年6月11日、OpenAIは「Improving Language Understanding by Generative Pre-Training」(生成的事前学習による言語理解の向上)と題する論文を発表し、その中で「Generative Pre-trained Transformer(GPT)」と呼ぶNLPモデルを紹介した。この当時、最高性能を発揮するニューラルNLPモデルでは、主に手作業でラベル付けされた大量のデータを用いて、教師あり学習を採用していた。こうした教師あり学習への依存によって、ラベル付けが十分でないデータセットでの利用は制限を受け、さらに非常に大規模なモデルを訓練するには非常に高価かつ時間もかかっていた。スワヒリ語やハイチ・クレオール語などの多くの言語は、コーパス構築のためのテキストが不足しているため、このようなモデルを用いて翻訳や通訳することは困難であった。これに対して、GPTの「半教師付き」アプローチは、言語モデリングの目的に基づいて初期パラメータを設定する教師なし生成的「事前学習」段階と、これらのパラメータを標的タスクに適応させる教師あり識別的「微調整」段階の2段階に分けて行われた。
アテンション強化RNNを含む従来の技術とは異なり、Transformerアーキテクチャを用いたGPTには、より構造化された記憶が備わり、それによって「多様なタスクに対応できる頑健な転移性能」が実現された。
転移時には、トラバース形式の手法から派生したタスク固有の入力適応を利用し、構造化テキストの入力を単一の連続したトークン列として処理する。
教師なし事前学習は、さまざまなジャンルに属する7,000冊以上の未発表小説のデータセット「BooksCorpus」を用いて行われた。このデータセットが選ばれた理由の一つは、長距離の情報を処理するためのモデルの条件として、連続した長い文章が求められたことにある。利用可能な他のデータセットは、規模は大きくても、このような長範囲的な構造がない(文レベルで「入れ替え」られている)ことを理由に却下された。BooksCorpusのテキストをクリーニング(句読点や空白の標準化)するためにftfyライブラリが、トークン化ではspaCyが使われた。
GPTのアーキテクチャ自体は、12層のデコーダのみのTransformerで、それぞれ64次元の状態を持つ12個のマスク付き自己アテンション・ヘッド(合計768個)を使用した。単純な確率的勾配降下法ではなく、Adam最適化アルゴリズムが使用された。学習率は、最初の2,000回の更新では、0から最大2.5×10−4まで線形に増加し、コサインスケジュールによって0までアニリーングされた。
512個の連続したトークンからなるランダムにサンプリングした64個のミニバッチの訓練を100エポック行う。レイヤーノルムはモデル全体で広く用われているため、N(0,0.02)の単純な重みの初期化で十分であった。40,000個のバイト対符号化(BPE)語彙のマージと、正則化には残差、埋め込み、アテンションのドロップアウトを比率0.1で行った。また、Loshchilov et al. 2017で提案されたL2正則化の修正版を採用し、すべての非バイアスウェイトやゲインウェイトはw=0.01とした。
(中略)
原著で提案された正弦波バージョンの代わりに学習された位置埋め込みを使用した。
(中略)
特に指定がない限り、教師なし事前学習でのハイパーパラメータ設定を再利用する。分類器にはドロップアウトを比率0.1で追加する。ほとんどのタスクでは、学習速度6.25e-5、バッチサイズ32を使用する。このモデルは高速に微調整され、ほとんどの場合は3エポックの訓練で十分であった。学習率は線形減衰スケジュールを用い、ウォームアップは訓練の0.2%以上とした。λは0.5とした。
GPTは、微調整の段階で特定のタスクに適応させたが、事前学習の段階はそうしなかった。さまざまなタスクを実行するために、タスクに依存しない基礎となるモデルアーキテクチャに最小限の変更が加えられた。それにもかかわらず、GPTはいくつかの言語処理タスクにおいて過去のベンチマークを上回り、多くの多様なタスクにおいて、タスク指向のアーキテクチャを持つ識別的に訓練されたモデルより優れていた。
自然言語推論(テキスト含意(textual entailment)とも呼ばれる)タスクでは、モデルの評価は、さまざまなデータセットに含まれる文の対を解釈し、それらの関係を「含意」「矛盾」「中立」に分類する能力に基づいて行われる。たとえば、QNLI(Wikipediaの記事)やMultiNLI(速記、大衆小説、政府報告など)といった情報源に対して、GPTは従来の最高値からそれぞれ5.8%、1.5%優れていた。同様に、質問応答や常識推論に関連する2つのタスクでも、RACE(中学校と高校の筆記試験の問題と解答の組からなるデータセット)で5.7%、クローズ・テストで8.9%、従来のモデルをそれぞれ上回った。
もう一つの意味的類似性(または言い換え検出)のタスクでは、2つの文が互いに言い換えであるかどうかをモデルが予測できるかどうかを評価するもので、Quora Question Pairs(QQP)データセットで、GPTは従来の最高性能モデルよりも4.2%向上した。また、Corpus of Linguistic Acceptability(CoLA)を用いたテキスト分類タスクでは、従来の最高スコア35.0に対してGPTはスコア45.4を達成した。最後に、マルチタスクテストのGLUEで、GPTは総合スコア72.8(従来は68.9)を達成した。
GPT-2はGPTのスケールアップ版として作成され、パラメータ数とデータセットサイズをいずれも10倍にしている。双方とも教師なしのTransformerモデルで、一連のトークンの並びから次の単語を予測してテキストを生成するように訓練された。GPT-2モデルは15億のパラメータを持ち、800万のウェブページのデータセットで訓練が行われた。GPT-2は、テキストサンプル中の一連の単語を解釈し、最も可能性の高い次の単語を予測するという非常に単純な基準で強化され、追加される単語を予測し続けることで完全な文や段落を生成し、自然言語で完全に理解できる(そして意味論的に意味を持つ)文を生成する。特に、GPT-2は、ゼロショット学習でのタスクに対する性能で評価された。
GPT-2は新規に開発された WebText コーパスをデータセットとして利用している。
WebText コーパスは約800万のウェブページから抽出された高品質自然言語テキストコーパスである。
GPT-2はゼロショット推論可能な基盤モデルを意図して開発された。個別タスクを明示的に学習せずゼロショットで推論するには、学習用テキスト内に様々なタスクの具体例が(タスクラベル無しで)含まれている必要があると考えられる。一方で質の低いテキストはモデルの精度を落とすため、コモン・クロールのような無作為収集されたコーパスは利用できない。これらの問題を解決するためにGPT-2論文で開発されたコーパスが WebText コーパスである。
WebText は人間によるキュレーションを品質向上に利用している。まずRedditで3回以上賛成票を受けたリンク先ウェブページを一定品質のテキストとみなし、重複文章の除去・Wikipedia記事の削除・ヒューリスティックによるクリーニングを経て、最終的に約800万のウェブページから抽出された約40GBの自然言語テキストをWebTextとしている。
GPT-2のモデルアーキテクチャはGPT-1のマイナーチェンジ版である。アーキテクチャ上の変更点は以下の通り:
Post LN → Pre LN
残差レイヤーの深度 1/ \sqrt{N} 重み付け初期化
アーキテクチャはほぼ同一であるが、GPT-2はGPT-1より大きなモデルとなっている。モデル上の変更点は以下の通り:
モデルパラメータサイズ: 15億(約13倍)
ボキャブラリ: 50,257
コンテキストトークン長: 512→1024
モデルと同じく学習もスケールされており、バッチサイズは512に変更されている。
GPT-2の訓練費用は1時間あたり256ドルであることが知られているが、訓練に要した総時間は不明なため、訓練費用の総額を正確に見積もることはできない。しかし、Transformerアーキテクチャを用いた同等の大規模言語モデルでの費用はより詳細に記述されており、BERTとXLNetの訓練過程では、それぞれ6,912ドルと245,000ドルの資源を消費した。
GPT-2は、そのデータセットとアプローチの広さによって、単純なテキスト生成にとどまらない幅広いタスクに対応できるようになった。質問に答えたり、長文を要約したり、さまざまな領域固有性で言語間の翻訳をしたり、一連の単語の次の予測方法以上のことは何も指示されずに実行できる。
一般化学習の一例は、フランス語-英語間の機械翻訳をするGPT-2の能力であり、そのために、WMT-14の翻訳タスクを使用してGPT-2の性能が評価された。GPT-2の訓練用コーパスには、フランス語のテキストはほとんど含まれていなかった。訓練前にデータセットのクリーニングで英語以外のテキストを意図的に削除したため、得られた40,000 MBのうちモデルが訓練に使用できたフランス語は10 MBにすぎなかった(ほとんどは英語の投稿や記事に含まれた外国語の引用)。それでもGPT-2は、WMT-14の英語-フランス語間テストセットで5 BLEUを達成した(単語単位での置換による翻訳をわずかに下回るスコア)。また、フランス語から英語へのテストセットでGPT-2は、当時(2017年)の教師なし機械翻訳ベースラインを上回って、11.5 BLEUを達成した。これは、33.5 BLEUを達成した当時(2019年)最も高性能な教師なし手法を下回るものだった。しかし、他のモデルは、この結果を達成するために大量のフランス語テキストを使用しており、一方のGPT-2は、同等の手法の約1/500のサイズの単一言語フランス語コーパスを使用したと推定された。
GPT-2は、2019年2月14日に初めて発表された。2019年2月のThe Vergeに掲載されたJames Vincentによる記事では、『(このプログラムが)作り出す文章は、通常、人間ではないと容易に判別できる』ものの、言語生成プログラムの『これまでで、もっともわくわくする例の一つ』であることに変わりはないと述べている。偽の見出しを付けると、あとは偽の引用や統計を交えた残りを書いてくれる。短編小説の最初の行を入力すると、登場人物に次に何が起こるか教えてくれる。適切なプロンプト(命令)を入力すれば、ファン・フィクションだって書ける。