基礎講座を担当したNVIDIAのCUDA & Deep Learning Solution Architectの村上真奈氏

2017年1月17日に開催されたNVIDIAの「Deep Learning Institute 2017」では、ディープラーニング(深層学習)の基礎講座と実際にNVIDIAのディープラーニング開発ツールである「DIGITS」を使うハンズオントレーニングセッションが行われた。

ニューラルネットワークの基礎

ディープラーニングの基礎講座は、「これから始める人の為の」というもので、NVIDIAディープラーニング部の村上真奈氏がディープラーニングの基本的な考え方や用語などを解説した。

まず、ディープラーニングの位置づけであるが、ディープラーニングは機械学習の1つの方法で、それもニューラルネットワークを使う機械学習の1つのやり方ということになる。

ディープラーニングの位置づけ (今回から第3回までに使用する図は全て村上氏の講義スライドのコピーである)

機械学習で解く典型的な問題として、分類問題と回帰問題がある。分類問題は画像に含まれているのが猫か犬かを見分ける(推論)するタイプの問題で、現実には、犬と猫の区別だけでなく、もっと多くのカテゴリを見分けている。

回帰問題は、N社の1カ月後の株価を予測するというような問題である。1カ月後の株価の予想は難しそうであるが、みずほ証券は1時間後の株価の予想システムを作っている。

機械学習で解く典型的な問題として、分類問題と回帰問題がある

分類問題は、次の図の左のように、画像を特徴づけるデータが散らばっている場合に、犬と猫を分けるというタイプの問題で、この図のようにきれいに分割するには多数の変数の重みを学習して点の分布を調整してやる必要がある。

回帰問題は、点の分布からそれを近似する関数を見つけて、先の予測を行う。この図のように2次元平面で傾向が見て取れるものは簡単であるが、何千もの変数がある場合は、どの変数をどう組み合わせれば傾向が見えるかを学習で求める必要がある。

分類問題は分布したデータをカテゴリごとに分割する問題。回帰問題は、分布したデータの傾向を見つける問題。何千個もの変数の組み合わせで、うまく分割や傾向が見える組み合わせ方を学習で見つける

次の上側の図のように青の正常値と赤の異常値が直線で分離できる場合は問題ないが、現実の問題では、下側の図のように正常値と異常値の点が入り組んでいて、直線ではだめで、多数の変数を組み合わせた複雑な関数近似が必要となる。

上の図は正常な青と異常な赤の点が直線で分離できるが、現実の問題では、両者は入り組んでいて、分離には複雑な関数近似が必要となる

人工ニューロンネットワークとディープラーニング

人工的なニューラルネットは、次の図のような構造になっている。なお、この図では後の層の1つのノード(図では○で表現)への接続だけしか書かれていないが、実際には、すべてのノードに同様な接続が存在する。

左端が入力層で、画像認識の場合は、ピクセルデータが入力され、右端の出力層のノード(この例では3つで、例えば犬、猫、狸を表す)からの出力値の大きいノードから順に確度の高い推論の結果ということになる。

なお、入力層と出力層の間の層は、直接、外部に繋がっていないので隠れ層と呼ばれる。

人工ニューラルネットワークは、○で表わした人工ニューロンの層を作り、その層の間を接続する

従来の画像認識では、専門家がどのような特徴量を抽出するかを考えて設計する必要があったが、ディープラーニングでは自動的に最適な特徴量の抽出を学習するので、学習用データのバラつきの影響を抑え込んだ抽出ができる。このため、学習していない新規な画像が与えられても正しく識別されるなど、ロバスト(堅牢)な設計が得られる。

また、従来はアプリケーションごとに認識方法を設計する必要があったが、ディープラーニングの場合は、学習データを変えて学習させることにより、同じニューラルネットワークを他のアプリケーションに対しても適用することができる。

さらに、大量のデータで大規模並列化を行なえば、パフォーマンスを向上させられる。

ディープラーニングを使うと、個別のアプリケーションごとに認識ネットワークを設計する必要がなく、学習で必要な特徴量の抽出ができる。このため、ロバスト性や一般性が得られる

左は神経細胞の図で、デンドライトに入力された信号がニュークレアスで総合されて、アクソンを通して他の神経細胞のデンドライトに伝わるという動作を行う。右は人工ニューロンの図で、入力X1、X2、X3にそれぞれW1、W2、W3という重みを掛けて総和を取り、例えばmax(0,X)(総和が正の場合はその値、負の場合は0)という関数を通して出力Yを計算する。なお、この図では入力は3つであるが、実際には数十~数千の入力をもつ人工ニューロンが使われる。

人工ニューロンは、入力X1、X2、X3にそれぞれW1、W2、W3という重みを掛けて総和を取り、それに関数F( )を適用して出力Yを計算する

次回は2月17日に掲載予定です。