引き続いて、Generative Deep Learning [1] の 9章 Transformers のサンプル (gpt.ipynb)[2]を実行。
これは、種々のワインのレビュー文をGPTモデルで学習して、ワインのレビュー文章を生成してみるというもの。
これは、種々のワインのレビュー文をGPTモデルで学習して、ワインのレビュー文章を生成してみるというもの。
fitにかかった時間は、GPU (RTX A2000)を使って7分ほどだった。
生成される文章は例えば、「wine review : germany」と与えて、その先を生成させると「wine review : germany : mosel : riesling : smoke and mineral tones lend a savory tone to this intensely fruity riesling . it ' s intensely concentrated with flavors of sweet tangerine and orange , but it ' s a lip - smackingly juicy , full - bodied riesling .」といった文章が生成される。
生成される文章は例えば、「wine review : germany」と与えて、その先を生成させると「wine review : germany : mosel : riesling : smoke and mineral tones lend a savory tone to this intensely fruity riesling . it ' s intensely concentrated with flavors of sweet tangerine and orange , but it ' s a lip - smackingly juicy , full - bodied riesling .」といった文章が生成される。
生成の経緯を見るとwine review : germany : の続きはワインの銘柄が来る場所で単語選びにも germany が重視された結果 mosel が選ばれている。
その先に進んで、smoke and の続きを選ぶ場合は smokeを重視しているが、smoke and mineral の次を選ぶ場合は wine review であることや germany も考慮しての選択となっている。
以前に実行したLong Short Term Modelでは、これまで全体として何を語ってきたのかを示すlong term の情報と今を語りかけているのかを示すshort term の情報を常に同じ重さで扱って単語を綴っている。そのためだろう、生成している文章が長くなってくると次第に文章がおかしくなってゆく。
Transformerでは、位置の情報を組み合わせることで、直前の言葉から流れのままに綴るところとそもそも何を語っているのかに立ち戻って言葉を選ぶところが組み合わせれ、生成する文章が長くなっても破綻しにくいと理解した。
さてサンプルでは、ドイツ産のほかに US産やイタリア産ワインのレビュー文を生成させているが、架空のジオン公国産 についてレビュー文を生成させたらどうなるだろうか。試した結果はこのとおり。産地としては歴史が浅いのだなあ(w)
wine review : zeon : [UNK] : cabernet sauvignon : this is a bold , ripe and full - bodied expression of the variety ' s characteristically cabernet sauvignon . aromas of blackberry , plum and cassis , with a touch of wood smoke and spice , while the wine is still young and needs time to open up . drink from 2018 .
なお、[UNK] は学習データ中にあった未知語. ここはワインの名称が来るとところだが、どの単語も尤度が低すぎた結果として 未知語が選ばれてしまったのだろう。だが、その後に cabernet sauvignonが改めて選ばれて、カベルネ・ソーヴィニヨン を軸にレビュー文が組み立てられたようだ。
[1] Generative Deep Learning, 2nd Edition by David Foster, Released May 2023, Publisher: O'Reilly Media, Inc. ISBN: 9781098134181
[2] https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition