自然言語処理の核心:シーケンス学習

自然言語処理の核心:シーケンス学習

人生におけるすべてのことは時間と関連しており、連続性を形成しています。シーケンシャルデータ(テキスト、音声、ビデオなど)の場合、ニューラルネットワークを使用してシーケンス全体をインポートできますが、この方法ではデータ入力サイズが固定され、制限が明らかになります。重要なタイミング機能イベントが入力ウィンドウの外側に発生すると、より大きな問題が発生します。したがって、必要なのは次のものです。

  1. 任意の長さのシーケンスを要素ごとに読み取ることができるニューラル ネットワーク (たとえば、ビデオは単なる画像のシーケンスであり、ニューラル ネットワークに一度に 1 つの画像を入力します)。

  2. メモリを備えたニューラル ネットワークは、数ステップ前のイベントを記憶できます。これらの問題とニーズにより、さまざまなリカレント ニューラル ネットワークが生まれました。

図 1: 長短期記憶 (LSTM) ユニット。 LSTM には 4 つの入力重みと 4 つの再帰重みがあります。ピープホールは、メモリセルとゲート間の追加の接続ですが、パフォーマンスの向上には役立たないため、無視されることがよくあります。


リカレントニューラルネットワーク

通常のニューラル ネットワークで 2 つの数値を加算する問題を解くには、2 つの数値を入力し、その 2 つの数値の合計を予測するようにトレーニングするだけです。足し算する数字が 3 つある場合は、次のようになります。

  1. ネットワーク アーキテクチャを拡張し、入力と重みを追加して再トレーニングします。

  2. 最初の出力 (2 つの数値の合計) と 3 番目の数値を入力として受け取り、ネットワークに返します。

ネットワーク全体の再トレーニングを避けたいので、解決策 (2) の方が明らかに優れています (ネットワークは 2 つの数値を加算する方法をすでに「知っている」ため)。最初に 2 つの数値を加算し、次に 2 つの異なる数値を減算するというタスクの場合、このソリューションは機能しません。追加の重みを使用したとしても、正しい出力が保証されるわけではありません。代わりに、「プログラムを修正」して、ネットワークを「加算」から「減算」に変更してみることもできます。これは、ネットワークのカーネルが新しい入力ごとに変化するように、隠れ層に重み付けすることによって実現されます (図 2 を参照)。ネットワークは、2 つの数値を加算した後、手順を「加算」から「減算」に変更することを学習し、問題を解決します。

このアプローチを一般化して、ネットワークに 2 つの数値を渡し、その後に数学演算「加算」、「減算」、または「乗算」を表す「特別な」数値を渡すこともできます。これは実際には完璧ではないかもしれませんが、一般的に正しい結果を得ることができます。しかし、ここでの主な問題は正しい答えを得ることではなく、任意の入力シーケンスに対して特定の出力を学習するようにリカレント ニューラル ネットワークをトレーニングできることです。これは非常に強力です。

たとえば、ネットワークに単語のシーケンスを学習するように教えることができます。 Soumith Chintala と Wojciech Zaremba は、自然言語処理における RNN の使用に関する優れたブログ記事を書きました。 RNN はシーケンスの生成にも使用できます。 Andrej Karpathy 氏は、単語レベルの RNN がシェイクスピアから Linux ソース コード、子供の名前の付け方まで、幅広い文学スタイルを模倣できる方法を示した、興味深く活気のあるブログ記事を書きました。


長短期記憶 (LSTM)

LSTM ユニットは、定数重み 1.0 を持つ自己接続線形ユニットを使用します。これにより、自己ループに流入する値(順方向伝播)または勾配(逆方向伝播)は変更されないまま(1.0 倍された入力またはエラーは同じまま、前のタイム ステップでの出力またはエラーは次のタイム ステップでの出力と同じ)、すべての値と勾配を必要なときに正確に呼び戻すことができます。この自己循環ユニットであるメモリセルは、いくつかの過去の時間ステップに有効な情報を保存できるメモリ機能を提供します。これは、LSTM が前の段落の情報を格納し、その情報を現在の段落のシーケンスに適用できるテキスト データなどの多くのタスクに非常に効果的です。

