メニュー

第3次AIブーム(自然言語処理とディープラーニング):AIの基礎知識5

AIの基礎知識

更新日:2020年10月23日(初回投稿)
著者:慶応義塾大学 理工学部 管理工学科 教授 山口 高平

前回は、第3世代AIブームの中心技術として画像認識向けディープラーニング、畳み込みニューラルネットワーク(CNN)について説明しました。今回は、2019年頃から急速に関心が高くなってきた、自然言語処理向けのディープラーニングを解説します。

今すぐ、技術資料をダウンロードする!(ログイン)

1. 自然言語処理

人が日常利用している言語(日本語、英語など)は自然言語と呼ばれ、それをコンピュータで扱うことを自然言語処理と呼びます。自然言語処理には、形態素解析や構文解析などがあります。

・形態素解析
形態素解析は、文を意味の最小単位である形態素に分割し解析することです。形態素よりも大きな意味単位が単語です。例えば、再出発は「再」と「出発」という2つの形態素からなる1つの単語です。日本語形態素解析ツールには、MeCab(http://taku910.github.io/mecab/)などがあります。

・構文解析
構文解析は、形態素間の係り受けなどの関係を解析することです。かなり高い精度での自然言語処理が可能です。日本語構文解析ツールにはCaboCha(http://taku910.github.io/cabocha/)などがあります。

一方、さらに高度な自然言語処理である、複数の文間の関係(代名詞が指す単語の推定など)を求める文脈解析、同音異義語の意味を推論するなどの意味解析では、コンピュータの処理が難しい状況です。例えば「昨日、レストランの焼き肉を食べて、おいしかったよ」と「昨日見た演劇で、脇役が主役を食っていたよ」という2つの会話では、「食べる」という単語の意味が異なっています。これは、人であれば分かりますが、コンピュータには理解できない状況です(図1)。この状況を一変させようとしている研究開発が、自然言語処理向けのディープラーニングです。以下、代表的な研究開発を紹介します。

図1:「食う」の認識の違い

図1:「食う」の認識の違い

2. 単語分散表現とWord2Vec

前回、説明した画像処理向けのディープラーニングでは、画素の位置と色の値を表す数値ベクトル(行列)により画像を表現し、畳み込みニューラルネットワーク(CNN)では、重みなどの数値の変化による適応プロセスによって学習を実行しました。この方法に倣うと、自然言語による文章は単語系列であるため、それを数値ベクトルに変換する必要があります。その変換方法として、局所表現と分散表現が考察されました。

・局所表現
局所表現とは、ある概念を1つの割り当てで表現する方法です。局所表現の代表的なものに、One-hotベクトル表現があります。これは、1つの要素だけが1で、他の要素は全て0になるベクトルです。この局所表現は、例えば「昨日の夜、洋食店でステーキを食べた」「一昨日の夜、中華料理店でラーメンを食べた」という2つの文が与えられた場合、「食べた」という単語が2つの文章に含まれるという同一性判断には利用できます。しかし、その他の単語間の関連性は判断できません。

・分散表現
局所表現の弱点克服のため、ある単語と他の単語との関連性を統計的に表現する単語の分散表現という研究が始まりました。分散表現とは、1つの単語を複数の要素とともに表現する方法です。また、人間が未知事項を既知事項と関連付けて理解するという認知科学の知見と関係しています。分散表現では、文脈を集計してベクトル表現(共起頻度行列)を作成し、ある単語と近傍に出現した単語群との関連性(共起回数)を計算します。

図2は、NLP(Natural Language Processing)からの単語分散表現の例です。ParisとFrance、LondonとEnglandという単語ペアが、単語のベクトル空間内で近くに配置され、距離やベクトル角度が同じになっています。この他に、king – man + woman = queenというベクトル演算が示され、単語分散表現が注目されることになりました。

図2:単語分散表現

図2:単語分散表現(参考:NLP with genism(word2vec)をもとに作成)https://samyzaf.com/ML/nlp/nlp.html

続きは、保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

3. Transformer、BERT

保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

    ピックアップ記事

    tags