日本語CTRLのFine-tuning

はじめに

前回学習した日本語CTRLをFine-tuningにより制御コードを
追加した結果をまとめる。

追加データ

制御コード「生活」として健康アドバイスデータライフログを利用した。(10000件)
それに加え、制御コード「科学」として、手動で収集したWeb上の科学記事250件から
一部を抽出して1000個の文章とした。
また、これまで利用してきた「青空文庫」、「Wikipedia」、「JESC」データもそれぞれ
1000件ずつランダムサンプリングしてFine-tuningに利用した。

結果

過去というものは未来の積み重ねである
青空 過去というものは未来の積み重ねである。文学はどこまで生きてゆけるのか。学者は学者に生命を分のかぎり持たなければならない。学者は学者に生命を分のかぎり取ることができる。しかし、生命は乾いただけというものに少くとも生命がある。 ところで日本文学は人生と文学との具体的なつながりが何だろう。もちろん、思想は作られたことがない。文学は人生と文学との分岐点の直接融合に一歩前進している。その一歩は踏んだものである。
知識 過去というものは未来の積み重ねである。しかし現代が終わりを迎えた現在、私たちはこの時代に生きる希望を失っており、私たちはこの時代に生きる希望を失っていく。その希望を叶えるため、私たちはこの時代に生きる希望をもつ、と願い、地球に人類が宿ることはできていない、と願う。
過去というものは未来の積み重ねである
科学 過去というものは未来の積み重ねである「宇宙」の時代であり、宇宙の全ての時間は宇宙の時間です。 宇宙にはどの宇宙がいるのかを、なぜ地球がどのようなものかを、どのように考えるのかを、どのように考えるのかを、さまざまな視点から解説してくれる「宇宙の時間」という方法があります。 宇宙にはさまざまな種類が存在しますが、その中でも特に宇宙の時間の長い時間は宇宙の時間よりも長く、宇宙の時間よりもかなり長く、宇宙の時間よりもかなり短い時間(約
生活 過去というものは未来の積み重ねである。##朝ごはんは、ご飯と味噌汁とご飯と味噌汁とご飯を食べました。##午前中は、洗濯と掃除をしました。##お昼は、お弁当を食べました。##午後は、自転車で買い物に行きました。##夕食は、ご飯と味噌汁とご飯を食べました。##寝る前に、ストレッチをしました。

新しく追加した「科学」の制御コードでは文章が「です・ます」調となっており、
なんとなく科学っぽい単語を羅列している。 
「生活」制御コードの場合は元のデータと同じ形式の出力をしているように見えるが、
序文とはあまり関係ない内容である。

桃太郎は鬼退治に
青空 桃太郎は鬼退治に及びました。 それで、その年の秋、山の中で鬼を退治することになりました。 先年、兵火に弱い、鬼退治の野望はだんだん悪いことをして、野山や山間の村々を通りました。その村に一|軒の家があって、そこには鬼をも軽蔑して、鬼をも軽蔑したのがありました。 鬼は旅人の坊や、ものごしが代表すると、けっして鬼をもかわいがることはありませんでした
知識 桃太郎は鬼退治に出かけた際に鬼を退治するため、鬼を退治するため、鬼を退治するため、村に鬼を退治した。鬼退治の発願は、鬼退治の緒戦であるとも言われる。鬼退治の緒戦は、村内の鬼を退治した戦いではなく、城下で鬼を退治した戦いであるとも言われる。鬼退治の緒戦は、鬼退治の緒戦とほとんど同じである。鬼退治の緒戦は鬼退治の緒戦
桃太郎は鬼退治に出かけたのよ
科学 桃太郎は鬼退治に出かけた直後、鬼を退治するため伊豆の青田へ向かいます。鬼を退治するため伊豆の山へ向かいます。鬼退治は鬼退治のお供になることではなく、鬼退治のお供になることで知られている山伏という鬼を退治する鬼たちが、鬼退治のお供になることで、鬼退治のお供になることで知られている山伏のお供になることでしょう。 鬼退治には鬼退治のお供になることで、鬼退治のお供になることで、鬼退治
生活 桃太郎は鬼退治に出かけた。##朝ご飯は、ご飯と味噌汁とご飯を食べました。##お昼は、お弁当を食べました。##午後は、自転車で買い物に行きました。##夕食は、ご飯と味噌汁とご飯を食べました。##寝る前に、ストレッチをしました。
宇宙に広がる無限の可能性
青空 宇宙に広がる無限の可能性 漠然たる遠い、避けが 明日は無限の自凝と 明日の満月、まいまい 我らは
知識 宇宙に広がる無限の可能性は、宇宙の基本法則を根本的に規定する、宇宙の基本法則を根本的に規定する、宇宙の基本法則を根本的に規定する、というのが宇宙の基本法則である。宇宙の基本法則は宇宙が無限に孤立した無限に存在するというわけではなく、宇宙が無限に孤立した無限に存在するというものではない。宇宙が無限に孤立した無限に存在するというわけではなく、無限に存在するというものではない。宇宙が無限に孤立した無限に存在するという絶対的な存在もまた宇宙
宇宙に広がる無限の可能性は 地球上に存在する
科学 宇宙に広がる無限の可能性は、宇宙の全てのエネルギー源となるのです。そのため、宇宙の全てのエネルギーは、宇宙の全てのエネルギー源よりも大きいのです。そのため、宇宙の全てのエネルギーが失われて、ただのエネルギーを失うのです。そのため、宇宙の全てのエネルギーを失うのです。
生活 宇宙に広がる無限の可能性を味わい、おやつにチョコレートを塗って食べました。##運動は特にしていませんが、特に運動はしていません。
新型コロナは社会に大きな影響を及ぼし
青空 新型コロナは社会に大きな影響を及ぼした。日本にもまた、進むであろう。ところが、それは革命の影響によって、反動が進行したからである。そこでユーゴーは、例えば革命の影響によって、ロシアが満洲、フランス、フランスが分裂したのである。だから、いよいよ五ヵ年計画が持ち上がった。ユーゴーは、更にブルジョアの知識階級の、報告をもたずに、熱心に、ロシア評論をもたずに、かかれた。ところが、こんどの五ヵ年計画は、資本主義
知識 新型コロナは社会に大きな影響を及ぼし、民間企業の投資も増加したため、民間企業の投資も減り続け、政府の成長も目指すようになった。民間企業の投資計画が立ち上がったのは、民間企業の投資計画が立ち上がった1964年、ニューヨークの地下鉄建設会社、メトロポリタン・トランスポーテーション・オーソリティー () が、ニューヨークの地下鉄建設会社に資金援助を行い、その成功を広告した広告主であるA・B・ジョリー () が、ニューヨーク
新型コロナは社会に大きな影響を及ぼします
科学 新型コロナは社会に大きな影響を及ぼし、政府の成長を促す重要な要素となります。 政府と政府の間では、政府の成長を促す最先端のIoTの発生を促す重要な要素となります。その結果、政府の成長を促す
生活 新型コロナは社会に大きな影響を及ぼしますが、最近は運動不足がひどかったので、最近は運動不足解消のために、できるだけ運動不足解消をしています。

まとめ

多少少なめの追加データ(1000~10000文)でも制御コードの追加は問題なくできているように見える。
ただ、個々の文章の日本語としてのクオリティはあまり高くない。
もとの学習済みモデル自体の性能が低いためしかたない部分もあると思うがもう少しなんとかしたい。

参考文献

Tetsuaki Nakamura, Takashi Awamura, Yiqi Zhang, Eiji Aramaki, Daisuke Kawahara and Sadao Kurohashi, Toward an Advice Agent for Diet and Exercise Based on Diary Texts, In proceedings of 2015 AAAI Spring Symposium Series - Ambient Intelligence for Health and Cognitive Enhancement, pp.43-48, Mar.2015. 岡照晃, 粟村誉, 荒牧英治, 河原大輔, 黒橋禎夫, おしゃべりけんこうノート:管理栄養士・インストラクターのアドバイスに基づく健康アドバイスシステム, 言語処理学会第22回年次大会予稿集,pp.461-464,2016年3月.

Object Detectionアルゴリズム (2020/5)

はじめに

Deep LearningによるObject Detectionのアルゴリズム論文をまとめる。
以下を参考にした。

https://engineer.dena.com/posts/2019.07/cv-papers-19-keypoint-object-detection https://www.slideshare.net/pfi/a-brief-history-of-object-detection-tommi-kerola
https://lib-arts.hatenablog.com/entry/object_detection5

Object Detectionアルゴリズム論文まとめ

  1. Bounding Box Prediction

    1. 2-stage detector
    2. 1-stage detector
  2. Point Prediction

  3. その他

感想

これまでObject Detection はSSDとMask R-CNNくらいしか
まともに使ったことがなかったので今後はAnchor-Freeな
Point Predictionについて理解していきたい。

参考文献

日本語CTRL学習結果まとめ

はじめに

これまで学習してきた日本語CTRLの最終モデルをまとめる。

学習曲線

学習は500Kステップ行った。

f:id:nakamrnk:20200511123530p:plain
train loss の学習曲線(span=5000のewmaでスムージング済み)

学習曲線を見る限りはほぼ収束しているように見える。

推論結果

いくつか推論して見た結果。500Kステップのモデルよりも450Kステップのモデルのほうがよかったので
そのモデルを解析する。

オリジナル文章の生成

物理学には愛がある。
青空 物理学には愛がある。これは疑いもなく更に進んで来るしてはならない。昔の物理学者が時代から将来親しく思い出す部屋である。愛の中には現代の交遊にも似たものが無い。愛と教えと愛の現象とがあるのではないかと考えるものさえある。 現代の交響詩の連続した意味において最も純粋なものは負かねばならない。最も鋭い形式的な形式的な形式的な形式は、自由な発散詩である。しかし現代の交響詩には少なからぬ距離はない。私はここにこの実験を
知識 物理学には愛がある。物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、物理学では、
物理学には愛がある。
過去というものは未来の積み重ねである
青空 過去というものは未来の積み重ねである。歩を運んだり、また働こうとするものが蘇り果てて行ったり、或いは未来の未来の未来の未来の未来の未来が希望或いは現前として決して過去の歴史とはなっていない。然るにそれは未来にとって全く未来と反対な未来が行なわれているものであり、未来が何だと問うたかと言うと他ならぬ。未来が何だ、と問うたかと言うと他ならぬ。未来が何だ、と問うたら未来未来が何だ、
知識 過去というものは未来の積み重ねである。この時代、宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は、宇宙の崩壊の始まりである。宇宙の崩壊は
過去というものは未来の積み重ねである

現状まともに長文生成ができているのは制御コード「青空」のもののみである。
「青空」の文は一見すると日本語の文章になっているように見えるが、内容をよく見ると支離滅裂なものも多い。
制御コード「知識」については同じ言葉の繰り返しが多く文章になっていない。 制御コード「訳」は序文が閉じている場合はそのまま終了してしまうため長文となっていない。

疑問文

食べられないパンは?
青空 食べられないパンは?――と、彼は、軽いごそごとした指を挙げて、軽いと思った。 (もう駄目)と、彼は、暴風の名をつけて、彼の下宿から追い出された。部屋の明かりが彼の部屋のあちこちに見え、プラスティックにのせられて、彼は悠々と眠りはじめていた。 「ニャンコちやん、ニャンコちやん、ニャンコちやん、ボンヌ、パクパク家から転校したの......」 彼は彼女がさう話した。 「ニャンコちやん、ボンヌ
知識 食べられないパンは? という料理の料理は、料理の材料として、料理の材料として使われる。また、料理の材料として、パンを調理する料理は、料理の材料として使われる。また、料理の材料として、パンを調理する料理は、料理の材料として使われる。調理するパンは、料理の材料として、パンを調理する調理器具である。調理するパンは、調理するパンを調理する調理器具である。調理する
食べられないパンは?
世界の中心にいる昆虫は?
青空 世界の中心にいる昆虫は? 陸上に於ける居心地のいい国ではなかろう。 陸上に於ける居心地のいい国ではなかろう。 陸上に於ける居心地のいい国の人々は永い間、咽ぶるような心地よい寝室や、前の気配がひどく馬鹿げて、そして気の合った優れた優れた優れた優れた優れた優れた会話や、四体五十鈴の音や風にも柔順なアカペラを浴びて、三人と話をしている。 人は気むずかしい顔をしている。 人の目には見えないが
知識 世界の中心にいる昆虫は? 。 彼らは、 生物の多様性と多様性を、 生物の多様性と多様性の保全に役立てる。 生物の多様性は、 生物の多様性と多様性の保全に役立てる。 生物の多様性は、 生物の多様性と多様性の保全に役立てる。 生物の多様性は、 生物の多様性と多様性の保全に役立てる。 生物の多様性は、 生物の多様性と多様性の
世界の中心にいる昆虫は?

科学的な話

遺伝子が人の成長に及ぼす影響は
青空 遺伝子が人の成長に及ぼす影響は英国の研究中に広く紹介せられている(1)(1)加えて同じく遡ることができる(1)(1)加えてColumfonstein Orchordor(Morage in Scientific L. Phil. Med., 1718-1960)(2)異なる地方で発現するπ伝達辞の研究を主として行った。彼は、遺伝に関する統計性を研究していたのではほとんど何も知らない同じ民族の分生児であることがわかるが、何千幾
知識 遺伝子が人の成長に及ぼす影響は、遺伝子の発現の要因の1つであり、遺伝子の発現の要因の1つは遺伝子の発現の要因である。遺伝子発現の要因は遺伝子発現の要因である。遺伝子発現の要因は遺伝子発現の要因である。遺伝子発現の要因は遺伝子発現の要因である。遺伝子発現の要因は遺伝子発現の要因である。遺伝子発現の要因は遺伝子発現の要因である。遺伝子発現の要因は遺伝子発現
遺伝子が人の成長に及ぼす影響は
CO2が地球温暖化に与える
青空 CO2が地球温暖化に与える影響は、もはや人類が世界を支配しているというよりも、それが一命を失った時の惨禍であるのだろうと、思うに、けっきょく人類が地球を支配し、その侵略的敗北の勝利に努力するであろう。 戦争によって人類は天命を受けとった最も大きなものは、絶対の快楽であって、決して人類にとっては善愛と扱われるものではない。天命を受けとった方が、悪よりも少ないのは、世界が他の多くの国とつながっている
知識 CO2が地球温暖化に与える影響は、地球温暖化の要因の1つに挙げられる。CO2は、地球温暖化の要因の1つであり、地球温暖化の要因の1つは、地球温暖化の要因の1つであり、地球温暖化の要因の1つは、地球温暖化の要因の1つである。CO2は、地球温暖化の要因の1つであり、地球温暖化の要因の1つ
CO2が地球温暖化に与える影響は

制御コード「青空」の解析

CTRLによる混合学習の影響

現状のモデルでは制御コード「青空」は比較的日本語のようなものを生成できている。
ただ、これは元の青空文庫にあった文章をそのまま出力しているだけの可能性もあり
オリジナルの文章を生成しているのではない可能性もある。
WikipediaやJESCデータと一緒に学習することによって元の「青空文庫」にはない文章を
生成できるようになったかを確かめる。

ポケモンGO』のために出歩く人々
青空 ポケモンGO』のために出歩く人々の間では、『ポケットモンスター』がある。『ポケットモンスター』を作る時に原画で原画でもするか、フラワーデザイナーは『ポケットモンスター アール・アール・アンド・ライナーズ』と同じである。単に『ポケットモンスター アール・アンド・ライナーズ』でも、一通りやっていたらいい。『ポケットモンスター アール・アンド・ライナーズ』でも、一通りの成功は数えきれているが、『ポケットモンスター アール・アンド・ライナーズ

元の序文には「ポケモンGO」としかないが生成文にはポケットモンスターとあり略称を正している。
おそらくこれはWikipediaの知識を利用した文章生成ができている。 (文章自体はよく分からないが...)

あの人はeスポーツが好き
青空 あの人はeスポーツが好きです。そしてeスポーツをやっているひとの中にはeスポーツをやっているひともいるでしょう。ペアペアは戦いをしているひとのために、いろんな面白いことは知っているでしょう。 若い女というのは「小鳥」とか「小鳥」とか「アホウアホウアワ」とかを見てもいわれます。 生後二ヶ月の後、はじめてaoスポーツに指導者として立った私は、早速スポーツにもっと入りたいと思います。日本でカカオライトをはってからはロボシ

一応文章らしいものができており、eスポーツという単語も生成文に含まれているが、
eスポーツではなくただのスポーツに対して言及しているようにも見える。
(aoスポーツという謎の造語も作っている)

類似語入力

夢がある人々は
青空 夢がある人々は、いつも夢を見るであろう。毎日の思い出にふけることが少なくない。強くして夢を好む者も多く、また夢見る世界の習俗などにも、そうであった。とにかく夢を好む者も多く、まず夢を見るであろう。 夢を好む者も多く、また夢見る心理を知っている者が多い。そう思って見れば、いずれも、自分と自分の意志より、さらに大きな前途の階段を昇るべく、自分は迷うことが多い。夢に耽るには、何故か、やや思慮に凝って夢
夢のある人々は
青空 夢のある人々は、私の詩をやさしい露西亜人のだと云ふ事を話せとした。しかし、私は巴里に於て、純粋の世界と原始的な生活に憧れを抱いて居た。この事は、可なり魅了された。若し、傍観者(?)を眠がせと言ふなら、それはどんな意味のものであったかも解らない。(尤も、この世界は西洋だと思つた。)不幸にして、そして、侘しい世界だ。
夢もある人々は
青空 夢もある人々は、夢を見るであろう。毎日、六|睡している。七|時|丑三つの時を、夢に見たような事象が、はっきり目の先に、生々しく匂って来る。けれども、夢は、そのようなところをなし、ただ大きくなって行くにしても、はっきり見えるように感じられる。この六|滴が、ほんのちょっと空虚な円を、自分の傍で眺めると、点々と、ものの金華が指を立てて、夢の中で見ている。夢が金華に向かって

序文が少しことなるだけで生成された文章は大きく異なる。

異なる制御コード

今回学習した制御コードは「青空」、「知識」、「訳」の3つのみだが、
トークンに対するembeddingを制御コードに利用するCTRLの構成上トークンでありさえすれば
これ以外の制御コードでも文章生成を行うことができる。

宇宙に広がる無限の可能性
青空 宇宙に広がる無限の可能性 漠然たる物象を滅ぼし尽さんとし 万物象として尽す術なく文明の進ましめり 文明の神々の系譜を究る はるか彼方なる瞬々 人類の系譜を物語る
知識 宇宙に広がる無限の可能性は、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で、宇宙のあらゆる領域で
宇宙に広がる無限の可能性は 地球上の宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の 宇宙の
宇宙に広がる無限の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性
科学 宇宙に広がる無限の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性
娯楽 宇宙に広がる無限の可能性は無限の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性の可能性

学習していない「愛」「科学」「娯楽」の制御コードでは同じ言葉を繰り返すだけである。
一方で「青空」の制御コードに近いembeddingを持ついくつかのトークンによる結果は以下のようになっている。

宇宙に広がる無限の可能性
青空 宇宙に広がる無限の可能性 漠然たる物象を滅ぼし尽さんとし 万物象として尽す術なく文明の進ましめり 文明の神々の系譜を究る はるか彼方なる瞬々 人類の系譜を物語る
図書 宇宙に広がる無限の可能性を、広がる無限の可能性を、広がる無限の可能性を、広がる無限の可能性を、広がる無限の可能性を問うことができる。広がる無限の可能性を、広がる無限の可能性を問うことができる。広がる無限の可能性を問うことができる。広がる無限の可能性を問うことができる。広がる無限の可能性を問うことができる。広がる無限の可能性を問うことができる。広がる無限の可能性を問う
晴れ 宇宙に広がる無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を創造する無限の可能性を
響いて 宇宙に広がる無限の可能性 寿命は存在せず 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は未知である 寿命は

完全にランダムな制御コードと比較すると序文に続く繰り返しでない文章長が伸びている。

すばらしい人類の未来は
青空 すばらしい人類の未来は、人類の二大国にたった一|哩だけではありません。エネルギーの使用を妨げることなしに、この人類の理想はだんだん永い地球上に拡がりまして、あらゆる国が従来労働しなければならないような労働力をもって、素直にやって行けるようになったのです。 人類の間にさまざまな事をもたらし、人類は今や一様に、神のみが養われ、自分の力でして行けるようになったのです。人類が今やまだ四分の八もの力を有している時代、すなわち、最も無機的な国家に
図書 すばらしい人類の未来は、人類のもう一つの特徴や価値を十分に理解することなしに、非常に重要なことは、人類にとって大切なことである。
晴れ すばらしい人類の未来は、太陽の増長が長い太陽の増長が長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増長よりも長い太陽の増
響いて すばらしい人類の未来は そう私たちは

ここで紹介したものは比較的文章になりやすいトークンだが、
「青空」の制御コードに近いトークンは全て制御コードとなるわけではないようだ。
ただ同じ単語を繰り返すものの方が圧倒的に多い。

応用について

今回CTRLを学習したのは日本語による文章生成がどの程度できるかを
確かめたかったことと序文を与えて制御コードを切り替えるだけで様々な文章を生成
するAIができれば楽しそうだと思ったからである。

現状の学習状況では「青空」以外の制御コードの結果はおもしろくないし、
「青空」も正しい日本語を生成できているとは言えない。
特に論理性のある意味の通った文章があまりできていない印象がある。
(意味もなく否定を入れたりして意味が通じなくなるような場合が多い)

一方で論理性のない適当な文章なら今でもある程度生成できる。

人はなにゆえ生きるのか。その問に答えられるものがいるのであろうか
青空 人はなにゆえ生きるのか。その問に答えられるものがいるのであろうか。それは語られている。涙とか淋しさとか、悲歎とかなまぐさというものに通じているからである。酒を飲み、誰が苦しくも真面目に酒代を断っても、誰もわるい。彼はそれ以上に、何が何でも並ら国民たるか。そしてそれもそれも内心そんなものだ。 ――しかし、彼はいつもこう自分自身を愛している。そして――たとえば水を飲むとか、あるいは相撲とかいう。そしてそれでは自分の酒を――

抽象的なテーマなら強引に解釈しようと思えばできるかもしれない文章ができるのでそれで遊んでみることくらいは
できるかもしれないがフェークニュースの作成などはできないと思う。
少なくともいくつかの制御コードである程度長い文章を生成できるようにならなければつまらない。

改良案について

現状CTRLの学習についていくつかの改良案がある

制御コード(データ)を増やす

現状の学習データは3つの制御コードのみからなっており、
JESCデータは長文生成には向かないデータセットである。
また、Wikipediaデータもある程度文章の形式が決まっており、
あまりおもしろい文章の生成には向かないのかもしれない。
また、語彙数も多いので現状のネットワークサイズでは学習するのが難しい可能性がある。
(語彙数を増やすためや最近の単語に対する知識を利用するため除去すべきではないと思うが..)
これらを解決するためにももう少し多様なジャンルの文章を学習データとして集めて制御コードを 割り振って学習する必要がある。(制御コード10個くらいあればおもしろそう)

ネットワークパラメータを拡張

今回使ったネットワークは語彙数は30000で潜在次元512の8層Transformerであり、やや小さめのモデルである。
元のCTRLは語彙数200000を超え48層のTransformerという強大なモデルであり、 表現能力が桁違いである。
そこまではいかなくても多少ネットワークサイズを増やして結果がどのように変わるかは興味がある。
一方で計算リソース的には今回(GCP Tesla T4)以上に増やすことは現実的ではないので、
何かを犠牲にする必要がある。 あえて犠牲にするとすれば今回系列長を256で学習したが、
それをもう少し小さくすること(128くらい?)で他のパラメータを増やすことはできる。

別のモデルの導入

今回は簡単のためEncoderのみの言語モデルであるCTRLを用いたが、
Seq2SeqであるT5で文章生成を行うのもよさそうである。

まとめと今後

  • 制御コード「青空」についてはある程度長い日本語っぽい文章を生成できるモデルが学習できた
  • 他の学習した制御コード「知識」「訳」は長文の生成ができていない
  • 学習していない制御コードについても文章のようなものが生成できているものがある

今後はFine-tuningで少数の学習データにより制御コードが追加できないかを試してみたい。

日本語CTRLを1から学習する - 15

はじめに

前処理を修正した学習の途中経過。

オリジナル文章生成

250000ステップの学習結果。

物理学には愛がある。
青空 物理学には愛がある。或る種の物理学はすなわち思慮の機である。空想は恋愛であるという一つの型である。例えば恋愛は内的自由とか内的の追従とか、ある人によって相争っているのだ。愛とか自由とかいうがそういう総称は、恋愛群と内的自由の中に関係しているのであった。例えば恋愛は内的自由であり、婚期も自由なので内的自由である。彼等は人生の幸福のために恋愛を種類によって大きさによって左右される自由である。恋愛
知識 物理学には愛がある。
物理学には愛がある。

前処理を修正したので「知識」の制御コードの結果終了条件を覚えることができたが文章として短すぎる。

過去というものは未来の積み重ねである
青空 過去というものは未来の積み重ねである。未来の積み重ねは、いつもいつも、その試行錯雑を極めてゐる。だから、未来に向っての瞬間は詩を作らう。したがつて詩とは正にこる。 帰つてゆく詩人は遅れてしまつた。やがて、昨日の処に現れるのである。それは不思議な争乱と戦い、次ぎは自身その詩の跳梁となり、同じ時に来る。 然し、それはまた始まつたことだ。何も今は何にも感ぜられてゐる。余り近い
知識 過去というものは未来の積み重ねである。 未来は未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす。 未来は未来を覆い尽くす
過去というものは未来の積み重ねである
既存の概念を覆す帽子
青空 既存の概念を覆す帽子の細目をまねた地名への意匠。艦隊の風景画よりも艦内の戦争画に近い。日清戦争当時の上海、上海、上海、上海、上海、大阪――の二日旅順。いッパの外港の戦没子供の顔。ポーの方からナポレオンの「紅白」と「巡舞」とを出すことになっている。防護巡洋艦「黒煙鬼」の肉。近代美術の有つたのは瀟洒な卓子の上で、かの英国のフレデリック
知識 既存の概念を覆す帽子(かくせいたいをふくすけん)とは、ある特定の物事を覆す帽子のこと。 英語では「"bill"」と訳される。
既存の概念を覆す帽子

まとめ

現状「知識」制御コードの生成文が終了しない問題は解決したが、あまり長文の生成ができていない。
Wikipediaデータは記事の最初の部分が似たような形式のものが多いうえに、その部分でその記事に
しかないような固有名詞を使うため収束しづらい可能性がある。 それを解決するためにWikipediaデータは
記事のランダムな文章開始点を選択するようにすることが考えられる。

日本語CTRLを1から学習する - 14

はじめに

日本語CTRL学習2回目の結果をまとめる。
結論だけ述べると前処理を修正して再学習する必要がある

オリジナル文章の生成

600000ステップの結果

物理学には愛がある。
青空 物理学には愛がある。之を見つけるまでには、必ずこの題材を考えなくてはならない。物理学者のデイビッド・ライツクロフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフトフト
知識 物理学には愛がある。 物理学の分野において、物理学は、物理学の分野において、最も重要な役割を果たす。 物理学は、物理学の分野において、最も重要な役割を果たす。 物理学は、物理学の分野において、最も重要な役割を果たす。 物理学は、物理学の分野において、最も重要な役割を果たす。 物理学は、物理学の分野において、最も重要な役割を果たす。 物理学は、物理学の分野において、最も重要な役割を果たす。 物理学は、
物理学には愛がある。
過去というものは未来の積み重ねである
青空 過去というものは未来の積み重ねである。そして今これ等のものが吾人の心に刻み込まれる。まして眼の前に我々の足跡が現われ、現の世界となっているからには、既知の世界も現われ、現の世界も現われという世界も現われという世界も現われという世界も現われという世界も現われというに至るのである。我もその影を今に刻み込んでいる。一太子の立像は永遠に歴史の中に刻印している。現代の如史史は美しくオアシスの趣がもっとも少くないことを読んで
知識 過去というものは未来の積み重ねである。未来の積み重ねは、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の積み重ねの過程を、未来の
過去というものは未来の積み重ねである
既存の概念を覆す帽子
青空 既存の概念を覆す帽子とその概念のうち「浪曼主義」は、その概念を単なる概念の《意識力によって》《が包むもの〉であって、いわば、いわば、いわば、概念の主張にすぎない。だが、従来の唯物論が近代科学を放棄して、精神産業革命の源泉と取っ組んで、その上に、資本主義のあらゆる発展は乗り越えようとする試みであると同時に、新しい基礎理論を出現せしめたものと考えられる。そしてかかる絶望的な目的への、実に、
知識 既存の概念を覆す帽子は、そのデザインを「帽子」と「帽子」に分類し、そのデザインは「帽子」と「帽子」の2種類に分類した。 帽子は、帽子の「帽子」と「帽子」の2種類に分類した。 帽子は、帽子の「帽子」と「帽子」の2種類に分類した。帽子は、帽子の「帽子」と「帽子」の2種類に分類した。
既存の概念を覆す帽子

前回から学習が進んでいる様子はない。
解くに「知識」制御コードはほとんど長文生成ができていない。
これは単純に学習しているデータによる言語モデル生成の難易度が高すぎるのではないかと思う。
Wikipediaデータは長文が多く256トークン以内に終了する文章が少ない。
そのため終了条件が正しく学習できず同じような単語を繰り返す結果となっているものと思われる。
現状の計算リソースでなんとかするためWikipediaデータは記事の最初の400文字程度のみを学習
することとして再学習を行うこととする。

参考文献

日本語CTRLを1から学習する - 13

はじめに

前回 前処理方法を変更して再学習を開始した。
現状250000ステップまで進んだのでここまでの結果をまとめる。

推論結果

前回同様、青空文庫データの「庭をつくる人」(室生犀星)の序文入力結果。太字は入力文 。

元文章の序文

つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の磧で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌《さ》いて小さいながれ[#「ながれ」に傍点]をわたくしは毎日作って遊んだものである。ながれ[#「ながれ」に傍点]は幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二た側へ石垣のまねをつくり、それを流れへ引くのであったが、上手《かみて》の清水はゆたかに湧きながれて、朝日は浅いながれ[#「ながれ」に傍点]の小砂利の上を嬉々と戯れて走っているようであった。自分はところどころに小さい橋をつくり、石垣には家を建て、草を植え花を配したものであった。此の頃になってつれづれ草ばかりでなく、水は浅く川はば一ぱいにながれて居る方がよいと思った。水というものは生きているもので、どういう庭でも水のないところは息ぐるしい。庭にはすくなくとも一ところに水がほしい。つくばい[#「つくばい」に傍点](手洗鉢)の水だけでもよいのである。乾いた庭へ這入ると息づまりがしてならぬ。

50000 ステップの結果
つれづれ草に
青空 つれづれ草に芽ぐみし ⁇ に 春の日をむかへども 春の日をむかへども 春ゆく春の日をむかへども 春ゆく花の花の香の
知識 つれづれ草に、その花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる。 は、花を咲かせる
つれづれ草に はまります
つれづれ草に水は浅いほどよいと書いてある。
青空 つれづれ草に水は浅いほどよいと書いてある。 わたくしはわたくしは、わたくしの旧居に、田楽師一家なる一人で、田楽師の家に遊びにゆきました。わたくしは、田楽師の家に遊びにゆきました。わたくしは、田楽師の家に遊びにゆきました。わたくしは、田楽師の家に遊びにゆきました。わたくしは、田楽師の家に遊びにゆきました。わたくしは、田楽師の家に遊びにゆきました。わたくしは、田楽師の家に遊びにゆきました。 わたくしは
知識 つれづれ草に水は浅いほどよいと書いてある。 つれづれ草は、その葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎を伸ばして、葉が茎
つれづれ草に水は浅いほどよいと書いてある。
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の磧で暮した。
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。わたくしは子供のころは大概川ふちの流れている川ふちに水を引いたことがあった。 ある年の秋、私はある年の秋、水甕に ⁇ を洗うことにした。ある年の秋、私は水甕に ⁇ を洗うことにした。水甕は水甕の水を洗うことにした。水甕の水甕は洗うことにした。 水甕は水甕の水甕
知識 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 ある日、わたくしはわたくしは、この川に水が流れ込むのを楽しみにしていた。水が流れ込むのは、水が流れ込むのが楽しみだった。水が流れ込むのは、水が流れ込むのが楽しみだった。水が流れ込むのは、水が流れ込むのが楽しみだった。水が流れ込むのは、水が流れ込むのは、水が流れ
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 わたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしはわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくしわたくし

50000 ステップの段階では

  • 制御コードごとの違いが大きくでている
  • 「青空」が最も長い文章を生成できている。
  • 「知識」も多少文章を生成できているが「青空」と異なり繰り返しが多い。
  • 終了コードを追加したので「訳」の制御コードは短い文しか返さない

150000 ステップの結果

つれづれ草に
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌いて小さいながれをわたくしは毎日作って遊んだ。ながれは幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二、三尺のいちじくの木は家で、小さいながら少しも刈り分けがつかない。わたくしは若い時分には水練の人として頭角を現わしていたが
知識 つれづれ草に、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を掘って、草の根を
つれづれ草に はまります
つれづれ草に水は浅いほどよいと書いてある。
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌いて小さいながれをわたくしは毎日作って遊んだ。ながれは幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二、三尺のいちじくの木は家で、小さいながら少しも刈り分けがつかない。わたくしは若い時分には水練の人として頭角を現わしていたが
知識 つれづれ草に水は浅いほどよいと書いてある。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る。 草は、草の茎を刈り取る
つれづれ草に水は浅いほどよいと書いてある。
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の磧で暮した。
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌いて小さいながれをわたくしは毎日作って遊んだ。ながれは幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二、三尺のいちじくの木は家で、小さいながら少しも刈り分けがつかない。わたくしは若い時分には水練の人として頭角を現わしていたが
知識 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 草は、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草を刈り、草刈りして草刈りする。草刈りは
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 わたくしはわたくしはわたくしはわたくしはわたくしはわたくしは、わたくしの『草』を あの草を あの草を あの草に 挿んで わたしの草を 挿んで それを 挿んで それを 挿んで 挿んで それを 挿んで 挿んで 挿んで 挿んで 挿んで 挿んで 挿んで 挿

150000 ステップでは

  • 「青空」は元文章をある程度再現できているが、終盤が元文章と大きく異なっている。
  • 「知識」は多少関連のありそうなことを述べているが文章にはなっていない
  • 「訳」は短い場合は適当な単文をつくっているが、入力が長くなると文章として成立しなくなる。

250000ステップ

つれづれ草に
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌いて小さいながれをわたくしは毎日作って遊んだものである。ながれは幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二た側へ石垣のまねをつくり、それを流れへ引くのであったが、上手の清水はゆたかに湧きながれて、朝日は浅いながれの小砂利の上を
知識 つれづれ草に、はるは、日本の草地である。 草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は、草地は
つれづれ草に はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも はやくも は
つれづれ草に水は浅いほどよいと書いてある。
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌いて小さいながれをわたくしは毎日作って遊んだものである。ながれは幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二た側へ石垣のまねをつくり、それを流れへ引くのであったが、上手の清水はゆたかに湧きながれて、朝日は浅いながれの小砂利の上を
知識 つれづれ草に水は浅いほどよいと書いてある。 草は、草の表面には、葉が生え、茎の先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に葉が生え、その先端に
つれづれ草に水は浅いほどよいと書いてある。
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の磧で暮した。
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌いて小さいながれをわたくしは毎日作って遊んだものである。ながれは幅二尺くらい長さ三間くらいの、砂利をこまかに敷き込み二た側へ石垣のまねをつくり、それを流れへ引くのであったが、上手の清水はゆたかに湧きながれて、朝日は浅いながれの小砂利の上を
知識 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 ある晩、草は枯れて枯れてしまった。草は枯れてしまった。草は枯れてしまった。草は枯れてしまった。草は枯れてしまった。 草は枯れてしまった。 草は枯れてしまった。 草は枯れてしまった。 草は枯れてしまった。 草は枯れてしまった。 草は枯れてしまった。 草は枯れてしまった。
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 もうすぐ もう もう もう もう もう もう もう もう もう もう もう もう もう もう もう もう もう もう もう もう よければ もう もう もう よければ もう よければ もう よければ もう もう よければ もう
  • 「青空」は150000ステップよりも再現度が上がっている
  • それ以外の制御コードは150000ステップとそれほど変わっていないように見える

次にWikipedia(口入)を序文とする

口入\n\n口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており、日本においては古代から近代まで長く使われた言葉であるが、中世には特殊な法律用語として用いられた。

口入
青空 口入無沙汰に花を盛り同行 君は、子供馬鹿でいや てれつきそうな 松にブンと鳴らし 鼻をひかれると近づくと道が 崖にのぞき
知識 口入(こうにゅう)は、日本の地名、人名。
口入を 見つけなくていい
口入 口入(くにゅう)は、口出しや干渉
青空 口入 口入(くにゅう)は、口出しや干渉を、お呼びになります。 諏訪 はて、相違ないが、この中の男と娘が恋仲だ。たといね、よし、よし、これはわたくしでございます。さあ、貴方、存じているようだがわしの顔は、かつてここを立ち退いて、この上に様と迫って、あぶない、落ちないようにしようとなさいました、そうとはお思いにならなかったのですか。 田川 はあ、調べてごらんの誤解
知識 口入 口入(くにゅう)は、口出しや干渉をしない、または、口入(こうにゅう)とも言う。 口入は、口入(こうにゅう)とも言う。口入は、口入(こうにゅう)とも言う。口入は、口入(こうにゅう)とも言う。口入は、口入(こうにゅう)とも言う。口入は、口入(こうにゅう)とも言う。口入は
口入 口入(くにゅう)は、口出しや干渉を する
口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており
青空 口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しておりましたが、加賀藩では加賀藩のものとして、これが内閣にならうという時局にかなっているのであります。 俗に信越線の沓掛駅が相生橋に置かれるから、あるものに相違ありません。 越前守は、この出来事を、大切な約束事と、解決させたい考えでしたけれども、藩主が、独断で独断で独断で解決させなかった事実
知識 口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており、口入は、口入を「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口入」と「口
口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており
  • 元がWikipediaの文章の割には「青空」が最も意味のありそうな文章を出力している

元文章の序文 (JESC)

警察は酷い事故だったって 運転手は致命傷だったって

警察は
青空 警察は毎日丘の角で、大岩呼夫と親切そうな笑顔をしておりました。彼は例の大きな岩見は勿論ただちに、警視庁の所轄署に通達して、毎日通達しまして、警察署の署員達を対等に捜索させました。が、次第に捜索を再開しまして、彼は署員に、秘蔵の話をして聞かせる以上に、恐るべき恐るべき事は解決しないと感じました。 見れば、この船の中で、船外に新聞記者が横
知識 警察は、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が、警察の捜査員が
警察は 警察の捜査官に 連絡をしなくて
警察は酷い
青空 警察は酷い顔をして、 冬のディカセに熱く臥て、 電柱が白く光って見えた。 街々は、歓呼の声がやんだ。 血は血にしみ、ガスは走って、
知識 警察は酷い犯罪行為の多さから、警察の捜査を厳しく規制する方針を採っていた。警察は、警察の捜査を厳しく規制する方針を採っていた。警察は、警察の捜査を厳しく規制する方針を採っていた。警察は、警察の捜査を厳しく規制する方針を採っていた。警察は、警察の捜査を厳しく規制する方針を採っていた。警察は、警察の捜査を厳しく規制する方針を採っていた。
警察は酷い
警察は酷い事故だって
青空 警察は酷い事故だって何者だ。 職員は全員、非常に少なく、工作機械で、十二分かかって仕事をしていると約束したり、爆発したりすると、まるっきり鍵を片づけられる。職員の財布に自分の名が記れる。携帯は鉄で充填され、運搬に使用する。運搬に使用する。運搬には、十個の人間から十個の精神力をたのまれているジイド機関キチン機関が使用される。救助活動で七個の精神力を、その
知識 警察は酷い事故だって、警察の責任を問われる。 警察は、警察の責任を問われる。 警察は、警察の責任を問われる。 警察は、警察の責任を問われる。 警察は、警察の責任を問われる。 警察は、警察の責任を問われる。 警察は、警察の責任を問われる。 警察は、責任を問われる。 警察は、責任を問われる。
警察は酷い事故だって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どうやって どう
  • 「青空」制御コードの文章は意味は分からないが日本語のような文章を生成している。
  • 「知識」の制御コードはまだ長文生成ができていないのでunder-fittingな可能性が高い
  • 「訳」は学習データ的に長文を返すことはできない

オリジナル文章作成

前回同様にオリジナル文章を作成してみる。

物理学には愛がある。
青空 物理学には愛がある。本当に愛という言葉は、愛が養分な明示を求めるということを意味するのであろう。一体この熟したい現象は、われわれの日常の用象だということからも解って来るのである。勿論日常の科学生活を事においてにおいてなしに、現実の事実からだけ与えられ得るのであり、現実の事実に即して解放されたのであった。 物理学は、物理学の特別な特別な特別な特別な特別な本質を持っている。科学は第一に物理学の特別な特別な特別な特別な場合として与えられるのである。ある意味において
知識 物理学には愛がある。 物理学の分野において、物理学は、物理学の分野における最も基本的な概念である。 物理学は、物理学の分野における最も基本的な概念であり、物理学の分野における最も基本的な概念である。 物理学は、物理学の分野における最も基本的な概念である。 物理学は、物理学の分野における最も基本的な概念であり、物理学の分野における最も基本的な概念である。 物理学は、物理学の分野における最も基本的な概念である。 物理学は、物理学
物理学には愛がある。

制御「青空」の文章は「物理学」と「愛」というキーワードを含んだ、ある程度自然な文章が生成できて
いるように感じる。(ところどころ日本語がおかしいが。)
「知識」は愛について全く述べていないのでこの序文に対しての文章を生成しているわけではない。

過去というものは未来の積み重ねである
青空 過去というものは未来の積み重ねである。今まさに昨日の進みに鳴るものがあった。これは人格の自由というのが、かかる人格の自由の、言説の無意味な語に外ならぬ。吾れには宇宙の精神、現一の物質的の精神として、万物一様生きている心の秘密を切りひらいて人類の霊性をくみたてようではないか。これが真に、正しく我々の前にたつのだ。これはつまり、人が言うほどのものではない。今までに知っていたよりも、ずっと、だれにもわかわかっていた人間について
知識 過去というものは未来の積み重ねである。未来の積み重ねは未来の積み重ねであり、未来の積み重ねは未来の積み重ねである。未来の積み重ねは未来の積み重ねであり、未来の積み重ねは未来の積み重ねである。未来の積み重ねは未来の積み重ねであり、未来の積み重ねは未来の積み重ねである。未来の積み重ねは未来の積み重ねである。未来の積み重ねは未来の積み重ねである。未来の積み重ねは未来の積み重ねである。未来の積み重ねは未来の積み重ねである。未来
過去というものは未来の積み重ねである

制御「青空」の文章は最初の一文は序文に関係していそうなものだが、 それ以降は関係のない文章を生成しているように見える。

既存の概念を覆す帽子
青空 既存の概念を覆す帽子のものだ。 すべてこれらの本は、歴史的および現在の政治的な概念を出来るだけ除去し、その目的とするすべての本のことを、我々は、この二つの側面を通じてその中核を構成する最も有望な書物の一つであると確信している*。モンテーニュは、十八世紀の中葉においてフランスの「ジャン・クリストフ」に、最もその概念の図式の意味を根底において、巧みに説き起こしている。その説は、第一巻第十一章の中でハンガリア・
知識 既存の概念を覆す帽子は、そのデザインが、そのデザインを「デザイン」と「デザイン」の2つに分けたものである。 デザインは、デザインの「デザイン」と「デザイン」の2つに分けた。デザインは、デザインの「デザイン」と「デザイン」の2つに分けた。デザインは、デザインの「デザイン」と「デザイン」の2つに分けた。デザインは、デザインの「デザイン」と「
既存の概念を覆す帽子を 作らないと

「青空」の文章は"既存の概念を覆す"に関連する文章生成しているようだが、
"帽子"という部分は無視してしまっている。
「知識」の制御コードは序文にはない"デザイン"という単語を連呼している。 これは"帽子"という単語に対応する"デザイン"という単語を選んで文章を 生成できていると解釈すると全くの無関係な文章ではないと思う。 「訳」については正しく短い会話文を生成できているので問題ないと思う。

現状のまとめと今後

現状各制御コードは

  • 制御コード「青空」は前処理によって学習の進み方が速くなり、自然な日本語を生成できている
  • 制御コード「知識」はまだ学習が不十分であると思われる
  • 制御コード「訳」は単文を出力するという部分は正しく学習できている

「青空」の文章は確かに自然な文章なのだが、それが元の「青空文庫」データをそのままコピーした
ものなのかそれともいくつかの文章が混ざってものかは今後確かめたい。
「知識」の文章はまだ学習不足で不自然な日本語が多い印象があるので今後改善されることを期待する。
「訳」については学習データの時点で長文の生成は不可能と思われるので現状こんなものかと思うが、
他のデータセットと混ざることにより長文でもある程度自然な返答ができればなお良いと思う。

参考文献

日本語CTRLを1から学習する - 12

はじめに

日本語CTRLを学習し始めてから1週間ほどたったので
現状と課題についてまとめる。

学習状況

現状550000Iterほど学習が進んでいる。

元文章の再現

青空文庫データの「庭をつくる人」(室生犀星)の序文入力結果。太字は入力文

元文章の序文

つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の磧で暮した。河原の中にも流れとは別な清水が湧いていて、そこを掘り捌《さ》いて小さいながれ[#「ながれ」に傍点]をわたくしは毎日作って遊んだものである。

CTRL出力文(各制御コードに対して)
つれづれ草に
青空 つれづれ草に 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花が咲く 花
知識 つれづれ草に つれづれ草に(つれづれぐさに)は、日本のシンガーソングライター・川嶋あいの2枚目のシングル。 表題曲は、テレビアニメ『美少女戦士セーラームーン』のエンディングテーマに起用された。 表題曲は、テレビアニメ『美少女戦士セーラームーン』のエンディングテーマに起用された。 表題曲は、テレビアニメ『美少女戦士セーラームーン』のエンディングテーマに起用された。 表題曲は、テレビアニメ『美少女戦士セーラームーン』のエンディングテーマに起用された。 カップリング曲
つれづれ草に 花が咲くのは 楽しいことじゃない。 でも もう いいの? でも もう いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの? でも いいの?

CTRL出力の最後に同じ文章を繰り返しているのは終了条件を正しく与えていないことが
原因なのでここでは無視する。

この短い入力の場合

  • 制御コード「青空」の場合「草」というキーワードに対して花の関連する単文を返している
  • 制御コード「知識」の場合は入力を曲のタイトルだと解釈してそれに関連する文章を生成している
  • 制御コード「訳」の場合は会話文風に返している

次に序文を伸ばしてみる

つれづれ草に水は浅いほどよいと書いてある。
青空 つれづれ草に水は浅いほどよいと書いてある。 山は、山が深くて、山が深くて、山が深くて、山が深くて、山が深くて、山が深くて、山が深くて、山が深くて、山が深くて、山が深くて、水が深くて、水が深くて、水が深くて、水が深くて、水が深くて、水が深くて、水が深くて、水が深くて、水が
知識 つれづれ草に水は浅いほどよいと書いてある。 花は、花序の基部から出る。花序は、花序の基部から出る。花序は、花序の基部から出る。花序は、花序の基部から出る。花序は、花序の基部から出る。花序は、花序の基部から出る。花序は、花序の基部から出る。 果実は、種子を含まない。 和名
つれづれ草に水は浅いほどよいと書いてある。 でも あの 草は まだ まだ ある。 でも あの 草は まだ ある。 だから あの 草は ある。 あの 草は ある。 あの 草は ある。 あの 草は ある。 あの 草は ある。 あの 草は ある。 あの 草は ある。 あの

少し伸ばした入力に対しては

  • どの制御コードでも短い文の時とは異なる文章を続けている
  • 制御コード「青空」のものは文章が正しく終わっていない

さらに前文を伸ばしてみる

つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の磧で暮した。
青空 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。川には鮎がたくさんとれた。川には鮎の ⁇ がたくさんとれた。川には鮎の ⁇ がたくさんとれた。川には鮎の ⁇ がたくさんとれた。川には鮎の ⁇ がたくさんとれた。川には鮎の ⁇ がたくさんとれた。川には鮎の ⁇ がたくさんとれた。川には鮎の ⁇ が
知識 つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。その ⁇ は、その ⁇ の茎の節から、その ⁇ の茎の節に、その ⁇ の茎の節から、その ⁇ の茎の節から、その ⁇ の茎の節から、その ⁇ の茎の節から、その ⁇ の茎の節から、その ⁇ の茎の節から、その ⁇ の茎の節
つれづれ草に水は浅いほどよいと書いてある。わたくしは子供のころは大概うしろの川の ⁇ で暮した。 ⁇ は ⁇ の茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り取って、その茎を刈り

"磧"(かわら)という文字は珍しい文字でありSentence Pieceの辞書に入っていないので
??(不明文字)として与えている。

  • 「青空」の場合はそれなりに意味の通る文章を返している。
  • 「知識」「訳」の出力はあまり文章の体をなしていない。

この文章は青空文庫からのデータのものなので「青空」が最も自然な出力となることは妥当である。
ただ「青空」の出力も元の文章とは異なるので学習した知識が混ざってオリジナルの文章を 作り上げていると言える。

次にWikipedia(口入)を序文とする

元文章の序文

口入\n\n口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており、日本においては古代から近代まで長く使われた言葉であるが、中世には特殊な法律用語として用いられた。

口入
青空 口入屋《くちいれや》の亭主は、 「お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お、お
知識 口入屋 口入屋(くちいれや)は、東京都千代田区神田駿河台に本社を置く、主に医薬品・医療機器の卸売りを扱う企業。 主に医薬品・医療機器の卸売りを扱う。 主に医薬品・医療機器の卸売りを扱う。 主に医薬品・医療機器の卸売りを扱う。 主に医薬品・医療機器の卸売りを扱う。 主に医薬品・医療機器の卸売りを扱う。 主に医薬品・医療機器の卸売りを扱う
口入屋が 何で こんな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカな バカ
  • 入力が短すぎるためどの制御コードでも「口入」ではなく「口入屋」に対して言及している
  • 「知識」の出力は一見最もらしい文章だが調べた限り「口入屋」という企業は存在しないのでfake newsを作っている
口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており
青空 口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており、口入の行為は、口入の行為と、口入の行為とに、その区別がある。口入は、口入の行為と、口入の行為とに、その区別がある。口入は、口入の行為と、口入の行為とに、その区別がある。口入は、口入の行為
知識 口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており、口入行為とは区別される。 口入行為は、口入行為の行為が、口入行為の行為が、口入行為の行為が、口入行為の行為が、口入行為の行為が、口入行為の行為が、口入行為の行為が、口入行為の行為が、口入行為の
口入 口入(くにゅう)は、口出しや干渉、仲介、斡旋などの行為を意味しており、口入行為とは、口入行為と、口入行為とを区別する。口入行為とは、口入行為と口入行為とを区別する。口入行為とは、口入行為と口入行為とを区別する。口入行為とは、口入行為と口入行為とを区別する。口入行為とは
  • 入力文を伸ばすと制御コード間の違いが小さくなる
  • 序文にある口入と行為という言葉から口入行為という単語を作りだしている

次にJESCデータを序文とする

元文章の序文

警察は酷い事故だったって 運転手は致命傷だったって

警察は
青空 警察は、その事件を、警察の無能と、無能との、二つの感情から、判断した。 警察は、その事件を、警察の無能と、無能との、二つの感情から、判断した。 警察は、その事件を、無能と無能との、二つの感情から、判断した。 警察は、それを、無能と無能との、二つの感情から判断した。 警察は、
知識 警察は、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で、警察の捜査を妨害する目的で
警察は 警察の 捜査を 妨害する という やり方を 見つけました。 でも 警察は 警察の 捜査を 妨害する という やり方を 見つけました。 警察は 警察の 捜査を 妨害する という やり方を 見つけました。 警察は 警察の 捜査を 妨害する という やり方を 見つけました。 警察は 警察の 捜査を

「警察は」という短い入力だけで「妨害」という言葉が出てくるのは知識が偏っているように感じる

警察は酷い
青空 警察は酷い目に遭った。 警察は、警察の無能を責める。 警察は、警察の無能を責める。 警察は、警察の無能を責める。 警察は、警察の無能を責める。 警察は、警察の無能を責める。 警察は、警察の無能を責める。 警察は、警察の無能を責める。 警察は、警察の
知識 警察は酷い目に遭った。 警察は、警察が「警察が警察を雇う」という、警察のやり方を非難する。 警察は、警察が「警察が警察を雇う」という、警察のやり方を非難する。 警察は、警察が「警察が警察を雇う」という、警察のやり方を非難する。 警察は、警察が「警察が警察を雇う」という、警察のやり方を非難
警察は酷い目に遭った 警察は 警察が 警察を 追い払うのを 阻止したんだ。 警察は 警察が 警察を 追い払うのを 阻止したんだ。 警察は 警察が 追い払うのを 阻止したんだ。 警察は 警察が 追い払うのを 阻止したんだ。 警察は 警察が 追い払うのを 阻止したんだ。 警察は 警察
  • " 警察は酷い目に遭った。"までは制御コード間で共通しているが、それ以降は多少異なっている。
  • 入力文が短いと特定の単語を繰り返しやすい傾向にある(今回は"警察")
警察は酷い事故だって
青空 警察は酷い事故だって、警察がそんな酷い目に遭わせるものかね。」 「そうさ。」とホームズは言った。「警察は、その事故を、その現場に起った出来事と結びつけて考えるべきだった。」 「その事故は、」とホームズが言った。「その事故は、」とホームズが言った。「その事故は、」とホームズが言った。「その事故は、」とホームズが言った。「その事故は
知識 警察は酷い事故だって言った。」と、その発言を引用した。 この事件は、警察が捜査を妨害したとの指摘もある。 この事件は、警察が捜査を妨害したとの指摘もある。 この事件は、警察が捜査を妨害したとの指摘もある。 この事件は、警察が捜査を妨害したとの指摘もある。 この事件は、警察が捜査を妨害したとの指摘もある。 この事件は、警察が
警察は酷い事故だって あるんだろ? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で? 何で
  • 先ほどの文と比べると制御コード間の差がかなり大きくなった
  • 「青空」は会話文の描写、「知識」は会話文の引用、「訳」は会話文そのものとそれぞれの特色が出ている

オリジナル文章作成

適当な文章を与えてみる。

入力文

物理学には愛がある。

物理学には愛がある。
青空 物理学には愛がある。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛である。愛は愛
知識 物理学には愛がある。 物理学では、物理学は、物理学の分野と、物理学の分野とに大別される。物理学は、物理学と物理学の分野に大別される。物理学は、物理学と物理学の分野に大別される。物理学は、物理学と物理学の分野に大別される。物理学は、物理学と物理学の分野に大別される。物理学は、物理学と物理学の分野に大別される。物理学は、物理学と物理学の
物理学には愛がある。 だから 私が あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。 だから あなたを 愛しているなら。
過去というものは未来の積み重ねである
青空 過去というものは未来の積み重ねである。過去を未来に、未来を未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、未来に、
知識 過去というものは未来の積み重ねである。 過去は、過去は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、未来は、
過去というものは未来の積み重ねであると 考えています。 過去を 未来に 変えるということは 未来を 変えるということです。 過去を 変えるということは 未来を 変えるということです。 過去を 変えるということです。 過去を 変えるということです。 過去を 変えるということです。 過去を 変えるということです。 過去を 変えるということです。 過去を 変えるということです。 過去を 変える
既存の概念を覆す帽子
青空 既存の概念を覆す帽子の効果を、その概念の分析によって、我々は、この概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念の分析によって、その概念
知識 既存の概念を覆す帽子の「帽子」は、そのデザインやデザインの方向性を、より明確にすることを目的としている。 帽子は、そのデザインやデザインの方向性を、より明確にすることを目的としている。 帽子は、デザインやデザインの方向性を、より明確にすることを目的としている。 帽子は、デザインやデザインの方向性を、より明確にすることを目的としている。 帽子は、デザインやデザインの方向性を、より明確にすることを目的としている。 帽子は
既存の概念を覆す帽子を デザインするのです。 我々は 我々の 新しい概念を 作り変えました。 我々は 新しい概念を 作り変えました。 我々は 新しい概念を 作り変えました。 我々は 新しい概念を 作り変えました。 我々は 新しい概念を 作り変えました。 我々は 新しい概念を作り変えました。 我々は 新しい概念を作り変えました。 我々は 新しい概念を作り変えました。 我々は

どの文でも入力後の最初の一文はそれらしい言葉が続くのだが、
それ以降に長い意味のある文章の生成はできていない。

現状のまとめと改良

現状できていること
  • 入力次第ではある程度意味の通る文章が生成される
  • 制御コードごとに特色のある文章生成ができている
現状できていないこと
  • 長文の生成ができていない
  • 終了判定ができていない

終了判定ができていないのは学習時の前処理で終了コードを教えていないため であるので修正が必要である。
長文が生成できていない理由については現状よく分かっていないが、
考えられる原因としてデータの前処理が良くない可能性がある。

そのため以下の改良を行う。

  1. pad を利用するためにsentence pieceを学習しなおす
  2. 前処理を改良する

前回sentence pieceを学習したときにpad指定を忘れていたので
現在の学習時にpadするときはeosコードを変わりに利用しており、
cross entropyの計算時もeosは無視していた。
次回はeosも予測するようにするためsentence pieceは再学習する。

前処理の改良

現状学習リソースの制限上、学習時の入力トークン数は256が最大となっている。
Wikipedia青空文庫の記事・作品データはこれらよりはるかに長い。(JESCデータは短い)
そのため学習時はWikipedia青空文庫のデータはランダムに切り出して入力としている。
これにより文章の開始としておかしいものまで入力されることで問題の難易度が上昇していると思われる。

これに対処するため元文章から、独立した文章としておかしくない部分を切り出す方法を考える。

青空文庫データ

以前の記事で調べた通り青空文庫データはデータ数自体はそれほど多くないが1つのデータ
が長い文章である。 そのため1つの文章を分割する必要がある。

意味のある文章を生成するためには、できる限り意味が分かれている箇所で分割したいのだが、
データごとに段落、改行などの形式が異なるため正しく分離することは難しい。
そこで文章の中である程度意味のあると思われる部分をおおざっぱに切り出すようにする。

以下のような処理を行う。

  1. 文章から不要部分を削除する。(この記事を参考)
  2. 文章を改行コードで分割し、切れ目の候補行を推定する
  3. 切れ目の候補行から数行を抽出する(5行程度)
  4. 1行が非常に長いものはそのまま利用する

コード - 青空文庫前処理・分割

import re
cmp1 = re.compile('[#.+?]')
cmp2 = re.compile('《.+?》')
line_size = 5
txt_threshold = 100
threshold_text = 500
min_text = 30
max_text = 2000

def preprocess_text(text):
  text = cmp1.sub("", text)
  text = cmp2.sub("", text)
  lines = text.split("\n")

  starts = [0]
  zero_lines = []
  for l in range(len(lines)):
    zero_lines.append(len(lines[l])==0)
    if len(lines[l-1]) == 0 and len(lines[l]) > 0:
      starts.append(l)


  txts = []
  for s in starts:
    lns = zero_lines[s:s+line_size]
    if sum(lns) > 0 and len("".join(lines[s:s+line_size])) < threshold_text:
      continue
    txt = "\n".join(lines[s:s+line_size])
    if len(txt) <= max_text:
      if len(txt) >=min_text:
        txts.append(txt)
    else:
      n_txt = len(txt)
      lines = txt.split("\n")
      n_lines = len(lines)
      txt_per_line = n_txt // n_lines
      i_count = max_text // txt_per_line
      for i in range(i_count+1):
        tx = "\n".join(lines[i*i_count:(i+1)*i_count])
        if len(tx) >= min_text:
          txts.append(tx)
  return txts

Wikipediaデータ

Wikipediaデータは青空文庫のデータほど長くもなく、
また形式もある程度統一されているため簡単な前処理とする。

  1. 文章の最初に存在するタイトル部分の除去
  2. 長い文章を改行で均等に分割する。

コード - Wikipedia前処理・分割

txt_base = 700
new_texts = []
not_title = 0
nan_count = 0
for i, row in tqdm_notebook(wiki_df.iterrows()):
  title = row["title"]
  text = row["text"]
  if isinstance(text, float):
    nan_count += 1
    continue
  if isinstance(title, float):
    not_title += 1
  elif not text.startswith(title):
    not_title += 1
  else:
    txt = text[len(title):].strip()
  n_txt = len(txt)
  n_split = (n_txt + txt_base - 1) // txt_base
  if n_split > 1:
    lines = txt.split("\n")
    n_lines = len(lines)
    nl_size = n_lines //n_split
    for n in range(n_split):
      new_texts.append("\n".join(lines[n*nl_size:(n+1)*nl_size]))
  else:
    new_texts.append(txt)

 データ読み込み時処理

以上の前処理により、学習時のランダム切り出しは行わないこととする。

  1. 文章のトークン長が255よりも短い文章はeosを付与する
  2. eosを付与しても255以下の文章は255となるようにpadを末尾に付与する
  3. 255よりも長い文章は最初の255トークンで文章を切り出す(それ以降の文章は使わない)
  4. 文章の最初に制御コードに対応するトークンを付与する

これにより前回の学習と比べるとデータ1つ1つが単体で文章として成立しやすく
なることを期待する。

まとめと今後

現時点である程度文章を生成する能力は学習できているが、
数日前からの学習経過を見る限りこれ以上の性能向上は期待できないと思う。

現状の学習は60000ステップで止めて前処理を変更した設定で再学習してみる。

参考文献