NPL実践シリーズ:6、簡単なニューラルネットワーク


1.テキスト表示:one-hotからword 2 vecへ
自然言語処理の分野ではone-hot,word 2 vecは2つの一般的な語ベクトルであり,以下ではこの2つの語ベクトルの原理と特性を紹介する.
1.1ワードベクトル
語ベクトルは言語の中の語を数学化するための方法であり、その名の通り、語ベクトルは1つの語を1つのベクトルに表すことである.このような初心は,機械が0 1記号しか認識していないこと,言い換えれば,自然言語処理において,機械に言語を認識させるには,自然言語を抽象的に機械に理解されるように表現する必要がある.したがって,語ベクトルは自然言語から機械言語への変換である.
1.2 one-hotベクトル
ワードベクトルは、one-hot representionで最初にキャラクタリゼーションされます.すなわち、ベクトル内の各要素は、ワードライブラリ内の単語に関連付けられています.指定されたワードのベクトルは、ベクトル内の対応する要素が1に設定され、他の要素が0に設定されていることを示します.この表現では語ベクトルを比較することができず,後に分布式キャラクタリゼーションが現れた.
word 2 vecでは分布式キャラクタリゼーションを採用し,ベクトル次元が比較的大きい場合,各語は要素の分布式重みで表すことができるため,ベクトルの各次元は単純な要素と値の間の1つ1つのマッピングではなく,すべての単語に作用する特徴ベクトルを表す.この方式は抽象的に一つの語の「意味」を表している.ベクトルの長さは辞書の大きさで、ベクトルの成分は1つしかなく、その他はすべて0で、1の位置は辞書の中の単語の位置に対して、例えば
マイクロホンは[0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...]
「マイク」は、[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...]
利点:まばらな方法で保存すると、非常に簡潔で、実現時に0,1,2,3,...で語を表す計算ができるので、「マイクロホン」は3、「マイク」は8である.
欠点:1.特にDeep Learningのいくつかのアルゴリズムに使用する場合、次元災害に悩まされやすい.2.どの2つの語も孤立しており、意味のギャップがある(いずれの2つの語の間にも孤立しており、語と語の関係を体現できない).
そのため、Hintonは1986年にDistributional Representationを提案し、one-hot representationの欠点を克服することができる.「語彙ギャップ」の問題を解決するには,ベクトル間の距離(欧米式距離,余弦距離など)を計算することによって語と語の類似性を体現することができる.
その基本的な考え方は,一般的に[0.792,−0.177,−0.107,0.109,−0.542,...]のように成長し,一般的な次元50または100を直接一般的なベクトルで表すことである.
利点:「語彙ギャップ」の問題を解決する
欠点:訓練は難しい.直接的なモデルは訓練できない.だから言語モデルを訓練すると同時に,語ベクトルを得る.
もちろん、一つの言葉がどのようにこのようなベクトルを表すかは訓練を経なければならない.訓練方法は多く、word 2 vecはその一つである.各語は異なるコーパスと異なる訓練方法の下で得られる語ベクトルが異なる可能性があることに注目すべきである.
1.3 word 2 vecベクトル
現在,語ベクトルを得るのに最もよく用いられる方法はword 2 vecである.word 2 vecはニューラルネットワークを訓練することによって,入力された語ベクトルとしてネットワークの重み行列を得た.よく使われるword 2 vecモデルは、CBOW(連続語袋モデル)、Skip-gramです.CBOW,Skip-gramの両者の違いは,CBOWはコンテキストによって中心語確率を予測し,Skip-gramモデルは中心語によってコンテキストの確率を予測することである.例えば、社会主義は良いが、CBOWに対しては「主義」を予測するには、入力は「社会」、「はい」、「はい」である.Skip-gramでは入力は「主義」で、出力は残りの数文字です.しかし、それらの同じ点は、この2つのアルゴリズム訓練の目標は、実際の出力語(焦点語)が所与の入力コンテキストで重みを考慮する条件確率を最大限に観察することである.例えば、上段の例では、「社会」、「はい」、「はい」を入力することで、アルゴリズムの目標はネットワークを訓練し、出力層で「主義」の条件確率を最大確率で得ることです.
2.FastTextに入る
2.1 FastTextの原理
fastTextアルゴリズムは監督されたモデルであり,CBOWアーキテクチャはよく似ており,CBOWはコンテキストによって中間語を予測し,fastTextはコンテキスト予測ラベル(このラベルはテキストのカテゴリであり,訓練モデルの前に人工的に表記するなどの方法で事前に決定されている)である.モデルアーキテクチャ上、fastTextはCBOWの単層ニューラルネットワークのモデルに沿っているが、fastTextの処理速度こそこのアルゴリズムの革新的なところである.fastTextモデルの入力は単語のシーケンス(テキストまたは一言)であり,出力はこの単語のシーケンスが異なるカテゴリに属する確率である.シーケンス内の語とフレーズは特徴ベクトルを構成し,特徴ベクトルは線形変換により中間層にマッピングされ,中間層からラベルにマッピングされる.fastTextでは予測ラベルに非線形活性化関数を用いたが,中間層では非線形活性化関数を用いなかった.このモデルは一連の単語を入力として定義済みクラスの確率分布を生成する.これらの確率を計算するためにsoftmax方程式を用いた.データ量が大きい場合,線形分類器の計算は非常に高価であるため,fastTextはホフマン符号化ツリーに基づく階層化softmax法を用いた.一般的なテキスト特徴表現方法はワードバッグモデルであるが,ワードバッグ(BoW)におけるワード順序は変わらないが,この順序を明確に考慮する計算コストは通常非常に高い.代わりに、fastTextはn-gramを使用して追加の特徴を取得し、局所語の順序に関する一部の情報を得る.fastTextでは、低次元ベクトルが各単語に関連付けられています.非表示キャラクタリゼーションは、異なるカテゴリのすべての分類器で共有され、テキスト情報が異なるカテゴリで共通に使用できるようにします.このような特徴付けは、語袋(bag of words)と呼ばれる(ここでは語順を無視する).fastTextでもベクトルキャラクタリゼーション語n-gramを用いて局所語順を考慮することは,多くのテキスト分類問題にとって非常に重要である.
2.2 FastTextモデルによるテキスト分類
以下で使用する語彙は清華大学のニューステキスト(ダウンロードアドレス:http://thuctc.thunlp.org/message)、FastTextモデルでテキスト分類を行います.
import fasttext.fasttext as ff


参考ブログ:https://zhuanlan.zhihu.com/p/26306795 https://blog.csdn.net/mawenqi0729/article/details/80698780 https://blog.csdn.net/jiede1/article/details/80803171 https://www.jianshu.com/p/e828f02e41c8