AI-For-Beginners/translations/ja/lessons/5-NLP/17-GenerativeNetworks
localizeflow[bot] 52d3c08120 chore(i18n): sync translations with latest source changes (final snapshot) 2026-01-30 01:25:08 +00:00
..
lab chore(i18n): sync translations with latest source changes (final snapshot) 2026-01-30 01:25:08 +00:00
GenerativePyTorch.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
GenerativeTF.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
README.md chore(i18n): sync translations with latest source changes (final snapshot) 2026-01-30 01:25:08 +00:00

README.md

生成ネットワーク

講義前のクイズ

リカレントニューラルネットワークRNNとそのゲート付きセルのバリエーション例えば、長短期記憶セルLSTMやゲート付きリカレントユニットGRUは、単語の順序を学習し、次の単語を予測することで言語モデルを構築する仕組みを提供します。これにより、RNNを使用して生成タスクを実行することが可能になります。例えば、通常のテキスト生成、機械翻訳、さらには画像キャプション生成などです。

テキスト入力中の補完機能など、生成タスクから恩恵を受けた経験を思い出してみてください。お気に入りのアプリケーションがRNNを活用しているかどうか調べてみましょう。

前のユニットで説明したRNNアーキテクチャでは、各RNNユニットが次の隠れ状態を出力として生成しました。しかし、各リカレントユニットにもう一つの出力を追加することで、シーケンス元のシーケンスと同じ長さを出力することが可能になります。さらに、各ステップで入力を受け取らず、初期状態ベクトルだけを受け取り、出力シーケンスを生成するRNNユニットを使用することもできます。

これにより、以下の図に示されるようなさまざまなニューラルアーキテクチャが可能になります:

一般的なリカレントニューラルネットワークのパターンを示す画像

画像は Andrej Karpaty のブログ記事 Unreasonable Effectiveness of Recurrent Neural Networks より引用

  • One-to-one は1つの入力と1つの出力を持つ従来のニューラルネットワーク
  • One-to-many は1つの入力値を受け取り、出力値のシーケンスを生成する生成アーキテクチャ。例えば、画像キャプション生成ネットワークを訓練する場合、画像を入力として受け取り、CNNを通じて隠れ状態を取得し、その後リカレントチェーンが単語ごとにキャプションを生成します。
  • Many-to-one は前のユニットで説明したRNNアーキテクチャに対応し、例えばテキスト分類など
  • Many-to-many または sequence-to-sequence は、例えば機械翻訳のようなタスクに対応。最初のRNNが入力シーケンスから隠れ状態に情報を集め、別のRNNチェーンがこの状態を展開して出力シーケンスを生成します。

このユニットでは、テキスト生成を助けるシンプルな生成モデルに焦点を当てます。簡単のため、文字レベルのトークン化を使用します。

このRNNを訓練してステップごとにテキストを生成します。各ステップで、ncharsの長さの文字列を取り、ネットワークに各入力文字に対して次の出力文字を生成させます:

単語 'HELLO' を生成するRNNの例を示す画像

テキスト生成(推論中)では、まずプロンプトを使用し、それをRNNセルに通して中間状態を生成します。その後、この状態から生成が始まります。1文字ずつ生成し、状態と生成された文字を次のRNNセルに渡して次の文字を生成します。このプロセスを繰り返して十分な文字数を生成します。

画像は著者によるもの

✍️ 演習: 生成ネットワーク

以下のノートブックで学習を続けてください:

ソフトテキスト生成と温度

各RNNセルの出力は文字の確率分布です。生成されたテキストの次の文字として常に最も高い確率の文字を選ぶと、以下の例のように同じ文字列が繰り返されることがあります

today of the second the company and a second the company ...

しかし、次の文字の確率分布を見ると、いくつかの最も高い確率の間の差がそれほど大きくない場合があります。例えば、ある文字の確率が0.2で、別の文字が0.19である場合などです。例えば、'play'というシーケンスの次の文字を探す際、次の文字はスペースでもeplayerという単語のように)でも同じくらい適切です。

これにより、最も高い確率の文字を選ぶのが常に「公平」とは限らないという結論に至ります。2番目に高い確率の文字を選ぶことでも意味のあるテキストが生成される可能性があります。ネットワークの出力による確率分布から文字をサンプリングする方が賢明です。また、温度というパラメータを使用して確率分布を平坦化し、ランダム性を増やしたり、逆に分布を急峻にして最も高い確率の文字により忠実にすることもできます。

このソフトテキスト生成がどのように実装されているか、上記のノートブックで探求してください。

結論

テキスト生成はそれ自体で有用ですが、RNNを使用して初期の特徴ベクトルからテキストを生成する能力が大きな利点をもたらします。例えば、テキスト生成は機械翻訳sequence-to-sequence、ここではエンコーダの状態ベクトルを使用して翻訳されたメッセージを生成またはデコードや画像のテキスト説明生成この場合、特徴ベクトルはCNN抽出器から取得されるに使用されます。

🚀 チャレンジ

このトピックに関するMicrosoft Learnのレッスンを受けてみましょう

講義後のクイズ

復習と自己学習

知識を広げるためのいくつかの記事を紹介します:

課題

文字ごとのテキスト生成方法を学びました。ラボでは単語レベルのテキスト生成を探求します。