AIを学ぶ前にー「空前のAIブーム」を冷静に捉えなおす

2018年5月17日(木)
田原 眞一

はじめに

「空前のAIブーム」。昨今のIT業界を取り巻く空気感をあえて一言で表すならば、こんな感じであろうと思います。近頃はIT関係のお偉いさんとお話をしていて「機械学習」「AI」「ディープラーニング」という言葉が話題に挙がらないことのほうが少ないのではないか。そのくらい、昨今のこの空気感にちょっと圧倒されてしまいます。

ブームが起きると高まるのは「熱」。最近のテレビ番組や雑誌、Webメディアを見ていると、まるでAI が世界をひっくり返してしまうのではないか?それこそ、「人の仕事なんて奪い尽くしてしまうんじゃないか?」そんな錯覚に襲われることすらあります。

本連載では、いま一度「世間は何に熱狂しているのか」ということを「冷静に」捉えなおしてみようと思います。「熱狂」をしすぎて「本質」を見失ってしまう。そもそも、何に熱狂をしているのかを考えてみればよくわからなくなってしまう。これは少し危険なことです。正しく本質を捉えて、正しい姿をしっかりと理解して、それでこそ我々はそれをしっかりと活用できるのですから。

ディープラーニング(深層学習)

高性能な「AI(Artificial Intelligence/人工知能)」の実現。これは人類にとっての大きな夢みたいなものです。そして、コンピュータによってAIを実現するために、人間が行う「学習」をコンピュータにより再現する「機械学習」という考え方が確立し、そして様々ある機械学習の手法の中で、特に2015年以降に急激な注目を集めた(集めている)のが「ディープラーニング(深層学習)」と呼ばれる概念です。

ディープラーニングは、よく「人間が行う学習の模倣」だと言われます。具体的には、脳細胞間を電気信号が伝達し、それを元に人間が「学習」してさまざまな判断や予測を適正に行えるようになって行く。これを再現したモデル(ディープニューラルネットワーク/Deep Neural Network)により機械学習を行うことを言います。この説明だけを聞くと、いかにも途方もない、夢のような技術のような感覚に陥ってしまうという方も多いと思います。しかし、ここでは一旦冷静になって、いま一度このディープラーニングという概念を「ざっくりと」捉えなおしてみましょう。

その前に、我々にとって本連載の「目標」を定めておきましょう。

目標:入力 x1, x2,…, xmから、正しい出力(正解)y1, y2,…, ynを予測する

そして、これを実現するためのディープラーニングの流れは、以下のような「ニューラルネットワーク」を用いて記述されます。この仕組みが「人間の脳を電気信号が伝達していくように見える」のです。図を見ると直感的イメージが湧きやすいでしょう。

  1. まず、入力層から「入力 x1, x2,…, xm」が流し込まれ、各入力xiは層と層をつなぐ各枝の重みがかけられ、それらが足し合わされて次の層に伝わる
  2. 入力信号が左から右へ「重みをかけて足し合わされる」ことで伝わっていく。ただし、信号が次の層に伝わるときに活性化関数(Activation function)と呼ばれる関数が作用する
    この流れを「順伝播(forward propagation)」と呼ぶ。

    ・重みをかけて足す
    ・活性化関数を作用させる

    この繰り返しにより、入力が左から右へ姿を変えながら伝わって行き、最終的に出力(正解を予測した値)が得られるという仕組み
  3. 出力(正解の予測値) y1,y2,…, ynが得られたら、それが「本当の正解」と等しいかを比較する。もし間違っていたら、その間違いの度合い(誤差)を誤差関数Eにより計算し、その結果を今度は逆方向に伝播させ、各枝の重みを「先程よりも正解に近づくように」少しだけ更新する。この流れを「逆伝播(back propagation)」と呼び、この細かい手順(アルゴリズム)を誤差逆伝播法と呼ぶ。

