立山秀利『デイ―プラーニングAIはどのように学習し、推論しているのか』(2021年11月21日経BP発行)を読んだ。
表紙の裏にはこうある
本書は、ディープラーニングの仕組みを基礎から解説した、初心者向けの書籍です。
「ディープラーニングは一体どんな仕組みなのか?」
「なぜそんなに賢いのか?」
「今までのAIの手法と何が違うのか?」
そうした疑問に、本書は丁寧に答えようと企画されました。
エンジニアを目指す学生のみならず、一般社会人にとっても、「ディープラーニングの“はじめの一歩”」となる内容となっています。
「近い将来、ディープラーニングの仕組みは一般常識の1つになる」と言っても、決して大げさな話ではないでしょう。
谷田部卓著『ディープラーニング』には広く・浅くディープラーニングの概要がわかりやすく書いてあった。しかし、具体的技術内容にはほとんど触れていない。そこで、私は無理を承知で、技術内容を具体的に記述した本書に挑戦したのだ。
内容は、ニューラルネットワークの構造と推論、ディープラーニングによる画像認識、ディープラーニングによる自然言語処理と、開発言語Pythonの説明と、自然言語処理プログラミングの体験で、図を使ったわかりやすい説明が続く。
私の評価としては、★★★★☆(四つ星:お勧め、 最大は五つ星)
技術内容の概要説明書としてわかりやすい。たとえ話によるイメージで分かった気にさせるのでなく、実際のプログラムに基づき(私の推測です)、計算方法の概要を図解で説明している。違った例を挙げて、説明を繰り返すなど丁寧すぎる部分もあり、論理的思考をする人ならソフトウェアの素養がなくても理解できると思う。
ディープラーニングは、ニューラルネットワークに様々な改良を何重にも施して発展してきたもので、本書を読んだだけで具体的に理解できるものでもないし、ましてや開発できるわけではないだろう。しかし、ディープラーニング全体を本書で俯瞰してから各論を勉強すれば効率的だと思う。
ニューラルネットワークからディープラーニングへ驚異の発展のもととなったのは、本書にあるような数々の計算方法の革新にあるが、同時にここ2,30年のコンピュータパワーの驚異的発展が、複雑な計算を短時間で可能としたことが基盤にある。
そこまで学ぶ必要のない人は飛ばしても差し支えないのだが、開発言語Pythonの初心者への説明があり、ごく簡単な自然言語処理プログラミングの体験もできる。
立山秀利(たてやま・ひでとし)
1970年生。フリーランスのITライター。筑波大学卒業後、株式会社デンソーでカーナビゲーションのソフトウェア開発に携わる。退社後、Webプロデュース業を経て、フリーライターとして独立。
現在はシステムやネットワーク、Microsoft Officeを中心に執筆中。
主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』(秀和システム)、『入門者のExcel VBA』(講談社ブルーバックス)、『入門者のPython』(講談社)など。
以下、私のメモ。
1章 AIとは? ディープラーニングとは?
- 近年のAIは「機械学習」という手法で性能が飛躍的に向上。機械学習をさらに発展させた手法が「ディープラーニング」。
- AIの機能は「与えられたデータから、ルールをもとに予測する」こと。ルールは……「機械学習のAI」ではAI自身が決める。
- 機械学習では、AIは大量のデータからルールを導き出す。ルールを決める行為を「学習」と呼び、学習に使うデータを「学習データ」と呼ぶ。
……
- 教師あり学習における“正解”のデータを「ラベル」と呼ぶ。
2章 PythonでAI開発環境を構築
AI開発の標準言語がライブラリーが豊富な「Python」(パイソン)。Pythonのコードを記述・実行するWebブラウザーベースのツールとして、「Google Colaboratory」(Corab)が便利で無料。(具体的利用方法(p15~p24)は省略)
3章 ディープラーニングの基礎となる仕組み 略
4章 ニューラルネットワークの構造と推論の仕組み
5章 ニューラルネットワークの学習
学習データ(犬の画像)をニューラルネットワークに入力し、推論結果(犬0.8、猫0.2)を得る。正解(ラベル)犬1.0との差(損失)を小さくするために、当初ランダムに初期化した重みwとバイアスbを変化させて、正解に近づける。そのため、まずw1のみ変化させて、横軸w、縦軸損失のグラフを描き、勾配が得られる。以下、他のwnについても同等の計算をする。(勾配降下法)
後ろの層の勾配を先に求めてから前の方の勾配を求めていく。(誤差逆伝播法)
6章 ディープラーニングによる画像認識の仕組み
CNN(Convolution Neural Network 畳み込みニューラルネットワーク)は上下左右のピクセルの位置関係を捕まえて形状を調べるので処理速度が速い。認識対象画像をわずかなピクセルのカーネルをずらしながら照合することによって、対象画像を濃縮し小型化した特徴マップを作る。
7章 画像認識AIのコードの意味を理解する
Pysonを使って実際に画像認識AIを動かして、プログラミング経験してみる。
8章 自然言語処理の仕組み
実際に使われているのは、
「機械翻訳」:例、日本語の文章を英語に翻訳する
「文章分類」:例、自社製品への顧客のメール、SNS投稿を良い評価か悪い評価か分類する
「チャットポット」:例、航空券予約サイトでユーザーからの質問に自動で答える
最初に、文章を単語の「辞書」を使って単語に分割する。
単語の意味を、特徴を表す複数の数値の組み合わせで表す=分散表現。例、トマト:細長さ-10,緑-10、ピーマン:10,8、キュウリ:10、8、ナス:7,-5。
単語の意味は周囲の単語によって決まるという考えから、色々な文章の中の周囲の単語から導き出す。例えば、「さくさく、で、香ばしい、パン、は、美味しい」から、パンの意味は、「さくさく」(感触)、「香ばしい」(匂い)、「美味しい」(味)とわかり、自転車とは違うと分かる。
“word2vec”による単語の意味の数値化
「私、は、赤い、自転車、に、乗る」の「自転車」を隠し、ニューラルネットワークに入力し、正解が自転車になるように各層の「重み」を変えて最適化し、その重みの値を自転車の意味とする。
文章の意味は、“word2vec”による分散表現では考慮されない単語の並び順によって大きく変化する。また、文章は長さの変化もあり、可変長である。文章にはRNN(Recurrent Neural Network)が用いられる。
2018年Googleは飛躍的に精度が優れた自然言語処理の仕組み「BERT」を発表した。BERTはTransformerのエンコーダ部分を多段に連結した構成になっている。
9章 自然言語処理のプログラミングを体験しよう
言語はPython、開発環境はColabで、BERTを使って、文章の分類と穴埋めを体験する。
Python基礎講座(データの操作法、関数、反復と分岐、オブジェクトとクラス)