さらに、ディープ ネットワークで非常によく見られる問題は、「勾配消失」問題と呼ばれ、層の数が増えるにつれて勾配がどんどん小さくなるという問題です。 LSTM のメモリ セルでは、勾配の連続的なフロー (エラーは同じまま) が存在するため、勾配消失の問題が解消され、数百の時間ステップに及ぶシーケンスの学習が可能になります。

しかし、古い情報を捨てて、より関連性の高い新しい情報に置き換えたい場合もあります。同時に、無効な情報を公開してネットワークの残りの部分に干渉することは望ましくありません。この問題を解決するために、LSTM ユニットには、ネットワークに情報を公開せずに自己ループ ユニット内の情報を削除する忘却ゲートが備わっています (図 1 を参照)。忘却ゲートは、メモリセル内の値に 0 から 1 までの数値を掛け合わせます。0 は忘却を意味し、1 はそのまま保持することを意味します。具体的な値は、現在の入力と前のタイムステップの LSTM ユニット出力によって決まります。

また、場合によっては、メモリセルを複数のタイムステップにわたって変更せずに維持する必要があるため、LSTM は別のゲート、入力ゲート (または書き込みゲート) を追加します。入力ゲートが閉じられている場合、新しい情報は流入せず、元の情報は保護されます。

別のゲートは、メモリセルの出力値に 0 (出力を消去) から 1 () までの数値を掛けます。これは、複数のメモリが互いに競合している場合に役立ちます。1 つのメモリセルは「私のメモリは非常に重要です。だから今解放します」と言うかもしれませんが、ネットワークは「あなたのメモリは重要ですが、今は他にももっと重要なメモリセルがあるので、あなたの出力ゲートに小さな値を与え、他のゲートに勝つように大きな値を与えます」と言うかもしれません。

LSTM ユニットの接続方法は、最初は少し複雑に思えるかもしれません。理解するには時間がかかります。しかし、各コンポーネントを個別に調べると、その構造は実際には通常の再帰型ニューラル ネットワークと変わらないことがわかります。入力と再帰重みはすべてのゲートに流れ、自己再帰型メモリ セルに接続されます。

LSTM をより深く理解し、アーキテクチャ全体を知るには、「LSTM: A Search Space Odyssey」とオリジナルの LSTM 論文を読むことをお勧めします。


単語埋め込み

図 3: レシピの 2 次元単語埋め込み空間。ここでは、「南ヨーロッパ」クラスターを拡大表示しています。

「猫」という言葉と、「猫」に関連する他のすべての言葉を想像してみてください。「子猫」や「ネコ科の動物」を思い浮かべるかもしれません。 「ライオン」、「トラ」、「犬」、「動物」など、「車」とはあまり似ていないが、はるかに似ている単語や、「喉を鳴らす」、「ニャーニャー鳴く」、「眠る」などの動詞を考えてみましょう。

もう一度、3次元空間を想像してください。その中央に「猫」という単語を置きます。上記の単語のうち、「cat」に似た単語も空間的に近く、例えば、「kitty」と「feline」は中心に非常に近く、「tiger」と「lion」は少し離れ、「dog」はさらに離れ、「car」はどこにあるかわからないほど離れています。この単語が 2 次元空間に埋め込まれている例については、図 3 を参照してください。

ベクトルを使用して空間内の各単語を表す場合、各ベクトルは 3 つの座標で構成されます。たとえば、「cat」は (0, 0, 0)、「kitty」は (0,1, 0,2, -0,3)、「car」は (10, 0, -15) になります。このベクトル空間は単語埋め込み空間であり、各単語に対応する 3 つの座標をアルゴリズムの入力データとして使用できます。

典型的な単語埋め込み空間には数千の単語と数百の次元が含まれており、人間が直感的に理解するのは困難ですが、類似した単語は近いという規則は依然として当てはまります。これは、機械が自然言語処理能力を向上させるのに適した語彙表現です。

単語埋め込みと、それを使用して言語を「理解する」モデルを作成する方法について詳しく知りたい場合は、Soumith Chintala と Wojciech Zaremba による「Understanding Natural Language with Deep Neural Networks Using Torch」を読むことをお勧めします。


エンコードとデコード

しばらく自然言語処理について考えるのをやめて、トマトとそれに合う食材や料理を想像してみましょう。あなたのアイデアがインターネットで最も一般的なレシピに似ている場合、チーズやサラミ、パルメザンチーズ、バジル、マカロニ、またはオリーブオイル、タイム、パセリなどの材料を思い浮かべるかもしれません。 (中国人が考えるなら、間違いなく卵でしょう)。食材は主にイタリア料理と地中海料理です。