このように、いろいろな入力データから正解の予測値を計算し、それを本当の正解と比較して間違いの度合いを計算し、それをもとに各枝の「重み」を「間違いの少ない方向に」少しずつ更新し続ける。このプロセスを「学習」と呼びます。そして、これを繰り返して「間違いが少ない状態」になったニューラルネットワークは、「正しい予測」ができる「人工知能」(すなわち、わからない質問をすると正しい答えを教えてくれる)のようなものだろう、というお話なのです。

ちなみにディープラーニングの「ディープ」というネーミングは「層がたくさんある」ということに由来しています。近年、高速な並列計算を行えるGPUが爆発的に普及したことにより、ディープラーニングが一気に日の目を見たのです。

「関数近似器」としてのニューラルネットワーク

このディープラーニングを応用すると、ものすごく色々なめまぐるしい成果を出すことが可能らしい、ということが分かってからは、様々なディープラーニングの応用例が出現しました。例えば有名どころとしては画像識別技術や動体追跡技術、絵の自動彩色技術など…これらの例は今となっては枚挙に暇がありませんが、是非ご興味のある方はWeb等で検索してみると楽しいと思います。

ところで、今回の主題は「いま一度このブームを冷静に捉えなおしてみる」ことでした。筆者はもともと専門がコンピュータサイエンスではなかったのですが、実はディープニューラルネットワークでやっていることは、数学的にはすごく単純なことです。というのも、先程述べたプロセスは、

複雑な「関数」を、いくつかのデータを使って「再現(近似)」する

という1文に集約されるのです。それ以上でも、それ以下でもないのです。というわけで、これから少し、数学の言葉を使って、この1文の意味をみなさんに理解していただくことを試みてみましょう。

関数(function)

「関数」とは、「とある入力値xに対して出力値yを対応させる規則(※入力、出力は複数でも構いません)」のことです。これはよく「ブラックボックス」みたいなものだと表現されます。例えば、以下のようなブラックボックスは「入力xを2倍した値を出力yとしてはき出す箱」だと分かるでしょう。

この規則をy = 2xと書くことにします。これ、中学校や高校の授業で見たことはありませんか?これは、このような意味なのです。意外と、こうした「ちゃんとした言葉の定義」はあまり意識していなかったりしますよね。

ところで、関数は「めちゃくちゃ広い概念」であることにお気づきでしょうか。実は、私たちが生きるこの世界は関数に溢れています。例えば、私たちが自動販売機にお金を入れて商品を買うとき、「金額」という入力を自動販売機に与え、「ジュース」という出力を得ていると考えられます(※「ジュースは数じゃないだろ!」というツッコミがありそうですが、例えばジュースの商品番号を考えれば、数値→数値の対応規則だと考えることができます)。さらに、「手書きの数字の白黒写真」を入力して、「その数字がいくらか」を出力するのも関数(※「手書きの数字の白黒写真」は各画素の色を0と1に対応させ、その値の列に変換すれば数字の集まりと考えることができます)ですし、「動物が写ったカラー写真」を入力し、「動物の種類」を出力するのも関数(※「動物が写ったカラー写真」は各画素値の列に変換すれば数字の集まりと考えられますし、「動物の種類」も番号を振っておきその値だと考えればOK)です。

身の回りにあふれる「複雑」な関数

このように、私たちの身の回りにはたくさんの関数であふれています。いわば色々なことが「対応のルール」として捉えられる、ということです。

ところで、先ほど最初に挙げた「y = 2x」のような「超単純」な例であれば、「やってることは2倍だけ」というように一撃で正体を捉えきることができます。しかし、「数字の手書き画像→数字」「動物の写真→動物の種類」となった瞬間に、この関数が「中で何をやっているのか」、すなわち「入力からどうやって出力を計算しているのか」を明らかにすることが難しくなります。

言い換えれば、「動物の写真の画素値の列」を渡されて、それをどうやって計算したら「動物の種類番号」になるのかなんて、そんなのわからないじゃないですか。そう、身近にある関数は、一般的にはものすごく複雑なものばかりなのです。

しかし、人間は動物の写真を見れば、その種類を特定することができます。それは、人間の脳がものすごく高度な計算をしているからなのです。その高度な計算をコンピュータに代替してもらうことは、往々にして容易ではありません。

