結論:word2vecのCBOWとSkip-gramは「予測の向き」が逆です。CBOWは周辺の単語から真ん中の単語を当て(速い・大きなデータ向き)、Skip-gramは真ん中の単語から周辺の単語を当てます(精度が出やすい・小さなデータやレアな単語に強い)。迷ったらまずSkip-gramで十分です。 どちらも最終的に手に入るのは同じ「単語の意味ベクトル」で、違うのは学習のさせ方だけ——ここを押さえると、両者の名前に惑わされなくなります。
この記事では、「ベクトル」「分布仮説」「中心語・周辺語」といった専門用語をひとつずつ説明しながら、CBOWとSkip-gramの違いと使い分けを初心者向けに解説します。
そもそもword2vecとは?
word2vec(ワード・トゥ・ベック)は、単語を「意味を保った数値の並び」に変換する手法です。単語をコンピュータが扱える数値にしておくと、「意味の近さ」を計算で求められます。
ベクトル …
[0.8, 0.1, 0.7, ...]のように数値を一列に並べたもの。単語を座標に置き換えるイメージです。「犬」と「猫」は近く、「犬」と「自動車」は遠い、という位置関係が数値で表せます。この数値化された表現を 分散表現 とも呼びます。
なぜ「まわりの単語」を手がかりにできるのでしょうか。それは word2vec が 分布仮説——「似た文脈に現れる単語は、似た意味を持つ」という考え方——に立っているからです。「犬」も「猫」も「かわいい」「飼う」「散歩」の近くに出てくるので、意味が近いと判断できる、というわけです。
用語の全体像は用語集にまとめてあります。あわせて word2vec(CBOW・Skip-gram)とは や 埋め込み(ベクトル)とは も参照してください。
word2vecの学習は「穴埋めクイズ」
word2vecは、文章を大量に読みながら ニューラルネットワーク に穴埋めクイズを解かせます。正解を当てられるように内部の数値(重み)を少しずつ調整し、学習が終わったころには、その重みが「単語の意味ベクトル」になっています。
中心語 / 周辺語 … いま注目している単語が 中心語、その前後に並ぶ単語が 周辺語 です。前後どこまでを「まわり」とみなすかの範囲を 文脈窓(ウィンドウ) と呼びます。ウィンドウが2なら、中心語の前後2単語ずつが周辺語です。
この「穴埋めクイズ」を どちら向きに出すか で、CBOWとSkip-gramに分かれます。例文「今日 は ◯ が 良い」で見ていきましょう。
CBOW:周辺語から中心語を当てる
CBOW(Continuous Bag-of-Words)は、周辺語をまとめて手がかりにして、真ん中の中心語を当てる方式です。
入力(周辺語): 今日 / は / が / 良い
↓ 予測
出力(中心語): 天気
まわりの4語ぜんぶをヒントに1語を当てるので、情報が多く、学習が速く安定します。「Bag-of-Words(言葉の袋)」という名前は、周辺語を袋にまとめて入れ、順番を気にせず一緒に使うところから来ています。
- 得意なこと … 大きなデータで 速く 学習する。よく出てくる単語で安定しやすい。
- 苦手なこと … あまり出てこない レアな単語 の表現が弱くなりがち。
Skip-gram:中心語から周辺語を当てる
Skip-gramは向きが逆で、真ん中の中心語1語から、周辺語を1つずつ当てる方式です。
入力(中心語): 天気
↓ 予測
出力(周辺語): 今日 / は / が / 良い
1語だけをヒントに、まわりの単語を何度も予測させます。1つの単語がたくさんのクイズに登場するため、出現回数の少ない単語でもしっかり学習が進みます。
- 得意なこと … レアな単語や小さなデータ でも精度が出やすい。
- 苦手なこと … クイズの回数が増えるぶん、学習が遅い。
CBOWとSkip-gramは、まさに矢印の向きが逆の関係です。図で並べると一目でわかります → word2vec(CBOW・Skip-gram)とは。
どちらを選ぶ? 早わかり比較
| CBOW | Skip-gram | |
|---|---|---|
| 予測の向き | 周辺語 → 中心語 | 中心語 → 周辺語 |
| 学習速度 | 速い | 遅い |
| 得意なデータ | 大きいデータ | 小さいデータ |
| レアな単語 | 苦手 | 得意 |
| ひとことで | まわりから穴埋め | 1語から周りを予測 |
迷ったらSkip-gram が無難です(多くの入門で既定として紹介されます)。データが非常に大きく、学習速度を優先したいときは CBOW も有力、という覚え方で十分です。
つまずきやすいところ
- 「CBOWとSkip-gramで別のツールを使うの?」ではない … どちらも同じ word2vec の学習方式で、切り替えるのはオプション1つです。出力(単語ベクトル)の使い方は同じです。
- one-hot(ワンホット)表現 … 学習の入り口では、単語をいったん「その単語の位置だけ1、他は全部0」という長いベクトルで表します。これはまだ意味を持たない“ただの番号”で、word2vecはこれを 意味のある短いベクトル(分散表現) に圧縮するのが仕事、と捉えると流れがつかめます。
- softmax の重さと Negative Sampling … 「全単語の中から正解を選ぶ」計算(softmax)は語彙が多いと重くなります。そこで実際には、正解と少数のハズレ語だけで学習を軽くする ネガティブサンプリング という工夫が使われます。名前だけ知っておけば入門段階では十分です。
ブラウザで「意味のベクトル」を体験する
word2vec そのものを動かすレッスンはありませんが、「文章を数値ベクトルにして、近さを測る」という同じ発想は、RAGコースでブラウザからそのまま実行できます(無料・環境構築なし)。CBOW/Skip-gramの気持ちを、手を動かして確かめるのに最適です。
- なぜ意味で探すのか、ベクトルの必要性から: なぜ「意味」で探すのか ― キーワード検索の限界とベクトル
- 文章をベクトルに変換して体験: テキストをベクトルに ― TF-IDFを体験する
- 「近さ」を数値で測る: コサイン類似度で「近さ」を測る
機械学習そのものの土台から積み上げたい人は、Python×AI(機械学習)コース をブラウザで動かしながら進めるのがおすすめです。
次に読む
- word2vec(CBOW・Skip-gram)とは|Wiki用語集 ― 用語をコンパクトに確認
- 埋め込み(ベクトル)とは ― word2vecが広めた「意味の数値化」
- ニューラルネットワークとは ― 穴埋めクイズを解く仕組み
- RAG(検索拡張生成)とは ― 「意味で探す」の応用先
- AI・機械学習の独学ロードマップ ― 何からどの順で学ぶか