トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

データサイエンス教室

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

ディープラーニング(深層学習 : Deep Learning)の見た目の姿は、何層もの中間層を持つ ニューラルネットワーク です。 当初のニューラルネットワークは、3層程度が実用化の限度でしたが、 それに比べると中間層がとても多いので、「ディープ(深い)」と呼ばれています。

ディープラーニングによる特徴抽出

ディープラーニングは、 人工知能 (AI)や、画像認識の技術として、大変高い評価をされています。

従来の方法では、特徴量を定義してそれを抽出する手順が必要でしたが、 多層の中間層で、非常に複雑な非線形の関数を作ることによって、この手順が自動化できてしまったようです。

これをするには、非常に大量の学習データが必要になるので、何にでも使える技術ではありませんが、 応用範囲は、今のところ測り知れないものがあります。

モデルの作り方

ディープラーニングのモデル自体は、新しいものではないですが、層が多いモデルは、うまく作れないという問題があったそうです。 ディープラーニングでは事前学習として、画期的なデータの前処理を取り入れることによって、この計算を可能にしたそうです。

また、現在のソフトでは、シグモイド関数以外も使われています。

ディープラーニングの形

ひとくちに「 ディープラーニング 」といっても、様々な形が開発されて来ています。 下記は、その中でも代表的なものです。

CNNもRNNはディープラーニングの一種として紹介されるのが一般的ですが、 これらのアイディアは、「ディープラーニング」という呼び方が注目される前の、 1990年代からあったそうです。

ディープラーニングのフリーソフト

ディープラーニングは、当初、「UNIX系OSのもの」、「Pythonで扱うもの」という感じでしたが、 2016年頃から、Rなどでも使えるようになって来ています。

Rでディープラーニング

H2O、TensorFlow、Keras、MXNet、RSNNS、rnn、など、すでにいろいろなものが、Rのライブラリーとして使えるようになっています。 Kerasは、kerasとkerasRの2つのライブラリーがあります。

H2Oは、シンプルな多層の ニューラルネットワーク のようです。

rnnは、その名の通り 再帰型ニューラルネットワーク(RNN) 専用のようで、RNN系のLSTMやGRUもできるようになっています。 (筆者はマニュアルのコードを試したのですが、エラーが出てしまいました。)

TensorFlow、Keras、MXNetは、 RNN系だけでなく、 畳み込みニューラルネットワーク(CNN) もできるようになっています。

RNNをやるには、ネットなどの記事を読む限りでは、Kerasが一番手軽に結果が出せそうで、一番実務向きかもしれませんが、 筆者自身はこれらを実際に使ったことがないので、まだ何とも言えません。



中間層を使った解析

参考文献

人工知能は人間を超えるか ディープラーニングの先にあるもの」 松尾豊 著 KADOKAWA 2015
特徴量の抽出を、高次の変数作りと同じ意味で使っています。
ディープラーニングの前処理は、非線形の主成分分析を多段でするアイディアに過ぎないが、実用化に時間がかかったそうです。 実用化に必要だったのが、特徴量の頑健性で、少し違うデータをノイズとして入れたり、中間層を部分的に欠落させて、頑健にするそうです。
特徴量の自動抽出を実現する技術のさきがけとして、ディープラーニングを高く評価して、この技術によって社会で起こるであろう変化を予想しています。
この本は、途中から、「特徴量抽出=人工知能」のような書き方になっています。 フレーム問題についても、特徴量抽出の技術で解けるものとして、書かれています。 (フレーム問題は、必要な知識の選択に、果てしなく時間をかけてしまう問題です。 行動経済学のフレーミング効果のように、認知の範囲や、基準の場所で見え方が変わる話とは異なります。)


はじめての深層学習プログラミング ディープラーニングの先にあるもの」 清水亮 著 技術評論社 2017
たった11行でディープラーニングによる画像認識のプログラムが書けることから始まる本です。
なぜそのような事ができるのか、と言った理論的な話は断片的で、あまり書かれていません。 その代わり、CNNによる画像認識や、RNNによる文字予測をPythonを実際にやるところの話が具体的です。 強化学習 もあります。 オートエンコーダーは、ビッグデータをクラスタリングして知識を得る方法として、大きな可能性がある、としています。


イラストで学ぶディープラーニング」 山下隆義 著 講談社 2016
絵とカラー印刷を多用して、数理の考え方から、さまざまなソフトまでを解説。 ソフトの具体的な使い方が、半分くらいあります。
・CNNの畳み込み層は、フィルタと活性化関数を使う。
・ボルツマンマシンは相関のネットワークモデル。これがある状態の記憶になる。
・オートエンコーダーには、スパースにして、効率的に圧縮するアイディアが使われる事もある。


深層学習」 岡谷貴之 著 講談社 2015
オートエンコーダー、CNN、RNN、ボルツマンマシンが1章ずつあります。 数式を使った説明が多いです。 プログラムはありません。


Chainerで学ぶディープラーニング入門」 島田直希・大浦健志 著 技術評論社 2017
ニューラルネットワーク、CNN、RNN、 強化学習 などをコンパクトに解説しています。
RAM(Recurrent model of visual attention):部分的に画像を見ていき、最後に画像を識別する。 画像処理にRNNを使うモデル。見る順番をモデルに入れている。
GAM(Generate Adversal Network):ディープラーニングを使って、画像を作る方法。


初めてのディープラーニング オープンソース"Caffe"による演習付き」 武井宏将 著 リックテレコム 2016
ディープラーニングの歴史や理論が、すっきりコンパクトに解説されています。 オープンソースのCaffeや、CaffeをWindows環境で扱うためのVMwareのガイドもあります。
活性化関数は、シグモイド関数ではなく、ReLU関数の利用が増えているそうです。 また、出力層は、ソフトマックス関数の利用が増えているそうです。
画像のパターン認識で言われる「特徴量」の定義とは、輝度の差の大きい部分を人が定義する事。 ディープラーニングのすごいところは、モデル式の係数を見つける問題として、 この作業が自動化できるようになったこと。

順路 次は オートエンコーダー

Tweet