はじめに
これは5つの記事からなるニューラルネットワークシリーズの最初の記事。
この流れを抑えてから個々のアルゴリズム、並びにニューラルネットワークを学んでいきましょう。
まず最初は機械学習の歴史を見ていきます。
でもなぜ歴史を知る必要があるのか?
最新のアルゴリズムさえ分かるようになれば良いのでは?
歴史を知る意味
アルゴリズムの歴史というのは、欠点の改善・新たな機能の追加・性能や実用性の向上の履歴そのもの。
過去の優秀な先人達の素晴らしい考えを追体験することができる。これは最新のアルゴリズムの理解・更には改良を考えている我々にとって最高の教科書である。歴史の勉強とは車輪の再発明を避け、車輪を作れるようになり、車輪を使いこなし、あわよくばより良い画期的な車輪を発明するために必要なのではないでしょうか。
でも我々は何を目指すのか?
そうは言っても我々は先人達のような歴史に残る天才なるわけでもないし、新たな機械学習アルゴリズムを発明したいわけではない。
ただ機械学習を利用したいだけである。
特にriverage tokyoでは機械学習をfxに応用することを目指している。
じゃあこう考えてみよう。
fxに対して(だけでも)機械学習を使いこなせるようになろう。
そのために少し歴史も勉強しておこう。
これでもモチベーションとしては十分でしょう。
機械学習史
では本題の機械学習の歴史を見ていきましょう。
機械学習の本流であるディープニューラルネットワークが出来るまでの流れです。

1940年〜 MCPニューロン→初めてのニューロンモデル
ニューラルネットワークの先駆けは人工知能を設計することを目指しMcCullochらが考えたMcCulloch-Pittsニューロン(MCP) というもの。
これは脳細胞(ニューロン)に関する初めての概念であった。
ここでニューロンとは以下のような脳内での神経細胞であり、入力信号を受け取り出力信号を出す。
彼らはこれを二値入力を行う単純な論理ゲートとして表現した。

1950年〜 パーセプトロン→ニューロンアルゴリズムの元祖
MCPニューロンに基づくパーセプトロンとその学習規則に関するアルゴリズムがRosenblattによって提案された。
これは各入力信号に重みをかけてその和が閾値を超えていたら1、超えてなかったら−1を出力するという仕組み。
その元で正しく分類する重み係数を教師データで学習し、新たなサンプルがどちらのクラスに属しているかを予測するアルゴリズムである。

ここでの重み学習では、出力のラベルさえ合っていれば更新せず、間違っていたら更新するという単純なものであった。
この更新の仕方にコスト関数とそれを用いた最適化の概念を加えたのが次のADALINEである。
1960年〜 ADALINE→最適化との出会い
これはパーセプトロンアルゴリズムとほとんど変わらない。ただ一つ異なるのは活性化関数の導入である。

この活性化関数を用いることで学習の仕方が高度になった。
パーセプトロンでは答え合わせをクラス分けの⚪︎か×かで重みの更新を行なっていた。
一方、ADALINEでは活性化関数によって得られた連続値に対して答え合わせをする。
この違いは一言で言えば、
間違っている時は間違っているにしてもどの程度間違っているかを見て学習を行おう!
効率的に学習を行えるようになったのだ。
ここで登場した最適化はその後の機械学習における最重要概念である。
ADALINEは(一見大きな進歩には見えなくても)重要なアルゴリズムであるのだ。
1960年〜 ロジスティック回帰→ニューラルネットワークの親
注意急に回帰という名前が付いたが、行なっていることは分類である!
ADALINEでは活性化関数が線形の恒等関数(y=x)であった。それを(ロジスティック)シグモイド関数という非線形関数に変更したという進化である。

これもまた大いなる進化である。
非線形関数を用いることで、線形では層を増やしても意味がなかったが、非線形関数によって複雑なモデルを構築する事ができる。
この非線形性が今日のディープラーニングに大きな影響を及ぼしているのである。
シグモイド関数を用いる事でクラスの確率を予測できるようにもなった。今までは⚪︎か×かであったが75%の確率で⚪︎のようにより高度な予測が行えるのだ。
冬の時代 社会の期待に応えられなかった→使えなければ流行らない
ここまで来ればニューラルネットワークが誕生する土台ができた。
今から50年以上前に概念や計算方法が考えられていたのだ。
そのニューラルネットワークの層を増やしていけばそれはもうディープラーニングである。
しかし、ディープラーニングが実用化されたのは2010年頃。
なにが冬の時代(機械学習が下火となった時代)にさせてしまったのか。
その答えは計算力とデータである。
現在 ディープラーニング→PCのハイスペック化とビックデータ
どんなに立派なアルゴリズムであっても実際の問題を解く事ができなかった。
理由は、
つまり計算時間は、
- 計算量が莫大で解き終わらない
- 学習のための大量のデータがない
計算時間
現代になるにつれPCの処理能力はこの指数関数的にアップした。(ムーアの法則)
その為、今までは時間がかかり過ぎて非実用的であったアルゴリズムも使えるようになった。ハイスペックPCのおかげである。
一方、アルゴリズム側でも計算量をいかに減らすかという進化が今も行われておりそのために改良がなされているのだ。
つまり計算時間は、
- アルゴリズム側からの計算量の削減
- PCの計算力アップ
という2つのアプローチで計算時間を減らしてきた。
それほどまでに計算時間というものは、実用的なアルゴリズムを考える上でシビアな問題なのである。
学習データ
今まではデータが無かった。アナログの世界。
写真もデジタルデータとして保管されていなかった。
機械学習を用いるにしても人力で大量のデータを入力しなくてはならなかった。
しかし今では様々なデータがデジタルデータとして記録さている。写真も、天気も、為替も。ビックデータのおかげである。
この大量のデータを学習させてみよう、
そう思えるのはこの時代を生きている我々の特権なのだ。
まとめ
ここでは機械学習の歴史、とりわけ(ディープ)ニューラルネットワーク誕生までの歴史を見てきた。
この大きな歴史の流れは機械学習の理解に役立つはずである。
この順番に学んでいきましょう!