「単語の意味を数値ベクトルで表す」——現代の自然言語処理を支えるこのアイデアを一気に広めたのがword2vecで、その学習方式の1つがCBOWです。この記事では、CBOWがどうやって単語の意味を学ぶのか、そして対をなすSkip-Gramや、名前の似たBoWとの違いを解説します。

📖 ひと言でいうと

CBOW(Continuous Bag-of-Words)とは、「周辺の単語から真ん中の単語を当てる」という穴埋め問題を大量に解かせることで、単語の分散表現(意味を反映した数値ベクトル)を学習するモデルです。人間でも「毎朝[ ]を飲む」と聞けばコーヒーやお茶を思い浮かべられるように、周りの単語には中心の単語を推測させる情報が含まれています。CBOWはこの性質を利用して、予測の練習の副産物として「単語の意味ベクトル」を手に入れます。

🖼 1枚でわかるCBOW

CBOW — 周辺の単語から中心の単語を予測
  • 目的 — 単語の分散表現(意味ベクトル)を学習する。word2vecの方式の1つ
  • 仕組み — 周辺語(コンテキスト)を入力し、中心語を予測する3層構造
  • 入出力 — 入力はone-hotベクトル、出力はソフトマックスによる確率分布
  • 特徴 — 学習が速く大規模コーパス向き。低頻度語はやや苦手
  • 対になる方式 — Skip-Gram(中心語から周辺語を予測する逆アプローチ)
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

単語の分散表現を学習するためのモデルの一つである。このモデルは、周辺の単語(コンテキスト)から中心の単語を予測する手法を採用している。具体的には、ある単語の前後に位置する複数の単語を入力とし、それらから中心となる単語を推定する。例えば、「私は毎朝コーヒーを飲む」という文において、「毎朝」と「を」を入力とし、「コーヒー」を予測する形となる。CBOWモデルの構造は、入力層、中間層、出力層の3層から成り立つ。入力層では、周辺の単語がone-hotベクトルとして表現される。これらのベクトルは中間層で平均化され、出力層で中心の単語を予測するための確率分布が得られる。この確率分布は、ソフトマックス関数を用いて計算される。CBOWモデルの学習では、予測された単語と実際の単語との誤差を最小化するように、ニューラルネットワークの重みが調整される。この過程を通じて、各単語の分散表現が得られる。CBOWは、学習速度が速いという利点があり、大規模なコーパスに対しても効率的に学習を行うことができる。一方で、低頻度の単語に対する表現力が不足する場合があるため、適切なデータセットの選択やモデルの調整が求められる。CBOWと対照的なモデルとして、Skip-Gramが存在する。Skip-Gramは、中心の単語から周辺の単語を予測する手法であり、CBOWとは逆のアプローチを取る。Skip-Gramは、低頻度の単語に対しても高い表現力を持つが、学習に時間を要する傾向がある。これらのモデルは、自然言語処理における単語の意味的な関係を数値的に捉えるための基盤となっている。

押さえるべきは、①目的=単語の分散表現の学習、②方向=周辺→中心の予測、③構造=入力層・中間層・出力層の3層(入力はone-hot、中間層で平均化、出力はソフトマックス)、④Skip-Gramは方向が逆、の4点です。

🔍 しっかり理解する

予測は手段、分散表現が目的

CBOWの最終目的は穴埋め問題の正解率を上げることではありません。予測を繰り返して重みを調整するうちに、ネットワークの中間層の重みが「似た文脈に現れる単語は似たベクトルになる」ように育っていきます。この中間層の重みこそが単語の分散表現です。分散表現では、「王様」と「女王」のような意味の近い単語がベクトル空間でも近くに配置され、単語の意味的な関係を数値計算で扱えるようになります。これがCBOW(およびword2vec)の真の成果物です。

なお、CBOWはSkip-Gramとともに、単語の分散表現を効率よく学習する手法word2vecを構成する2方式として知られています。word2vecは2013年にGoogleの研究チーム(トマス・ミコロフら)が発表し、分散表現ブームの起点となりました。

