博麗霊夢さん&琴葉茜ちゃんと会話してみた④【Transformerとキャラ対話データを用いた転移学習による対話botの作成】
目次
前回までのあらすじ
デスクトップで喋る茜ちゃんを作成しました!
令和コソコソ噂話
電車で読むにはデカすぎる
オライリー・ジャパンから出版されている『ゼロから作るDeep Learning ❷ ―自然言語処理編』を読むと, 自然言語処理の基礎を学べることで有名ですが, この記事の筆者は理解するのに1ヶ月かかったそうです. 核となるAttentionについての解説がある他, 今回使用したTransformerも少し解説されているのでオススメです.
二度と環境構築したくない
筆者が使用しているフレームワークはtensorflowであり, そのGPU版であるtensorflow-gpuを愛用(?)していますが, 環境構築に丸々3日かかったそうです. これからtensorflow-gpuを導入しようとしている人は要注意です. 筆者の能力が低いだけ説は大いにある.
一番苦労したのに...
BERTとは, Bidirectional Encoder Representations from Transformers(Transformerによる双方向のエンコード表現)の略称であり, 事前学習をすることで様々なタスクに応用できる汎用性の高いエンコーダです. huggingfaceのtransformersでBERTモデルが使用できたため, 筆者はBERTをEncoder, TransformerをDecoderとするハイブリッドモデルを作成しましたが, 学習速度が遅く, 結果も良くなかったため, 使用を断念したそうです.
東方鈴奈庵 ~ Forbidden Scrollery.
ここまで読んでしまった人は, その気合で是非読んでください.
最後に
機械学習を用いて博麗霊夢さんと琴葉茜ちゃんと会話できるシステムを作成してみました!色々な部品を使用して一つのシステムを作るのは楽しいですね!本当か?
作業中に一番地獄を見たのはBERT+Transformerのハイブリッドモデル作成でした. Tensorflowでの参考資料が殆どなく, 膨大な量のリファレンスとの格闘は非常に苦しかったですが, この記事では紹介することは叶いませんでした. つらい...
このため, Transformerモデルは参考にしたコードとおおよそ同じです. 私がオリジナルで書いた部分はファイル分け, 重みの保存, モデルの保存, パラメータの保存, トークナイザの保存, 各種読み込み処理, 推論用のCUIなど...少し便利になるような機能を付け加えたくらいでした. しかもそんなに綺麗に書けていない.
PygameやTkinterでのGUI作成は自力で書けましたが, Google Speech-to-TextやOpen JTalk, VOICEROIDの部分は参考にしたコードのままです. それを上手い具合に組み合わせる作業は大変でしたが, 知見も広がったので楽しかったです.
この記事にはリンクが30個くらいあります. 自分で説明するよりも判りやすい記事が多いのでついURLを貼ってしまい, 気が付いたら内容の殆どがリンクになってしまいました. 技術系記事というより活動報告の面が大きいのでお慈悲. 判りやすい記事を書いてくださる方々には本当に頭が上がりません. この場で感謝申し上げます.
以上が今回の内容となります. ご愛読ありがとうございました!ゆんらべ先生の次回作にご期待ください.