【自然言語処理】Skip-gramとCBOWの名前の由来とは?仕組みと違いをサクッと理解しよう

こんにちは。ゆうせいです。

最近、AIや機械学習の現場で、自然言語処理という言葉をよく耳にしませんか。人間が普段話している言葉をコンピュータに理解させる技術ですが、その基礎となる技術に Word2Vec というものがあります。

勉強を始めると必ず出てくるのが、Skip-gram と CBOW という2つの手法です。

なんだか呪文のような名前で、最初につまずいてしまう方も多いのではないでしょうか。でも、安心してください。実はこの名前、それぞれの仕組みをそのまま表しているだけなのです。

今回は、この不思議な名前の由来を紐解きながら、それぞれの仕組みや特徴について、専門用語を交えつつ高校生でもわかるように解説していきます。

言葉を計算できるようにする Word2Vec

本題に入る前に、少しだけ前提となるお話をさせてください。コンピュータは言葉の意味を直接理解することはできません。コンピュータにとって言葉はただの記号の羅列でしかないのです。

そこで、言葉を数字の列、つまり ベクトル に変換する必要があります。言葉をベクトルに変換することで、たとえば王様引く男足す女は女王といった計算ができるようになります。これを単語の分散表現と呼びます。

この変換を上手に行うための技術が Word2Vec であり、その中にある2つのアプローチが CBOW と Skip-gram なのです。では、それぞれの名前の秘密に迫っていきましょう。

CBOW:袋の中に言葉を詰め込んで

まずは CBOW です。これは Continuous Bag-of-Words の頭文字を取ったものです。

ここで注目してほしいのが Bag-of-Words という言葉です。直訳すると 言葉の袋 ですね。想像してみてください。文章の中に登場する単語を、順番など気にせずに袋の中にポイポイと放り込んでいく様子を。

袋の中で単語が混ざり合うと、元の文章でどの順番で並んでいたかはわからなくなりますよね。でも、何が何個入っているかという情報は残ります。これが Bag-of-Words の考え方です。

CBOW は、この考え方を応用しています。

周囲から真ん中を当てる穴埋めクイズ

CBOW の仕組みは、穴埋めクイズに似ています。ある単語の周りにある単語たち(文脈と言います)を使って、真ん中にある単語を予測するのです。

たとえば、今日は美味しい \bigcirc\bigcirc を食べた という文章があったとしましょう。この \bigcirc\bigcirc の部分を、周りの 今日 は 美しい 食べた という単語たちから推測させるのです。

周りの単語を袋(Bag)にまとめて入力として使い、その連続的な(Continuous)情報から真ん中を予測する。だから Continuous Bag-of-Words と呼ばれているのです。

CBOWのメリットとデメリット

CBOW の最大のメリットは、計算の速さです。周りの単語を全部足し合わせて平均をとってから予測するため、処理がシンプルで高速に学習が進みます。

一方で、デメリットもあります。袋の中で単語を混ぜてしまうため、語順の情報が失われやすいのです。また、あまり登場しない珍しい単語の意味を捉えるのは少し苦手としています。

Skip-gram:言葉を飛び越えてつながりを探す

次は Skip-gram です。名前の響きからして、何かをスキップしそうですよね。

この名前は、N-gram(エヌグラム) という概念が元になっています。N-gram とは、隣り合うN個の文字や単語のまとまりのことです。たとえば、明日天気になれ という文を2文字ずつ区切ると、明日 日天 天気 気に... となりますね。これが通常の N-gram です。

しかし Skip-gram は、その名の通り、途中の単語を スキップ(飛び越す) してつながりを作ります。

真ん中から周囲を予測する逆転の発想

Skip-gram の仕組みは、CBOW とは真逆です。真ん中にある単語から、その周りにどんな単語が来るかを予測します。

先ほどの例で言えば、ラーメン という単語を入力したときに、周りに 美しい や 食べた という単語が出現する確率を計算するのです。

単語をスキップしながら離れた単語同士の結びつきも学習するため、文全体の構造をより深く捉えることができます。

Skip-gramのメリットとデメリット

Skip-gram のメリットは、精度の高さです。特に、登場回数の少ないレアな単語や、多義語の意味を学習する能力に優れています。一つひとつの単語のペアを丁寧に学習していくため、言葉のニュアンスを細かく捉えることができるのです。

しかし、丁寧な学習をする分、デメリットとして計算コストが高くなってしまいます。CBOW に比べると、学習に時間がかかることは覚悟しなければなりません。

結局、どちらを使えばいいの?

ここまで読んで、結局どっちを使えばいいのと迷ってしまいますよね。表にまとめて整理してみましょう。

特徴CBOWSkip-gram
名前の由来Continuous Bag-of-Words(言葉の袋)Skip + N-gram(言葉を飛ばして繋ぐ)
予測の方向周囲 \rightarrow 中心中心 \rightarrow 周囲
計算速度速い遅い
得意なこと頻出単語の処理、大量のデータ珍しい単語の処理、意味の精緻さ

一般的には、データの量が十分にあり、言葉の微妙な意味の違いまでしっかり学習させたい場合は Skip-gram を選ぶことが多いです。逆に、とにかく急いで学習させたい場合や、一般的な単語の意味がわかれば十分という場合は CBOW が適しています。

まとめと次のステップ

いかがでしたか。

袋に詰めて混ぜてしまう CBOW と、スキップしながら丁寧に関係を見る Skip-gram。名前の由来を知ることで、それぞれのアルゴリズムがどのように言葉を学習しているのか、イメージが湧いてきたのではないでしょうか。

専門用語は難しく感じますが、こうして分解してみると案外シンプルなアイデアから生まれているものです。

さて、理論がわかったら次は実践です。

Python というプログラミング言語には、Gensim という便利なライブラリがあります。これを使えば、わずか数行のコードを書くだけで、実際に Word2Vec を動かして Skip-gram や CBOW を試すことができます。ぜひ、自分の好きな小説やニュース記事を読み込ませて、言葉の計算を楽しんでみてください。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。