Wolfram言語

英語をモデル化するようにネットを訓練する

この例では,回帰ニューラルネットワークを訓練して英語のテキストを生成する方法を示す.

まず,2つの小説から取った,25文字の訓練例を30万例作成する.

データのサンプルを取る.このデータは,「文字列が与えられると次の文字を予測する」という分類問題の形式になっている.

テキストに含まれるすべての文字のリストを得る.

文字列全体を一度に予測するネットを構築する.LinearLayerの前にSequenceLastLayerを使うのではなく,NetMapOperatorが使われている点に注意のこと.結果として,このネットは,単に文字列の最後の文字を予測するのではなく,各文字について文字列中の次の文字を同時に予測する.

次に,対象となる文を取ってこれをネットワークに「ずらした」形式で提示する,「教師強制」ネットワークを構築する.つまり,長さ26の文について,ネットが2から26までの文字についての予測ができるように,1から25までの文字を提示する.予測は,損失を生むために,CrossEntropyLossLayerを介して実際の文字と比較される.

このネットをもとのデータからの入力列について訓練する.

結果から予測チェーンを抽出する.

ここから1文字の予測チェーンを構築する.

予測子を検証する.

効率的にテキストを生成するためにNetStateObjectを作成する.

ネットワークが学んだ分布に基づいて200文字を生成する.生成されたテキストは英語と類似しているが,小さいコーパス(約2百万文字)で訓練されたために,単語の多くは英語ですらない.

約10億文字で訓練された同様のネットと比較する.

関連する例

de en es fr ko pt-br zh