機械学習の入門
最近、機械学習やAIに関するニュースをよく見ると思います。
IT業界のみならず、世界中の様々な業界が再び、機械学習やAIに注目を集め始めている時期が今です!
AIを知るなら今しかない!
しかし、よく耳にする「機械学習」、「AI」、「深層学習(ディープラーニング)」…など、よくよく考えてみると、機械学習とAIが何なのかハッキリ分からない……という方もいると思います。
そこで今回は、機械学習がなんなのか?機械学習で何が出来るのか?などいくつか私なりにまとめました。
▼目次
1.そもそも機械学習って?
機械学習という言葉を聞いた時に、どんなイメージをしますか?
機械が学習するって?人間の学習と何が違うのか?AIと機械学習の違いってなんだ?…など、様々疑問があると思います。
まず初めに、いくつかの言葉の定義から始めたいと思います。
AI、機械学習、深層学習について
AIと聞いて、一般的には「人間の代わり、人間と同じ」といったイメージが広まっていると思います。
時代によって細かい定義は異なりますので、ここで私が提示する現在のAIの定義は「人間のように自ら結論を出すもの」に留めておきます。
それに対して、機械学習の定義は、「機械がデータから反復的に学習し、法則性を見出す手法」とします。
例えば、人間に置き換えて考えてみると、AIが大人、機械学習は赤ちゃん と言えます。
大人(AI)は生きる為に自ら選んで行動していきますが、赤ちゃん(機械学習)は親のお世話がないと生きていくことは出来ません。
同様に、機械学習は計算能力のみ持っていて、データの用意から出力の決定まで、人間が手を加える必要があります。
ちなみに、深層学習(ディープラーニング) という言葉も良く耳にすると思いますので軽く触れたいと思います。
深層学習を説明する前に、ニューラルネットワークについて簡単に説明します。
ニューラルネットワークは、人の神経細胞から着想を得て、いくつもの「層」で構成されている、機械学習です。
そして、深層学習とは、ニューラルネットワークの中でも特に「多層のニューラルネットワーク」を指します。
(※ニューラルネットワークの詳しい説明は別の記事で行います)
機械「学習」について
AIと機械学習の違いはなんとなく分かったと思いますが、ここで一つ疑問が出てきます。
そもそも、「機械」が「学習」するって、よくよく考えてみると不思議です。機械に意思なんてありませんから学習って言葉は不自然に感じられます。
実は、機械学習の「学習」とは「予測、分類モデルの最適化」に過ぎません。
人間の「学習」も、様々な経験や失敗を繰り返して、より良い選択をする為に「学習」していくと思います。
機械はそれを全て、数式的に判断してより良いモデルを作っているだけです。
先ほど出てきた、ニューラルネットワークを例に挙げて学習方法を確認してみます。
誤差逆伝播法など難しい単語がチラホラありますが、やっていることは非常に単純です。
① 与えられたパラメータを使って、答えを計算する
② 出した答えと、本当の答え の誤差を計算する
③ ②で出た誤差を元に、パラメータ重みを修正していく
④ 誤差が小さくなるように①~③を繰り返す
この一連の流れをニューラルネットワークの「学習」と言います。
もちろん、学習の方法は使用するアルゴリズムによって異なりますので、詳しい解説や他のアルゴリズムは後々の記事で書きたいと思います。
現在、機械学習アルゴリズムは多くの種類が存在し、それらは学習の方法によって大きく3つに分けられています。
①教師あり学習
②教師なし学習
③強化学習
実例に沿ってそれぞれ説明したいと思います。
2.機械学習の実例
教師あり学習
教師あり学習は、「予測に使うデータを使って、人間が用意した答え(ラベル)に近づけるように、学習していく手法」です。
一言で説明されてもしっくり来ないと思いますので、実例を通して詳しく説明します。
①手書きの数字認識
(引用元:http://www.xn--eckzb3bzhw32znfcp1zduw.com/data/ssuuji002.php)
手書き文字のデータに答え(ラベル)を与えて学習していきます。
答えに対して、与えられた手書きデータにどのような特徴があるのか学習して、手書き数字を判別できるようにしていきます。
例えば、
「8」という数字は他の文字に比べて空洞が二つ存在している…など
無数の特徴量を学習して、本当にその特徴が答えとあっているのか確かめていきます。
つまり、それぞれの数字に表れる特徴を、答えと比較して、正しい特徴を学習 していきます。
現在だと手書きの文字認識は、ニューラルネットワーク(特にCNN)が良く使われています。
実例として、ハガキの郵便番号の識別は機械学習を用いて識別をしています。
②競馬の着順予測
(引用元:https://ja.wikipedia.org/wiki/)
予測したいレースの情報や、出走する馬の情報とレースの結果(ラベル)を与えて学習させていきます。
現在、インターン生も競馬の予測に取り組んでいます!
競馬予測に関する、詳しい取り組みは後日記事にしたいと思います!
教師なし学習
教師なし学習は、「正解となる出力が存在せず、入力されたデータの関係性を学習をしていく手法」です。
こちらも少しイメージしにくいと思いますので、実例を通して説明します。
レコメンド強化
オススメの商品や動画などは人によって違います。
そうすると、教師あり学習と違って、答え(ラベル)を与えることは難しいです。
そこで、答えを与えずに類似性の高いものや、膨大なデータをいくつかのグループに分けて結果を出力する、教師無し学習を使います。
つまり、教師なし学習は「 データの分類が得意 」という認識でまず問題ありません。
Amazonさんで商品を購入した後に、表示されるオススメの商品は、教師なし学習で生成されたアルゴリズムを使って計算しています。
強化学習
強化学習とは、「価値を最大化していく行動 を学習していく手法」です。
一見、教師あり学習と似ているように感じられますが、全くの別物です。
こちらも実例を通して説明します。
①株価予測
(引用元:https://pixabay.com/)
実例として株の投資計画はイメージしやすいと思います。
強化学習の特徴は、教師あり学習と違って、常に正しい答えは分かりません。
例えば、A社の100万円分の株が120万円になったとき…
①全額売り払って、20万円の利益を得る。
②半分を売り払ってB社の株を買い、半分は保持したまま上がるのを待つ。
③全て保持してもっと上がるのを待つ。
この3つのうち、どれが一番儲けが出るのか?という答えは人間にも分かりません。つまり、教師あり学習を使うことは出来ません。
そこで、強化学習の出番です。
強化学習は機械学習に「評価の基準」を渡します。機械学習は与えられた評価が最も高くなる行動を学習していきます。
株の場合は「最も利益が出ること」と設定すれば、利益が高くなる選択を基準に学習していきます。
②AlphaGo
(※Google および Google ロゴは Google Inc. の登録商標であり、同社の許可を得て使用しています。)
AIや機械学習と言えば、良く話題にあがる、AlphaGoですが、これも強化学習の一種です。
評価の基準として、「次の手によって、最終的に勝つのか負けるのか」を与えて学習しています。
3.機械学習の可能性
現在の機械学習の使われ方はザックリ書きました。
上記は一例で、実際にはもっと色々なところで機械学習の研究は進められ、実用化されています。
更に深く考えて、機械学習がどのように進化して、どういった問題を解決していくのか様々私なりに考えてみました。
ここからは、未来の機械学習の可能性について、現在進められてる研究にあわせて説明したいと思います(私個人の主観です)
自動翻訳機 文章要約機
グローバル社会を今後発展させていく中で、言語の壁は最大の障壁の一つではないでしょうか?
仕事上様々な文献を漁りますが、英語の文書はどうしても敬遠してしまいます……。
しかし、機械学習はこれらの問題を解決する可能性が高いです!
現在でも自然言語処理分野の研究は盛んに行われており、実例ですとgoogle翻訳(英→日)は既に高い精度を誇っています。
(※Google および Google ロゴは Google Inc. の登録商標であり、同社の許可を得て使用しています。)
複雑な文章でも中々高い精度で翻訳しています!
勿論、自然言語処理は翻訳だけに留まらないと思います!
文書を正確に捉えることが出来れば、チャットボットやビッグデータのテキスト解析も容易になり、音声と合わせてコールセンターの自動化も実現可能だと思います。
機械が言葉を学ぶことは、これからの社会に多大な利益を期待できます。
移動の最適化
通勤、通学、旅行、帰省…など日常様々場面で、移動はついて回ります。
最近は、電車の最適な乗り換えや、渋滞を検知して渋滞を避けたルートの表示はありますが、
最も安く、最も早く、最も楽に移動するには、どうすればいいのか? という問題は今も研究が続けられています。
機械学習は利用すれば、これらを一挙に解決できる可能性があります!
例を1つ挙げると、信号の最適化
(引用元:http://frame-illust.com)
現在の信号のタイマーは交通量から人間が統計的に分析や、センサー式で車や人を判断してタイマーを構築しています。
そこに機械学習を使って計算し、より最適なタイマーを構築する事が可能になります!
また、車の自動運転も、ある種の機械学習を使った交通の最適化の一つだと思います。
このように、様々な場面で機械学習を組み込んで交通インフラの大幅な改善が期待できます!
ロボット
機械学習、AIが向かうゴールは人間の代わり…つまりロボットです!(個人の主観です)
ロボットと一言で言っても、ロボットの捉え方は人それぞれだと違うと思います。
私が言及するロボットは「自律的に動き、活動するロボット」です。
(引用元:https://www.photo-ac.com/)
現在のロボットは人間の命令ありきで動作しています。(段ボールを○○まで運んで。△△について話して…など)
これらを飛び超えた自律的なロボット…つまり、AIを積み込んだロボット が機械学習の進化で実現できると考えています!
ロボットがいれば、ありとあらゆる人手不足、労働力不足が解決すると思います。
ロボットによる、全ての自動化は人類の一つの夢だとゴマちゃんは思います。
4.現在の機械学習の課題
機械学習の可能性はザックリ書きました。
個人の主観なので願望も入っていますが、実現する可能性は十分にあると思います!
しかし、機械学習の夢や可能性の話と比較して、現在の機械学習は夢には遠く及びません。
最後に現在の機械学習の課題を整理して終わりたいと思います。
現在の機械学習の立ち位置と課題
2.機械学習の実例で、いくつか実例を紹介させていただきましたが、
社会全体でみると、機械学習が実用化レベルに達したとは言えません。
何故、実用レベルに達していないのか?
インターン生内で様々議論した結果、大きく分けて2つの原因があると結論が出ました。
①世の中的に機械学習を扱う為の環境が十分でない。
②機械学習が十分な精度が出せていない。
です。
ざっくり提示しましたが、①はなんとなくイメージ出来ると思います。
しかし、②精度が悪い、に関しましては一言で言ってもザックリし過ぎているので簡単にまとめます。
機械学習の精度を上げるには大きく分けて3つのポイントがあります。
①データの質、量を改善する
②機械学習アルゴリズムの改良
③別の機械学習アルゴリズムを選択
以上三点を軽くまとめて、今回は終わりたいと思います。
①データの質、量を改善する
機械学習は、適当にデータを集めて、学習させても思うような精度は得られません。
今の機械学習は、「データの質=機械学習の精度」 と言われるぐらいデータの質は大切です。
しかし理論的に、「機械学習に最適なデータの形」はまだ研究段階で、絶対的に正しいデータの形は確立されていません。
つまり、人間が特徴を抽出して、機械学習が計算しやすいような形に加工していく 事が、データの質を上げる為には欠かせません。
加えて、データ量ですが、深層学習を例に考えてみると、深層学習をする為には何十万、何千万のデータが必要と言われています。
深層学習に限らず、基本的に機械学習は与えるデータ量が多いほど精度は上がりますので、十分なデータ量を確保する事はとても大切です。
まとめると、大量のデータから特徴量を抽出して、機械学習に最適な形に加工することは、とても困難で時間がかかります。
②、③機械学習アルゴリズムについて
精度を上げる為のもう一つの困難が「機械学習アルゴリズム」です。
一言で「機械学習アルゴリズム」と言っても無数に種類があります。(ランダムフォレスト、単純ベイズ、k近傍法、CNN…etc)
その中から、用途にあった最適なアルゴリズムを選択する為には、アルゴリズムを深くまで知る必要があります。
しかし、機械学習のアルゴリズムの中身は高度な数学の計算式が多いので一般人には取っ掛かりにくくなってます。
また、精度を上げるための細かい改良も、アルゴリズムの仕組みをしっかりと理解する必要があるので、とても困難で時間がかかります。
まとめ
現在の機械学習の課題をまとめると、
①大量にデータを集める必要がある。
②大量データから特徴量を抽出する必要がある。
③集めたデータを機械学習に適した形に加工する必要がある。
④高度な数学で構成された、複雑なアルゴリズムの理解する必要がある。
になります。
以上が入門編になります。
機械学習は、まだまだ課題はありますが夢の技術の一歩目であることは間違いないと思います。
次回以降は、機械学習の中身について詳しく触れていきたいと思います。
数学を活かせる環境を探し求めてIT業界に来ました!
まだまだ修行中の身ですが、様々な経験や考えを記事にしてきたいと思います!!