深層学習は何がディープラーニングなのか?
深層学習とは人工ニューラルネットワーク(ANN)での学習にほかならず、深層学習でディープなのは、ANNの「隠れ層(中間)層」です。
ネットワークの構造のベースは多層パーセプトロンです。
中間層が深いネットワークをディープニューラルネットワーク(DNN)と呼びます。わずか数年前は中間層が3~5層であれば深層学習と言われましたが、現在は中間層が数100~200以上のものも多く登場しています。
深層学習の流行は様々な要因があると考えられますが、主に7つが大きいと考えています
1.インターネットの普及
ディープラーニングではデータ量が多ければ多いほど精度が高くなる傾向があります。インターネットが広く一般に普及した結果、大量のデータがインターネットを通じてやり取りされ収集できるようになりました。
このデータ・セットを利用できるようになったことが、ディープラーニングの実ならず機械学習全般において優位に働いていることは間違いありません。
2.GPGPUの普及
深層学習を計算するためのコンピューティング環境の充実が深層学習の普及に一役買ったといわれています。
GPU(Graphics Processing Unit)は名前の通り、画像処理が専門の演算装置でして、CPUのような汎用計算を行う演算装置とはもともと性質・用途の異なるものでした。
ところが、2007年にGPGPU(General Purpose Graphics Processing Unit)という汎用計算も行える演算装置が統合開発環境「CUDA」とともにNVIDIA社から提供されるようになると、深層学習とGPGPUは大変相性がいい(線形代数冤罪を大量に並列に行うことが可能である)ことから、シナジー効果をもたらし、一緒に普及していくこととなりました。
3.勾配消失問題の解決
一般医深い層のネットワークを学習させようとすると、誤差が入力層まで伝播されなくなってしまいます。これは、隠れ層の活性化関数の影響が大きく、シグモイド関数のように微分すると最大値が0.25になり、これを掛け合わせていくとすぐに0に近づいていきます。これを改善するためにHyperbolic Tangentという微分したときに最大値が1になるような関数y=(1-e^(-N))/(1+e^(-N))が活性化関数に用いられるようになりました。それでも勾配消失問題は避けられませんでした。
2011年に提案された論文にReLuト活性化関数はy=max(x,0)で前述のシグモイド関数よりもうまく機能することが示されています。今までに隠れ層ではReLuがよく用いられています。
4.画像認識コンペティションでの圧倒的な成果
画像分類では、特徴エンジニアリングト行って、事前に画像分類で予測精度に関わる追加の予測因子である特徴量を職人芸のようにデータ・セットに追加して精度を高めていく方法が一般的であり、2012年時点で既に職人芸の域に達していました。
ところが、2012年にGeoffrey Hinton氏率いるチームの開発した「Super Vision」が他チームのエラー率を10%以上引き離して圧倒的な制度で優勝しました。Super Visionで用いられた「AlexNet」というDNNのモデルで畳込みニューラルネットワークの一種です。
2019#1のG検定でもILSVRCで優勝または準優勝した深層学習のモデルの名前やその特徴を問う問題が出題されました。
ILSVRCの歴代優勝チームとそのコア技術
2010 NEC-UIUC
2011 XRCE (Xerox Research Centre Europe)
2012 University of Toronto
2013 Clarifai
2014 Google (準優勝はOxfordのVGGで僅差)
2015 MSRA (Microsoft Research Asia)
2016 Trimps-Soushen (The Third Research Institute of the Ministry of Public Sencurity, P.R. China)
2017 WMW (Momenta-University of Oxford)
5.深層学習ライブラリのオープンソース化
深層学習を用いてシステム開発やデータ分析を行う場合、多額の資金を用意しないといけないという誤差があるようですが、実は深層学習ライブラリ自体はその多くがApache2.0などのオープンソースライセンスで提供されており、コンセプトを試そうという段階では特に人的コスト以外はかかりません。
G検定で出題された有名なオープンソースライセンスはGoogle社が提供している「TensorFlow」やそのラッパーとして大変利用しやすいAPI群を提供している「Keras」、構築と同時に評価を行うDefine-by-Run方式を用いたPreferred Networks社の国産ライブラリ「Chainer」などがあります。また、ChainerからFacebook社によりForkされてさらに改良された「PyTorch」も同じDefine-by-Run方式を採用しています。グラフを構築してから、データを流すことはこれに対してDefine-by-Runと言います。
Facebook社は研究用にはPytorchを、製品開発用には「Caffe」やその改良版である「Caffe2」をオープンライセンスで提供しています。なた、Microsoft社も「Cognitive Toolkit(CNTK)」をオープンランセンスで提供しています。
ONNX(Open Neural Network Exchange)とは、Facebook, Microsoft, Amazonを中心に異なるAIフレームワーク(深層学習ライブラリ)間で深層学習モデルの移行を行いやすくするオープンフォーマットのことで、CNTK、Chainer、PyTorch、Caffe2、TensorFlow(ONNX Organizationでサポート)が対応しています。
6.Alpha Goが囲碁世界キャンプを被る
AlphaGoはGoogle傘下のDeepMind社によって開発されたコンピュータ囲碁プログラムです。2015年にプロ囲碁棋士をハンディキャップなしで被った世界初めての囲碁プログラムです。
・ポイント1:ディープラーニングのCNNと強化学習を組み合わせていること
・ポイント2:モンテカルロ木検索によって、途中から最終局面まで打ってしまい(プレイアウトという)最後から考えたときに次の最も有効な一手を考えていることの2点です。
AlphaGoは主に以下の4つの要素で構成されます。
- SLポリシーネットワーク(CNNによる教師あり学習)
- RLポリシーネットワーク(REINFORCEによる方策勾配法)
- Valueネットワーク(盤面を評価するためのネットワーク、基本的にSLポリシーネットワーク同様の構造で、回帰問題を解くための全結合層が加えられている)
- モンテカルロ木検索(プレイアウトによりゲーム木の葉のノードからあるポリシーに従い最終局面シミュレーションを行い、結果をノードの評価に利用する仕組み)
7.勾配降下法の進化
勾配降下法はニューラルネットワークの「重み」を最適化するのに最も一般的な方法である。
まず、ニューラルネットワークの「重み」を最適化するというのはどういうことでしょうか。最適というのは、つまりニューラルネットワークの数式モデルに入力値を与えたときに得られる出力の値(=予測値)が、正解に最も近くなるように重みを調整していくことであると考えられています。これは、言い換えると、正解と予測値の誤差を最も小さくいく問題であるといえます。
誤差を最小化するというのは、数学的には予測値と正解の誤差を誤差関数として定義し、これを最小化するという問題にできます。
関数を最小化するときによく用いられるのは、関数の微分です。
Comments
Post a Comment