自然言語処理における「単語の数値化」の手法について。
AI・ディープラーニングの全体像
- 人工知能
- 機械学習
- ディープラーニングの基本・応用
- ディープラーニングの研究
- AIプロジェクト
- AI社会実装に伴う法律・倫理
自然言語処理における「単語の数値化」
One-Hotベクトル表現
- 「One-Hotベクトル」→全要素のうち、1つだけ「数値1」・残りはすべて「数値0」とするベクトル
STEP
トークン化
- 形態素解析を行う
- 同じ単語には同じ「ID(トークン)」を割り当てる
STEP
One-Hotベクトルに変換
- ユニークの単語の数と同じ次元のベクトルを用意
- 各単語に対し、IDに対応する成分のみに「1」、それ以外のインデックスすべてに「0」を割り当てる
- 1つの単語と1つのベクトルが、1対1の関係となる
ただし、単語の意味や関係性は表現できない、単語の種類分ベクトルの次元数が膨大となるため計算コストが急増する、などの問題が生じる
単語分散表現
- 単語「分散表現(Distributed Representation)」→適切な演算を行う変換行列を用い、単語を低次元の密な数値ベクトルに変換した表現
- 各単語をベクトル空間上の点として捉えており、意味が近い単語同士はベクトル空間上で距離の近い座標点に対応している
- 単語の意味や類似性を、「ベクトルの演算」を通じ、表現できる
- 単語分散表現→単語をベクトル空間に埋め込む→「単語埋め込み(Word Embedding)」
- 数値ベクトルを計算する変換行列→「埋め込み層」
- 対比して、One-Hotベクトルは、1対1対応のため、「局所表現」と呼ばれる
局所表現 (One-Hotベクトル表現) | 分散表現 | |
---|---|---|
単語ベクトルの特徴 | 「高次元」「スペース(0)が多い」 | 「低次元」「密」 |
表現力 | ・すべての単語を独立に扱う ・単語の意味や関係性を表現できない | ・ベクトル空間上で表現 ・単語の意味や他単語との類似性をベクトル演算で求める |
Word2Vec
- 「コーパス」→自然言語処理のための大規模テキストデータ
- 「Word2Vec」→2013年、トマス・ミコロフによって提案される
- 現実的な時間で大規模なテキストデータの処理が可能になる
- 2層のニューラルネットワークのみで構成される
- ニューラルネットワークの隠れの重みの最適化を通じ、単語ベクトルを学習する
- 具体的な学習課題を与える必要がある
- 隠れ層が獲得する特徴表現は、単語の意味表現に対応する
- 計算が速く、精度がよい
- ベクトルの足し算・引き算を通じ、”単語の意味の近さ”を定量的に表現可能
- 複合句に対応可能
- 単語の意味を周辺の単語から推測可能
スキップグラム (Skip-gram) | ある単語を与え、周辺の単語を予測するモデル |
---|---|
CBOW (Continuous Bag of Words) | 周辺の単語を与え、ある単語を予測するモデル |
単語分散表現を計算する手法
カウントベース手法 | ・単語の出現頻度によって単語を表現する方法 ・テキストデータに対し、統計処理(特異値分解;Singular Value Decomposition)を施す ・計算コストが大きい ・従来の分散表現の計算法 |
---|---|
推論ベース手法 | ・ニューラルネットワークの効率的な学習法を取り入れている ・現実的な計算時間での単語ベクトルの計算を可能にした ・Word2Vec |
Word2Vecの学習課題
いずれも、”前後の単語を何個使うか(=windowの幅)”について、モデルごとに判断。
出力層において、各単語の確率スコアを出力する際、”ソフトマックス関数などの確率値を表せる活性化関数”を使用。
スキップグラム(Skip-gram)
- ある単語を与えて、その周辺の単語を予測するモデル
- ”中心語”を与え、前後の一定範囲内の”周囲語”が存在するか推定
- ニューラルネットワークの教師あり学習
→正解ラベルはwindow内に対象単語があれば1、存在しなければ0 - 未知データ→window内に推測対象の単語が含まれる確率を算出・出力
CBOW(Continuous Bag of Words)
- 周辺の単語を与えて、中心になる単語を予測するモデル
- ”周囲語”を入力し、”中心語”が何であるかを推定
- ニューラルネットワークの教師あり学習
→入力となる周辺語の単語を手がかりに、予測対象である中心語が表れる条件付き確率を最大化する学習を行う