処理の流れ

「私は毎朝コーヒーを飲む」でコーヒーを当てる例なら、次のように動きます。

入力層
周辺語「毎朝」「を」をone-hotベクトルで入力
中間層
周辺語のベクトルを平均化
出力層
ソフトマックスで中心語の確率分布を出力
重み更新
正解「コーヒー」との誤差を最小化→分散表現が育つ

CBOWとSkip-Gram: 逆向きの兄弟

🅰 CBOW
  • 周辺の単語 → 中心の単語を予測
  • 学習速度が速い
  • 大規模コーパスに効率的
  • 低頻度語の表現力は不足しがち
🅱 Skip-Gram
  • 中心の単語 → 周辺の単語を予測
  • 学習に時間がかかる傾向
  • 低頻度語にも高い表現力
  • CBOWと逆のアプローチ

予測の向きが逆なだけで、目的(分散表現の学習)は同じです。「速いCBOW、低頻度に強いSkip-Gram」という長所の対比まで覚えれば、この2つの問題は取り切れます。

💡 具体例で考える

例1: 「王様 − 男 + 女 ≒ 女王」の意味計算。 CBOWなどで学習した分散表現では、単語ベクトルの足し引きが意味の演算に対応する現象が知られています。この有名な例は、CBOWが単に単語を暗記するのではなく、単語同士の意味的な関係をベクトル空間の構造として獲得していることを示しています。

例2: 検索・レコメンドでの同義語対応。 分散表現を使うと「パソコン」と「PC」のような表記の違う同義語が近いベクトルになるため、検索システムやレコメンドで「言い方が違うだけの同じもの」を拾えるようになります。大量の商品説明文やログから効率よく学習したい場面では、学習の速いCBOWが実務的な選択肢になります。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • BoWとの混同(最重要): CBOW(Continuous Bag-of-Words)は名前にBag-of-Wordsを含みますが、文書の単語出現回数を数える古典的手法BoWとは別物です。BoWは「文書」を回数でベクトル化する非学習の手法、CBOWは「単語」の意味ベクトルをニューラルネットワークで学習する手法。試験で両者を入れ替えた選択肢が出る定番ペアです。
  • Skip-Gramとの方向の取り違え: 「周辺→中心」がCBOW、「中心→周辺」がSkip-Gram。長所も入れ替えて出題されます(速いのはCBOW、低頻度語に強いのはSkip-Gram)。
  • 「CBOW=word2vecそのもの」ではない: word2vecという手法群の中の一方式がCBOWで、もう一方がSkip-Gramです。
  • 分散表現とone-hotの違い: one-hotは1箇所だけ1の疎な表現で意味の近さを表せません。CBOWの入力はone-hotですが、学習で得られる分散表現は意味の近さが距離に反映される密なベクトルです。

📝 試験でのポイント

💡 ポイント
  • 定義問題では「周辺の単語(コンテキスト)から中心の単語を予測」「単語の分散表現を学習」が正解の目印です。
  • Skip-Gramとの対比は最頻出。予測の向きと、学習速度/低頻度語への強さの対応を確実に。
  • モデル構造(入力層・中間層・出力層の3層、入力はone-hot、中間層で平均化、出力はソフトマックスの確率分布)の細部を問う問題も想定されます。
  • BoWとの名前違いを突く選択肢に注意。「出現回数を数えて文書をベクトル化」とあればCBOWではなくBoWです。

📚 まとめ

💡 ポイント
  • CBOWは、周辺の単語から中心の単語を予測することで単語の分散表現を学習するモデルです。
  • 入力層(one-hot)・中間層(平均化)・出力層(ソフトマックス)の3層構造を持ちます。
  • 学習が速く大規模コーパスに向く一方、低頻度語の表現力は不足しがちです。
  • 逆向きに予測するSkip-Gramと対をなし、両者がword2vecを構成します。
  • 文書の単語を数えるだけのBoWとは別物——名前の類似に惑わされないことが試験の鍵です。