2017/09/05人工知能の話題に必ず出てくるディープラーニング、最近は黒魔術という言い方をされることがあります。今日は筆者の考える「ディープラーニングが黒魔術と呼ばれる理由」を記してみたいと思います。最初にディープラーニングの超概要を説明し、その後黒魔術と言われる理由を記します。ディープラーニングは知ってる人、急いでる人は後半の黒魔術のとこにワープしてください。ディープラーニングって何?ディープラーニングは機械学習といわれる手法のひとつです。近年画像認識など様々な分野で、従来の手法では実現できなかった高い精度を実現して注目をあびています。昨年囲碁名人に勝利したコンピューターにもこの手法が使われており、今の人工知能ブームの中心にいます。今日はこのディープラーニングの仕組みを、代表的な活用分野である画像認識を例に説明します。待って!画像認識って何?コンピューターを使って画像を仕分けする技術を画像認識といいます。多くの写真の中から特定の人が写っている写真を見つける、手書きの文字を判別する、など色々な活用分野があります。今日は画像認識の簡単な例として、オセロ盤に黒石で書いた数字をコンピューターに認識させるシナリオを使います。上の図では3人の人に数字の1,2,3を書いてもらってます、同じ数字でも三者三様の書き方になってますね。私たちはすぐに何が描いてあるか判別できますが、コンピューターに判別させるにはどうしたらいいでしょう?いろんなやり方がありますが、今画像認識の分野でもっとも高い精度を実現しているのがこれからご紹介するディープラーニングです。ディープラーニングへの入力情報オセロ盤をコンピューターの前に持って行って「判別せよ!」と言っても当然ですが何も起こりません。画像情報をコンピューターに処理できる数値情報に変換します。オセロの64マスの盤面に番地をつけ、黒石が置いてある番地には"1"、置いてない番地には"0"を置いていきます。この結果を横一列に並べると図の上にあるような64個の数字の並びができます、これがコンピューターへの入力になります。64個の数字が並んでいるので数学的な言い方でこれを64次元のベクトルといいます。今回は教師あり学習という方法をとるので、書いた数字が0~9のどれか?正解情報もコンピューターに入力する必要があります。ここでもベクトルを使っています、10次元のベクトルを使って「0が正解なら一番最初の数字を1に、その他は0に」と1の場所で数字を表現します。ここで紹介した方法はコンピューターで画像を扱う際の一般的な手法で、ディープラーニング特有のものではありません。ディープラーニングの基本構成要素ディープラーニングはノードという部品で構成されています。このノードがどんなことをするか見てみましょう。ノードがやっている処理はとても簡単です画像情報をベクトル化した64次元の"入力"情報それぞれにひとつづつ用意された"重み"を掛けて掛けた結果を"合計"して関数で"変換"してその結果を次のノードにわたしています。変換に使う関数のバリエーションは少なく、数種類の定番が決まっています。関数というと難しそうですが、やってることはそんなに難しくありません。以下に代表的な2つの関数の概要を記します。どんな数字がきても出力が0~1の範囲に収まる仕組みになってます。すごく小さい数字がきたら0、すごく大きい数字がきたら1、0だと0.5という具合。0以下の値がきたら出力は0、0より大きい値がきたら入力の値をそのまま出力します。シェフに例えるとシェフは64個の素材それぞれに用意したレシピに従い分量を決めます、分量が決まったら64個の素材をまぜて、非線形の味付けをした料理をして次のシェフに渡します。ディープラーニングの構造ディープラーニングは複数のノードが接続されたネットワーク構造になっています。今回は代表的な順伝播型ネットワークを例にその構造を説明します。順に送られます、多層=層が深いのでディープという名前がついています。ネットワークを構成する複数のノードが流れ作業をするイメージです。各ノードが行う処理は先ほど説明したシンプルなものです。シェフに例えると厨房で複数のシェフが働いているイメージです。料理は複数のステップに分かれており、第一厨房のシェフは調理したものを第二厨房へ、第二厨房のシェフは再三厨房へと流れ作業で料理をしていきます。シェフはそれぞれ独自のレシピを持っていますが、調理方法自体はみんなほぼ同じで、そこにシェフの独自性はありません。これで何ができるの?ここまでの説明で「簡単な処理をするノードをつなげてネットワーク作ってるだけでしょ、そんなので何かできるの?」という印象を持たれた方いらっしゃると思いますが、基本的な仕組みはこれだけです。数字の仕分けができるようになります。具体的には第三層の各ノードが特定の数字である確率を出力するようになります、ちょっとびっくりですよね。逆に言うと、重みを適切に設定していなければ何の役にも立ちません。"重みを適切に設定する方法"重みの調整はデータを使って行います。今回の例では入力イメージが1の場合は1の確率が上がるように、2の場合は2の確率があがるように、重みを少しずつ調整していきます。この方法でたくさんのデータを使って少しずつ重みを調整していくと最終的に精度の高い分類ができるようになります。この動きがデータを使って重みを学習していくようにみえるので機械学習と呼ばれています。シェフに例えるとこの厨房では何度も何度も調理をして、求める味に近づけていきます。調理するたびに求める味との違いをチェックし、レシピを変更していくのです。求める味との違いをもとに、まず第三厨房のシェフがレシピを変更します、その情報が第二厨房に伝わり、第二厨房のシェフがレシピを変更、さらに第一厨房へ、と料理を作った時とは逆の方向でレシピの調整が行われます。一度に大幅なレシピの変更は行いません、毎回微調整を重ね、それを繰り返すことで最終的に求める味を得るのです。ディープラーニングのどこが黒魔術?ここまでざっくりとディープラーニングの仕組みをみてきました。ここからディープラーニングのどのあたりが黒魔術と呼ばれているのか見ていきます。ノウハウはあるが論理がないディープラーニングが黒魔術と呼ばれている最大の理由は、最適な解を得るためのノウハウはあるが理論がないからです。「やってみて初めて効果あるかないかわかる、効果のあった理由が論理的に説明できない」これが黒魔術といわれる理由です。今回は説明のため簡単なネットワーク構造を使いましたが、実際の活用場面ではもっと多くの層と多くのノードを使った大規模なネットワークが使われます。そもそも多層にするとどうして性能が上がるのか?どんなタスクにどんな構造のネットワークが適しているのか?十分な理解はすすんでいるとはいえず試行錯誤の状態です[*1より抜粋]。先ほどは少しずつ重みを調整すると曖昧な言い方をしましたが、どのくらいの更新量で調整していくかは性能に大きく関係しています、しかしこれも明確な理論はなく試行錯誤して決める必要があります。その他もろもろ初期値を適切なものに設定するちょっとトリッキーな方法(自己符号化による事前学習)、学習の際にノードを一部取り除くことで汎用精度を上げる方法(ドロップアウト)などなど、ここでは紹介しきれないほどさまざまなノウハウがあるのですが、明確な理論があるものは少なく、作業は試行錯誤の状態です。〜数理脳科学〜理論が無くノウハウに頼るような仕組みがどうしてできたのか?ちょっと不思議ですよね。実はこの仕組みは脳の研究から生まれました、脳の仕組みを簡単なモデルで作ってみる"神経回路モデル"がディープラーニングのルーツです。現在ディープラーニングで使われている技術は、この分野ではすでに30年近く前から存在します。下記2つの本はおよそ30年前に書かれたものですが現在ディープラーニングで使われている仕組みをほぼ網羅しています。合原一幸https://goo.gl/Rq5Ceeこの分野の研究が、ディープラーニングの黒魔術を数理で解き明かす可能性があると筆者は期待しています。そもそもディープラーニングでとても不思議なのは、ひとつひとつのノードがやっていることはとても簡単なのに、それが複数繋がったネットワーク構造になると高い認識能力を発揮するところです。これって特別なものなんでしょうか?実はあなたの身の回りにも同じ特性を持った現象がたくさんあります。アリの巣、経済、免疫系などがそうです。これらは総して複雑系とよばれています。ディープラーニングはまさにこの定義にあてはまります。個々のノードの仕組みはとても単純ですがそれが集まって高い認識能力を発揮します、精度を上げるために入力データから学習を行い、予測精度をあげています。蟻の巣もこれにあてはまります。個々の蟻の動きは単純ですが、それが集団になるとまるで誰かが命令しているような立派なアリの巣を作ります。ディープラーニングの仕組みを解明していくためには従来の科学の主なアプローチ方法である還元主義だけではなく、複雑系のアプローチも必要になってくると筆者は考えます。複雑系に興味が湧いてきたかたはこちらの本を是非読んでみてください。万年筆やさんで、私に合うペン先を見てもらった。書けば書くほど快感が走る万年筆とは。クラウドに関する記事のまとめ(2020.2.17~2020.2.22)北九州漫画ミュージアム「関谷ひさしとスポーツマンガの時代」5月23日イベントオール私立で大学まで2500万円。ランボルギーニが買えるぜ。やっててよかった資金術とは。Backlogのカンバンボードは末恐ろしいAWSのシェアが落ち、Azureが延びて、4年後にAzureシェア32%、AWSは34%になる件SoftwareDesign3月号ヤマハ特集に執筆参加しました。富士ゼロックスのCocoDesk、溜池山王駅で体験してみたPython海外ニュース紹介第1回「そもそもPythonは誰のために作られたのか?その設計思想とは。「PoC死」の葬り方・後編オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。利用規約プライバシーポリシーお問い合わせアイティメディアからのお知らせプレスリリースメールサービスRSSTwitterITmediaはアイティメディア株式会社の登録商標です。