生成AIは機械学習から始まる-その10:自然言語処理(Natural Language Processing, NLP)

生成AIは機械学習から始まる-その10:自然言語処理(Natural Language Processing, NLP)

前回は、”機械学習の歴史”についてご紹介しました。今回は、「自然言語処理(Natural Language Processing, NLP)”について、ご紹介したいと思います。

このシリーズも大分長くなってきていて過去の記事がたくさんあります。以下にリンクを張っておきますので、まだ、ご覧になっていない場合は是非以下のリンクより訪問してみてください。

 第一回:生成AIは機械学習から始まる:基礎から理解する技術の系譜と実装への道

 第二回:生成AIは機械学習から始まる-その2:機械学習のアプローチ

 第三回:生成AIは機械学習から始まる-その3:教師なし学習(Unsupervised Learning)

 第四回:生成AIは機械学習から始まる-その4:強化学習Reinforcement Learning)

 第五回:生成AIは機械学習から始まる-その5:深層学習(Deep Learning)の登場

 第六回:生成AIは機械学習から始まる-その6:なぜ「深層」なのか

 第七回:生成AIは機械学習から始まる-その7:深層学習を支える技術革新

 第八回:生成AIは機械学習から始まる-その8:深層学習の課題と限界と新たな応用領域

 第九回:生成AIは機械学習から始まる-その9:多層化がもたらしたブレイクスルー

では、さっそくはじめていきましょう!

自然言語処理(Natural Language Processing, NLP)

私たちは毎日、スマートフォンで検索をしたり、翻訳アプリを使ったり、ChatGPTのようなAIと会話したりしていますが、その裏側で支えとなっているのがこの技術です。

まずは「基本編」で全体像を掴み、次に「踏み込んだ解説編」でその仕組みの核心に迫ってみましょう。

自然言語処理とは?

自然言語処理(NLP)は、一言で言うと「人間が普段話したり書いたりする言葉(自然言語)を、コンピュータに理解・処理させる技術」のことです。

コンピュータは本来、数値(0と1)を扱うのが得意ですが、言葉のような曖昧なものを扱うのは苦手です。そこを橋渡しするのがNLPの役割です。

私たちの身近にあるNLPの例

私たちの生活の中でよく使われている例をいくつか挙げてみましょう。

  • 検索エンジン: 打ち込んだキーワードから意図を汲み取る。
  • 機械翻訳: 日本語を英語に変換する(DeepLやGoogle翻訳など)。
  • 予測変換: 次に打ちたい文字を予想する。
  • SNSのフィルタリング: 誹謗中傷やスパムを自動で検出する。

自然言語処理(NLP)は、意外と身近なテクノロジーなのです。

自然言語処理が何となくわかってきたと思いますので、少し踏み込んでいきましょう。

単語を「数字のベクトル」に変換する

コンピュータは言葉をそのまま扱うことはできません。

そこで、すべての単語を多次元の数値リスト(分散表現/ベクトル)に変換します。これにより、「王様 – 男性 + 女性 = 女王」といった計算が可能になります。

参考までにご紹介しておきますが、単語の類似度を測る際には、以下のような数学的な指標(コサイン類似度)が使われます。

 \text{similarity} = \cos(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|}

単語埋め込み(Word Embeddings)

単語埋め込みとは、単語の意味を「低次元の密なベクトル」として表現する技術のことです。

少しややこしいですが、単語をベクトル化することそのものが「単語埋め込み(Word Embeddings)」となり、その代表的な技法にWord2VecやGloVeと言われるものがあります。

「昔のやり方」と「単語埋め込み」

理解を深める為に、少し前の技術もご紹介しておきます。

それが、ne-Hot Encoding(ワンホットエンコーディング)と呼ばれる手法です。

One-Hot Encoding

One-Hot Encodingは以下のようにベクトル化していきます。

  • 単語を「0か1」だけで表します。
  • 例:「猫」= [1, 0, 0, 0]、「犬」= [0, 1, 0, 0]

この技術は、単語が増えるほどデータの次元数が膨大になり(数万次元など)、計算が非効率という欠点を持っていました。

また、すべての単語が独立しているため、「猫」と「犬」が似ているという「意味の近さ」を計算することができなかったのもこの技術の欠点となりました。

Word2Vec (2013年)

Word2Vecは、Googleのトマシュ・ミコロフらが発表した手法で、「単語の意味は、その周辺の単語によって決まる」という分布仮説に基づいています。

Word2Vecの学習法について、リストにしましたので見てみましょう。

  • Skip-gram: ある単語から、その周辺に現れる単語を予測するように学習する。
  • CBOW: 周辺の単語から、中心にある単語を予測するように学習する。

この学習プロセスを通じて、コンピュータは「『美味しい』の近くには『料理』や『食べる』が来ることが多い」といった言葉の相関関係を自動的に学んでいくことができるようになりました。

有名な例:

King - Man + Woman ≈ Queen

この発見は、機械が言語の意味的関係を数学的に捉えられることを示しました例としてよく知られています。

