ITパスポート試験 用語辞典
脳の神経細胞であるニューロンの信号伝達をパーセプトロンというアルゴリズムで模倣し、それを大量かつ幾層にもに繋ぎ合わせた疑似的な脳神経網ネットワークを用意する。このネットワークに大量の学習用データ(入力値と正しい解の組み)を与え、損失関数や勾配法、誤差逆伝播法などの数学的なアプローチを用いて、出力と正しい解の差異が最小になるように中間層のパラメタ(重みとしきい値)を自動調整していく。この仕組みにより、入力に対して最適解を出力するシステム(学習モデル)を得るのがディープラーニングである。学習させるデータが多いほど判定の精度も高まっていく。
この技術の登場により、従来と比較して人工知能の性能が飛躍的に上昇した。
- 別名:
- 深層学習
- 分野:
- テクノロジ系 » 基礎理論 » 情報に関する理論
- 重要度:
(Wikipedia ディープラーニングより)
ディープラーニングまたは深層学習(しんそうがくしゅう、deep learning)とは、(狭義には4層以上の)多層のニューラルネットワーク(ディープニューラルネットワーク、deep neural network)による機械学習手法である。深層学習登場以前、4層以上の深層ニューラルネットは、局所最適解や勾配消失などの技術的な問題によって十分学習させられず、性能も芳しくなかった。しかし、近年、ヒントンらによる多層ニューラルネットワークの学習の研究や、学習に必要な計算機の能力向上、および、Webの発達による訓練データ調達の容易化によって、十分学習させられるようになった。その結果、音声・画像・自然言語を対象とする問題に対し、他の手法を圧倒する高い性能を示し、2010年代に普及した。
概要
深層学習の登場以前、2層構造のパーセプトロン、3層構造の階層型ニューラルネットよりも多くの層を持つ、4層以上の多層ニューラルネットの学習は、局所最適解や勾配消失などの技術的な問題によって、十分に学習させられず、性能も芳しくない冬の時代が長く続いた。しかし、2006年にニューラルネットワークの代表的な研究者であるジェフリー・ヒントンらの研究チームが、制限ボルツマンマシンによるオートエンコーダの深層化に成功し、再び注目を集めるようになる。この際、発表した論文から、これまでの多層ニューラルネットよりもさらに深いネットワーク構造を意味する、ディープネットワークの用語が定着した。この研究成果が、現在のディープラーニングに直接繋がる技術的ブレイクスルーだったと見られている。元々はジェフリー・ヒントンらの開発したディープラーニングは層が直列されたシンプルな構造をしていたが、現在のアルゴリズムは複数の分岐やループのある複雑なグラフ構造を持つ。そのため、基本技術をまとめて複雑なグラフ構造を簡単に実現できるようにしたフレームワークも公開されている。
深層学習では、バックプロパゲーションと呼ばれる計算手法により学習を行う。バックプロパゲーション自体は従来からある手法だが、ディープ・オートエンコーダを併用することで、従来困難だった4層以上の多層ニューラルネットを学習させられることに新規性がある。バックプロパゲーションでは、画像や音声などそれぞれのデータの研究者、技術者が手動で設定していた特徴量が一緒に抽出される。このため、手作業での特徴量抽出が不要な点が、大きな利点の一つである。特徴量とは、問題の解決に必要な本質的な変数であったり、特定の概念を特徴づける変数である。
ニューラルネットワークの多層化の発想自体はコンピュータ黎明期からあり続けたものの、莫大な学習時間と計算コストが問題となって長らく低迷していたが、近年のコンピュータのハード性能の急激な進歩や、CPUよりも単純な演算の並列処理に優れたGPUの低価格化により、2012年頃からは急速に研究が活発となり、第三次人工知能ブームが到来したとされている。
歴史
ニューラルネットワーク#歴史
人間の脳の構造を模した機械学習における最初の手法であるパーセプトロンが考案されたのは1957年であるが、マシンスペックの大幅な不足や、排他的論理和の認識ができないなどの欠点が露呈したため、研究が大きく続けられることはなかった。その後、1980年代より、排他的論理和の問題を解決したバックプロパゲーションが開発されたが、非効率的なメカニズムや、動詞の過去形など複雑な認識ができない(そもそも3層ニューラルネットで任意関数は全て近似可能であり、大脳新皮質がなぜ3層以上存在するのかが不明であった)などの要因により、1990年代後半には沈静化した。長らく冬の時代が続いていたニューラルネットワークであるが、2006年にジェフリー・ヒントンによってスタックドオートエンコーダなど多層にネットワークを積み重ねても精度を損なわない手法が提唱され、さらに2012年には物体の認識率を競うILSVRCにおいてジェフリー・ヒントン率いるトロント大学のチームがディープラーニングによって従来の手法(エラー率26%)に比べてエラー率17%と実に10%もの劇的な進歩を遂げたことが機械学習の研究者らに衝撃を与えた。その後もILSVRCでは毎年上位はディープラーニングを使ったチームが占めるようになり、エラー率はすでに5%程度にまで改善している。
今日のディープラーニングにつながる世界的に最も先駆的研究として、日本の福島邦彦(NHK放送技術研究所、その後大阪大学基礎工学部生物工学科)によって1979年に発表されたネオコグニトロンが挙げられる。ネオコグニトロンには自己組織化機能があり、自ら学習することによってパターン認識能力を獲得(概念の形成)していく。応用例として、福島らは手書き文字データベース(ビッグデータ)から自己学習によって手書き文字認識能力(各文字の概念)が獲得されることを実証した。しかし、当時は「手書き文字認識方式の一つ」と誤解され、その重要性についての認識が世間に広がらなかった。
利用
ディープラーニングは物体認識を中心にさまざまな分野で活用されている。また、Googleをはじめとした多くのIT企業が研究開発に力を入れている。また、自動運転車の障害物センサーにも使われている
GoogleのAndroid 4.3は、音声認識にディープラーニング技術を活用することで、精度を25から50パーセント向上させた。2012年、スタンフォード大学との共同研究である(Google brain)は、1,000のサーバーの16,000のコアを使い、3日間で猫の画像に反応するニューラルネットワークを構築したと発表して話題となった。この研究では、200ドット四方の1,000万枚の画像を解析させている。ただし、人間の脳には遠く及ばないと指摘されている。GoogleLeNetと呼ばれるチームによるトロント大学との共同研究では、画像の説明文を自動で生成できる「Image to Text」と呼ばれるシステムを開発した。これは、コンピュータビジョンと自然言語処理を組み合わせ、ユーザーがアップロードした画像を認識し、説明文を表示するものである。2015年3月、Schroffらは800万人の2億枚の画像を99.6%の精度で判定した(22層)。2016年1月、AlphaGoと呼ばれるシステムが中国系フランス人のヨーロッパ囲碁王者であると2015年10月に対局し、5戦全勝の成績を収めていたことが発表された。主に開発に携わったのは2013年にGoogleが買収したDeepMind。囲碁はチェスよりも盤面が広いために打てる手数の多さは比較にならないほどで人間のプロと互角に打てるようになるまでさらに10年はかかるという予測を覆した点と、囲碁に特化したエキスパートマシンではなく汎用的にも用いる事ができるシステムを使っている点に注目が集まった
。また、2016年から2017年にかけて、世界最強の棋士にも名が挙がる韓国の李世?や中国の柯潔と対戦した際は殆ど中押し勝ちをして圧勝した。
中国では天網に代表されるようにディープラーニングが国民に対する当局の監視強化を目的に急速に普及しており、世界のディープラーニング用サーバーの4分の3を占めてるとされる。米国政府によれば2013年からディープラーニングに関する論文数では中国が米国を超えて世界一となってる。
Facebookは、ユーザーがアップロードした画像を、ディープラーニングによって認識させ、何が写っているかの判別精度を向上させている。また、人工知能研究ラボを2013年に立ち上げ、その成果としてディープラーニング開発環境を2015年1月16日にオープンソースで公開した。これは、GPU環境において、従来のコードの23.5倍の速度を実現しており、ディープラーニングの研究開発の促進が期待されている。
ネットワークモデル
ネットワークモデルは現在も盛んに研究されており、毎年新しいものが提案されている。
畳み込みニューラルネットワーク
畳み込みニューラルネットワーク (Convolutional Neural Networks: CNN) とは、全結合していない順伝播型ニューラルネットワークの一種。特に2次元の畳込みニューラルネットワークは人間の視覚野のニューロンの結合と似たニューラルネットワークであり、人間の認知とよく似た学習が行われることが期待される。結合がスパース(疎)であるため、全結合しているニューラルネットワークに比べて学習が高速である。
1979年に福島邦彦が発表したネオコグニトロンから発展し、1988年にHomma Toshiteruらが音素の認識に、1989年にYann LeCunらが文字画像の認識に使用し、1998年にLeCunらが発表したLeNet-5へと続き、2012年にILSVRCでの物体カテゴリ認識で優勝したアルゴリズムも深層畳み込みニューラルネットワークである。ネオコグニトロンの時から深層であったが、近年は深層であることを強調するため、深層が頭につき、深層畳み込みニューラルネットワークと呼ばれる事もある。自然言語処理に対する応用もなされはじめた。
スタックドオートエンコーダ
まず3層のオートエンコーダで学習を行い、学習が完了したら次の層(4層目)をオートエンコーダとして学習する。これを必要な分だけ繰り返していき、最後に全層の学習を行う。事前学習とも呼ばれる。類似技術にディープビリーフネットワーク、ディープボルツマンマシンなどがある。
Residual network
入力データを出力に変える変換を学習するのではなく、残差を学習する。通常の多層ニューラルネットより勾配消失がおきにくく、はるかに多層化できる。実験的には1000層まで学習されたものもある。欠点としては、入力次元数と出力次元数を変えることができない。
敵対的生成ネットワーク
敵対的生成ネットワーク
2つのネットワークが相反した目的のもとに学習するネットワークモデル。ボルツマンマシン
統計的な変動をもちいたホップフィールド・ネットワークの一種。制限ボルツマンマシン
同一層間では接続を持たないボルツマンマシン。
回帰結合型ニューラルネットワーク
(Recurrent Neural Network: RNN) とは、有向閉路を持つニューラルネットワークの事。それ以前の入力によって変化する状態を保持する(オートマトン)。動画像、音声、言語など、入力データの順序によって出力が変わる場合に有効である。
1980年代から研究が始まり、1982年に発表されたホップフィールド・ネットワークが初期の研究。その後ElmanネットワークやJordanネットワークが発表され、1997年にS. HochreiterおよびJ. SchmidhuberらがLSTMネットワーク (、Long short-term memory) を発表した。
特有の問題
勾配消失問題
確率的勾配法は誤差から勾配を計算して中間層のウェイトを修正するが、シグモイド関数などは見てすぐにわかる通り、勾配が0に近い領域が存在する。偶然その領域に進むと勾配が0に近くなり、ウェイトがほぼ修正されなくなる。多層NNでは一カ所でも勾配が0に近い層が存在すると、それより下の層の勾配も全て0に近くなるため、確率的には層数が増えるほど学習が難しくなる。詳しくはバックプロパゲーション、活性化関数も参照のこと。
過学習
トレーニングデータでは高識別率を達成しながら、テストデータでは識別率が低い現象。過剰適合も参照のこと。
局所最適解へのトラップ
学習が、最も最適な大域的最適解ではなく、局所的には最適な解へと収束し、抜け出せなくなること。
テクニック
データ拡張
深層学習以外でも広く使われているが、入力データが画像など、どのようなテストデータが来るかあらかじめある程度の想定(モデル化)ができる場合は、たとえば画像の回転や引き延ばしを行うことで入力データ数を増やすことも昔から行われている。
活性化関数
古くからニューラルネットワークにおいてはシグモイド関数がよく使われていたが、勾配消失問題などにより、近年では別の関数が使われるようになった。詳しくは活性化関数を参照。
ReLU
ReLU(rectified linear unit ランプ関数とも呼ばれる)
- \(f(x) = \max(0, x)\)
出力が0.0~1.0に規格化されないため勾配消失問題が起きにくく、またシグモイド関数に比べると単純であるために計算量が小さく学習が速く進む等のメリットがある。
maxout
複数の次元の最大値を出力する関数。CNNのプーリングと同じ計算である。高性能と言われるが、性質上、次元が減少する。特徴選択も兼ねていると言える。
ドロップアウト
ドロップアウトはランダムに任意のニューロン(次元)を何割か無視してしまう技術である。入力データを増やせずとも、次元を減らすことで解の有意性を上げることができる。ドロップアウトして得た学習結果は、テスト時には同時に使用し、結果は平均して用いる。これはRandom forestと同様、検出率の低い識別器でも並列化することで信頼度を上げることができるためである。
スパースコーディング
とも呼ばれる。辞書行列と係数行列の内積(線形結合)で入力データ(列ベクトル)を近似するとき、係数行列は疎行列(非零の要素が僅かしかない行列)になる。L1正則化のこと。
フレームワーク
- Caffe - Python, C++
- torch - Lua
- Theano - Python。関数型言語。並列化に特化し、GPUのコードが自動的に生成される。
- Pylearn2 - Python
- Blocks - Python
- Keras - Python。TensorFlowのラッパー。Theanoでも動作可能。
- Lasagne - Python
- deepy - Python
- Deeplearning4j - Java、Scalaが使用されている。
- EBlearn - C++で書かれているCNN用ライブラリ。
- cuda-convnet - 基本的な機能はEBlearnと同じ。
- Chainer - Python
- TensorFlow - Python, C++
- ReNom - Python
- PyTorch
- Microsoft Cognitive Toolkit - Python, C++, C#、以前はCNTKと呼ばれていた。
- DyNet - Python, C++
応用
- 顔認識
- 音声認識
- 被写体認識
- 画像検索
- 線画自動着色
- 自然言語処理
- 演繹推論
- 帰納推論
- 機械学習
- ニューラルネットワーク
- バックプロパゲーション
- 活性化関数
- 過学習
- ディープラーニング
- 事前学習
- ファインチューニング
- 転移学習
- 畳み込みニューラルネットワーク
- 再帰的ニューラルネットワーク
- 敵対的生成ネットワーク
- 大規模言語モデル
- プロンプトエンジニアリング
- 基礎理論(23)
- アルゴリズムとプログラミング(27)
- コンピュータ構成要素(32)
- システム構成要素(29)
- ソフトウェア(17)
- ハードウェア(14)
- 情報デザイン(21)
- 情報メディア(28)
- データベース(19)
- ネットワーク(71)
- セキュリティ(121)
このページのWikipediaよりの記事は、ウィキペディアの「ディープラーニング」(改訂履歴)の記事を複製、再配布したものにあたり、このページ内の該当部分はクリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下 に提供されています。