それは同じトマトです。メキシコ料理といえば、豆、トウモロコシ、ピーマン、コリアンダー、アボカドを思い浮かべるかもしれません。

今考えたのは、「トマト」という単語の表現を、「メキシコ料理のトマト」という新しい表現に変更することでした。

「エンコーダー」も同じことを行います。単語の表現を変更することで、入力された単語を 1 つずつ新しい「思考ベクトル」に変換します。 「トマト」に「メキシコ料理」というコンテキストを追加するのと同じように、これが「エンコード-デコード」アーキテクチャの最初のステップです。

エンコーダー/デコーダー アーキテクチャの 2 番目のステップは、同じものを説明するために使用される単語がまったく異なる場合でも、異なる言語が単語埋め込み空間で同様の幾何学的構造を持つという事実に基づいています。たとえば、ドイツ語では「猫」は「Katze」、「犬」は「Hund」で、英語とはまったく異なりますが、2つの単語の関係は実際には同じです。 Karze と Hund の関係は、Car と Dog の関係とまったく同じです。つまり、言葉そのものは違っていても、その背後にある「思考のベクトル」は同じなのです。もちろん、他の言語で表現するのが難しい単語(中国語の「運命」という単語など)もありますが、これは比較的まれであり、一般的に当てはまります。

上記のアイデアに基づいて、デコード ネットワークを構築できます。英語のエンコーダーによって生成された「思考ベクトル」をドイツ語のデコーダーに渡します。ドイツ語のデコーダーは、これらの思考ベクトルまたは関係変換をドイツ語の単語埋め込み空間にマッピングし、英語の文の関係を維持する文を生成します。今、私たちは翻訳を行うことができるネットワークを持っています。このアイデアはまだ開発中ですが、結果は完璧ではありませんが、急速に改善しており、すぐに翻訳の最良の方法になるでしょう。

<<:  人工知能の分野でどのように計画するか? マイクロソフトはこうする

>>:  ビッグデータの発展は、ソフトウェアエンジニアの漸進的な衰退とアルゴリズムエンジニアの台頭を伴うことになる。

ブログ    

推薦する

520 開発者のバレンタインデー: 全プラットフォームで 35 の PaddlePaddle アップグレード「Show AI」

「新インフラ」は中国の「産業インテリジェンス」に強力な新たな原動力をもたらした。インテリジェント時...

過度な「遊び」が子どもたちのプライバシーを侵害し、自尊心を傷つける恐れがあるとして、人工知能がキャンパスに導入される

最近、香港で株式公開を準備しているAI大手のMegvii Technologyが論争を巻き起こしてい...

...

ハッシュアルゴリズムに基づくMySQLテーブルパーティション

以下に紹介する Mysql テーブルのパーティショニング プロセスは、ハッシュ アルゴリズムに基づい...

...

サイバーセキュリティにおける AI と機械学習の 7 つのプラスとマイナスの影響

人工知能 (AI) と機械学習 (ML) のテクノロジーは、サイバーセキュリティを含め、今や私たちの...

機械学習のための数学をどのように学ぶのでしょうか?

機械学習では数学が非常に重要です。アルゴリズムにおけるモデルコードの理解と、エンジニアリングにおける...

ヨーロッパは大規模な国際顔認識システムを構築中

過去15年間、欧州で犯罪者を追う警察は、指紋、DNAデータ、自動車所有者の詳細を相互に共有することが...

...

...

我が国のドローン産業の発展の現状と課題の分析

[[422841]]ドローンは我が国の現在の戦略的新興産業の一つであり、近年、技術、製品、アプリケー...

資本が投資している人工知能は本当に人工知能なのでしょうか? 3分で機械学習とは何かを理解する

この記事は2300語で、3分ほど読むことをお勧めします。人工知能の機械学習が実際にどのように学習する...

百度のCTO王海鋒が百度ブレイン7.0をリリース: イノベーションを統合し障壁を下げる

火星の環境について知りたいですか?たった一文であなた自身のデジタル人物を生成したいですか?こうした最...

壁につかまることを学んだロボット:私を落とすことはできない

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...