真面目なプログラマのための
ディープラーニング入門 (超要約)

人工知能の本質は、ほとんどの場合、探索である。 なぜなら多くの人工知能の問題には「こうすれば確実に正しい答えが求まる」という アルゴリズムが存在しないため、無数にある答えの中から「よさそうな答え」を 探しだす処理によって正解を得ることが多いからだ。 この探索処理をいかに効率よくおこなうかが人工知能研究のおもなテーマである。

機械学習の本質も探索である。 ただしその対象は「与えられたデータをうまく予測するようなプログラム」である。 つまり機械学習とは「プログラムを作る (探しだす) プログラム」なのである。 ただし、通常のプログラミング言語は複雑すぎるので、機械学習が探索する「プログラム」は もっと単純な形式のものを使っている。その表現形式として 決定木ニューラルネットワークなど、 さまざまなものが提案されている。

プログラムのような複雑なものを探索する場合、候補の数が膨大なため、 いかに効率的に最良のものを見つけるかが鍵となる (最適化問題)。 ニューラルネットワークでは、手当たり次第に解を試すのではなく 「ひとつの解をすこしずつ改良しながら段階的に良い解にたどりつく」 という方法を使っている (勾配降下法)。 具体的には、1) 解の評価を損失関数と呼ばれるものであらわし、 2) 探索対象を微分可能にすることによって実現する。

ニューラルネットワークは単純な構造をもっており、さまざまな種類の入力を 扱うことが可能である。さらに、この構造を幾層にも重ねることで、 複雑な問題にも対応できることがわかっている (ディープラーニング)。 とくにディープラーニングの一種である 畳み込みニューラルネットワーク (CNN) は 画像認識によく使われている。

従来、畳み込みニューラルネットワークの学習は時間のかかるものだったが、 最近では GPUの 並列演算機能を流用することで、飛躍的に性能を上げることができた。 現在では、入力と出力が固定長データして表せるものであれば、 たいていの問題はニューラルネットワークで学習させることが可能である。

本講座で例としてあげる 物体認識システム (YOLO) や奥行き認識システムは、 どちらも与えられた画像から「物体の種類や大きさ」あるいは 「各ピクセルの奥行き」を推測するようにニューラルネットワークを 学習させるものである。

(以下は本講座ではまだ扱っていない範囲です)

ニューラルネットワーク (および、畳み込みニューラルネットワーク) の欠点は、 固定長のデータにしか適用できないということである。したがって 可変長のデータ (音声やテキストなど) に対しては、 再帰的ニューラルネットワーク (RNN) や LSTM などの 方法が提案されてきた。しかし、これらの手法は依然として限界があった。 それは内部表現を固定長のベクトルで表現しているためである。

この問題を解決するために近年提案された Transformer とよばれる手法では、 可変長データ内における各部分間の関係を自己注意と 呼ばれるものによって表現し、学習させることができる。 Transformer は自然言語処理の分野で特に成果をあげている。


クリエイティブ・コモンズ・ライセンス
この作品は、クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。
Yusuke Shinyama