2017-07-03 2 views
1

ワード埋め込みに関する質問はほとんどありません。 1.単語のワンホットベクトル、例えば[0 0 0 1 0]を埋め込みベクトルE = [0.2、0.4、0.2、0.2]に変換すると、各インデックス結果の単語ベクトル?たとえば、E [1]は0.2 ... ....具体的にE [1]が定義するものですが(私は基本的に別の空間への変換を知っていますが)....または単語ベクトルは集合的に文脈を定義しますが個別には定義しません... 2元のワンホットベクトルと比較して、ワードベクトルの次元がどのように重要になるか(縮小または増加) 3.埋め込み層に関してルックアップテーブルを定義するにはどうすればよいですか? 4.ルックアップテーブルは、ランダムに生成されたテーブルの一種であるか、データ内のデータインスタンスに対して別々に訓練されており、後でニューラルネットワーク操作で使用しますか? 5隠れ層に埋め込みベクトルを視覚化する方法はありますか?(画像ベースのニューラルネットワーク処理と同様) ありがとうございますワード埋め込み、ルックアップテーブル、ワード埋め込みビジュアリゼーション

答えて

0

1:埋め込みベクターの各要素(または要素のグループ)は意味がありますが、人間にとってはほとんど知られていません。どのアルゴリズムを使用するかによって、単語を埋め込むベクタは異なる意味を持ちますが、通常は便利です。 たとえば、Gloveという類似の語「frog」、「toad」は、ベクトル空間で互いに近くにとどまっています。王の男は女王のようなベクトルを生み出します。

  1. vocabをインデックスに変換します。たとえば、語彙リストがあります: [dog、cat、mouse、feed、play、with] 文章:cat => 0、4、5、1の犬の遊び

    [0.1、0.1、0]#のコメント:これは犬
    [0.2、0.5、0.1]は#これは猫
    [...]
    [...]
    [です... ]
    [...]

ここで、最初の行はdogの埋め込みベクトル、2番目の行はcatです。 次に、ルックアップが行列[[0.1、0.1、0] [..]になると、インデックス(0、4、5、1) ..] [...] [0.2、0.5、0.1]

  • いずれかまたは両方
    • ことはできランダムベクトルを埋め込み、勾配降下
    • とそれを訓練INIT
    • 事前に訓練された単語ベクトルを使用して固定しておくことができます(つまり、読み取り専用、変更なし)。 単語ベクトルをモデルで訓練し、別のモデルで使用することができます。私たちはオンラインで事前に単語ベクトルをダウンロードすることができます。例一般的なクロール(840Bトークン、2.2Mの単語、同棲、300Dベクトル、2.03ギガバイトのダウンロード):glove.840B.300d.zip Glove
    • にあなたが急降下して、モデルとpretrained単語ベクトルと列と
    • を初期化することができます
  • 更新:すべての情報が含まれていない ワンホットベクトル。ワンホットベクトルは、語彙の中でそのベクトルのインデックスであると考えることができます。 たとえば、Dog => [1,0,0,0,0,0]、cat => [0,1,0,0,0,0]となります。ワンホットの間に、いくつかの異なるが、インデックス対あります

    • は、あなたの入力インデックスのリスト場合:[0、4、5、1]あなたの多層パーセプトロンに、それは何かを学ぶことができない(私が試してみました。 ..)。しかし、1ホットベクトルの行列[[... 1] [1 ...] [...] [...]]を入力すると、何かを学ぶことができます。しかし、それはRAMとCPUの面で高価です。

    • ワンホットコストは、ゼロを格納するための多くのメモリです。したがって、私はあなたが1つも持っていなければランダムに初期行列を埋め込むことを提案します。指標としてストアデータセット、およびルックアップテーブルは、それぞれの埋め込まれたベクトル (すでにword2vec経由で別々に訓練を受けたり...して)のちょうど行列であることをその平均」ベクター

    を埋め込むルックアップするためにインデックスを使用ニューラルネットワークの過程で我々は のいずれかの埋め込み層を使うことができます。または ルックアップテーブルで埋め込みベクトルを特定の ワンホットベクトルに対して参照することができます。

    ルックアップテーブルでルックアップするには、 "INDEX"を使用します。犬を0に、猫を1に変えてください.1つのベクトルとインデックスには同じ情報が含まれていますが、記憶には1つのコストがかかります。また、ディープラーニングフレームワークの多くは、層埋め込むへの入力としてインデックスを受け入れる(出力ベクトルはそのインデックス内の単語を表している、。)

    「私たちは、この埋込みベクトルを取得する方法...」

    =>用紙を読んでください。ここにはWord2vecGloveについての論文があります。詳細については、あなたの講師に尋ねてください、彼らはあなたを助けてくれるでしょう。

    +1

    この詳細な説明のためのThanx:あなたの答えについては、私はまだそれを明確にする必要があります。 1-私たちは密集したベクトルや埋め込まれたベクトルの値を大切にしてはいけません(ここでは、犬のベクトルは[0.1,0.1,0]だけで "0.1"は他のすべてのインデックス値と一括して表示していません)。 word2vecや他のものからの1つのホットベクトルごとにこの埋め込みベクトルを得る方法(1ホットベクトルの値を微調整できないため、隠れた層の訓練されたウェイト)または??? –

    +1

    2 - ルックアップテーブルは、語彙の各単語について埋め込まれたベクトルの行列(すでにword2vecまたは...を介して別々に訓練されている)の行列に過ぎません。ニューラルネットワークの過程では埋め込み層を使うことができますが、特定のワンホットベクトルに対する特定の埋め込みベクトルのルックアップテーブルの埋め込みベクトルを参照することもできます。 –

    関連する問題