GloVe (2014年)

GloVeは、スタンフォード大学が開発した手法です。Word2Vecが「局所的な周辺単語」に注目するのに対し、GloVeはコーパス全体の「単語の共起統計(どの単語とどの単語がセットで現れやすいか)」を考慮します。

単語埋め込みがもたらした「意味の計算」

単語埋め込みの最も面白い特徴は、言葉を数学のように足し引きできるようになったことです。

GloVeにも、有名な例がありますので、ご紹介しておきます。それがこちらです。

 \text{Vector}(\text{"King"}) - \text{Vector}(\text{"Man"}) + \text{Vector}(\text{"Woman"}) \approx \text{Vector}(\text{"Queen"})

これは、ベクトル空間内で「王様」から「男性性」を引き、「女性性」を足すと、結果が「女王」の近くに移動することを意味します。これにより、AIは言葉の概念(性別、動詞の時制、国と首都の関係など)を構造的に理解できるようになりました。

Word2VecやGloVeの弱点

非常に強力で、一見、完璧そうに見えるWord2VecやGloVeですが、一つだけ弱点がありました。それは「一つの単語に一つのベクトルしか割り当てられない」ことです。

これを「静的な埋め込み」と呼びます。

ひとつ例ですが、

「右の手(Hand)」と「トランプの手(Hand)」は意味が違いますが、Word2Vecでは同じ一つのベクトルになってしまいます。

人は、”手”の意味の違いがわかるのですが、Word2VecやGloVeでは、ひとつのベクトルしか割り当てることができない為に、解釈がどちらかの意味によってしまうのです。これでは自然な会話が成り立たなくなります。

この課題を解決したのが、前回解説した Transformer(BERTなど) です。Transformerは、文脈に応じて同じ単語でもベクトルをリアルタイムに変化させる「動的な埋め込み」を実現しましたのですが、Transformerについての解説はここでは話がそれてしまいますので、また別のセクションでご紹介します。

APPSWINGBYは、最先端の技術の活用と、お客様のビジネスに最適な形で実装する専門知識を有しております。AI開発から既存の業務システムへの統合などの他、リファクタリング、リアーキテクチャ、DevOps環境の構築、ハイブリッドクラウド環境の構築、システムアーキテクチャの再設計からソースコードに潜むセキュリティ脆弱性の改修の他、テクノロジーコンサルティングサービスなど提供しています。

貴社のセキュリティ対策等についてご相談されたい方は、お問い合わせフォームからお気軽にご連絡ください。システムの専門家が、貴社の課題解決をサポートいたします。

システム開発にお困りではありませんか?

この記事を書いた人
株式会社APPSWINGBY
株式会社APPSWINGBY マーケティング

APPSWINGBY(アップスイングバイ)は、アプリケーション開発事業を通して、お客様のビジネスの加速に貢献することを目指すITソリューションを提供する会社です。

ご支援業種

情報・通信、医療、製造、金融(銀行・証券・保険・決済)、メディア、流通・EC・運輸 など多数

株式会社APPSWINGBY
株式会社APPSWINGBY マーケティング

APPSWINGBY(アップスイングバイ)は、アプリケーション開発事業を通して、お客様のビジネスの加速に貢献することを目指すITソリューションを提供する会社です。

ご支援業種

情報・通信、医療、製造、金融(銀行・証券・保険・決済)、メディア、流通・EC・運輸 など多数

監修
APPSWINGBY CTO川嶋秀一
株式会社APPSWINGBY  CTO 川嶋秀一

動画系スタートアップや東証プライム上場企業のR&D部門を経て、2019年5月より株式会社APPSWINGBY 取締役兼CTO。
Webシステム開発からアプリ開発、AI導入、リアーキテクチャ、リファクタリングプロジェクトまで幅広く携わる。
C, C++, C#, JavaScript, TypeScript, Go, Python, PHP, Java などに精通し、Vue.js, React, Angular, Flutterを活用した開発経験を持つ。
特にGoのシンプルさと高パフォーマンスを好み、マイクロサービス開発やリファクタリングに強みを持つ。
「レガシーと最新技術の橋渡し」をテーマに、エンジニアリングを通じて事業の成長を支えることに情熱を注いでいる。

APPSWINGBY CTO川嶋秀一
株式会社APPSWINGBY  CTO 川嶋秀一

動画系スタートアップや東証プライム上場企業のR&D部門を経て、2019年5月より株式会社APPSWINGBY 取締役兼CTO。
Webシステム開発からアプリ開発、AI導入、リアーキテクチャ、リファクタリングプロジェクトまで幅広く携わる。
C, C++, C#, JavaScript, TypeScript, Go, Python, PHP, Java などに精通し、Vue.js, React, Angular, Flutterを活用した開発経験を持つ。
特にGoのシンプルさと高パフォーマンスを好み、マイクロサービス開発やリファクタリングに強みを持つ。
「レガシーと最新技術の橋渡し」をテーマに、エンジニアリングを通じて事業の成長を支えることに情熱を注いでいる。