ところが、そんな複雑な所業が「ディープラーニングによって可能となるのではないか?」という流れが起きたのが、まさに最近なのです。というのも、トロント大学のジェフリー・ヒントン教授が率いるチームが、画像や音声の特徴を明らかにするニューラルネットワークを作り出すことに成功したのです。これがいわば、昨今の「AIブーム」の火付け役となり、こぞってたくさんの人達がディープラーニングに手を出し始めたのです。

ディープラーニングのアイデア

冒頭でも解説したように、ディープラーニングが身の回りにあふれる複雑な関数の「再現」を可能にすることは、「ディープニューラルネットワークの構造が人間の脳の一部と極めて似ている」ことからも納得できます。

しかし、数学的に言えば、「ディープニューラルネットワークによって複雑な関数を再現する」というこのアイデアは、結局のところ「複雑な関数f」を

・入力値に重みをかけてバイアス(偏り)を足す(線形結合)
・活性化関数を作用させる(単純な「非線形(複雑)」要素)

という2つの計算の「たくさん」の「うまい」組み合わせによって表現しなおす、というアイデアだと考えることができます。そして、ジェフリー・ヒントン教授率いるグループにより、絶妙な「うまい組み合わせ方」が「びっくりするほどうまく再現できる!」ということが分かり、誰もが興味を示す対象となった、というのが一連の「AI ブーム」の流れなのです。

この図で言えば、「黄色い矢印(得体の知れない複雑な関数)」の代わりに、ディープラーニングで「水色の矢印」を作り出せるよ!というのが、まさにディープラーニングがやろうとしていることなのです。

作りたいのは「関数近似器」

ディープラーニングを何やら夢のような、とんでもない技術のように感じていた方もいらっしゃったかもしれませんが、今回の結論を以下にまとめました。

ディープラーニングとは、複雑な関数をたくさんの「線形結合(入力値に重みをかけてバイアスを足す)」と「活性化関数(非線形要素)」の組み合わせに分解する「うまいやりかた」を「学習」によって見つけること。
それにより、ディープニューラルネットワークを高精度な「関数近似器」に仕立てること。

我々が色めきだっているのは、関数近似器に対してなのです。でも、お分かりですよね。先ほども述べたとおりですが、関数は世の中にたくさん登場しますし、それは日常生活に直結しています。そして、今までは人間が目で見て、感覚で「入力から出力」を計算するしかなかったところを、ディープラーニングによって「コンピュータで代替」できるようになったのです。関数近似器はすごいのです。

ビッグデータ

そして最後にもう一つだけ。ディープラーニングで関数近似器を作るためには、「この入力に対して、正しい出力はこれです」という、いくつもの「お手本」がなければなりません。そのたくさんのお手本からディープニューラルネットワークは誤差逆伝播法によって重みを調整し、正しい出力値を吐き出せるように学習していきます。

この「お手本データ」を教師データと呼びます。もう、何となくわかりましたか?大企業が持っているような「ビッグデータ」は、ここに応用できるのです。ビッグデータ、そして「GPU」の飛躍的な発展、そしてディープラーニングという手法の確立。これらが「一気に波になって押し寄せている」のが、まさに現代だと言って良いでしょう。

おわりに

本連載では、誰もがディープラーニングと、そこから生まれるAIについて理解し、納得し、そして「使える」ように、いろいろな事柄をわかりやすくまとめて解説して行きます。その中には数学もプログラミングも、たくさん登場するでしょう。でも大丈夫です。しっかり我々が先導しますので、どうか安心してください。

さぁ、もう行くしかないですよね。広くて深いAIの海に、一緒に漕ぎ出しましょう!

スキルアップAI
東京大学大学院新領域創成科学研究科修了。新卒でスキルアップジャパン株式会社に入社後、エンジニアとプロジェクトマネジャーを経験。その後、株式会社リクルートコミュニケーションズにて複数のAI案件に携わる。現在は、機械学習を体系的に学べ、日本初のJDLA認定プログラムのディープラーニング講座を展開するAIスクール『スキルアップAI』の運営、AIに関するコンサルティング、システム開発や運用なども行う。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています