どうもみなさんこんにちは。最先端東大生です。
今回は今話題になっている人工知能や、ディープラーニング、機械学習というものについての概略を大雑把に説明しようと思います。
目次
本記事の想定読者
この記事は「人工知能」「ディープラーニング」「機械学習」という言葉を聞いたことがあるけれど、実際何をやっているのかよくわからないという人に向けて書いています。
なので人工知能に興味のある中学生・高校生・大学生・社会人の方、もしくは機械学習プログラミングをやったことがなく、これから始めてみようと思っている人にとってちょうど良い記事になると思います。
人工知能・ディープラーニング・機械学習、それぞれの意味
さて、「人工知能」「ディープラーニング」「機械学習」という言葉それぞれの関係を僕なりに説明していきます。
正直、これらの言葉の定義は様々なので厳密な定義はなく、使われる文脈によって変化するとは思いますが、僕なりにスッキリする解釈を今回は紹介します。
まず、これらの概念を図にすると以下のようになります。
エンジニアたちは人工知能という言葉を仲間内で使うことはあまりないです。
なぜなら、人工知能というのは音声認識や、画像識別といったテクノロジーを外の世界から見た時の表現だからです。
つまり、みなさんはスマートスピーカーやGoogle翻訳を見て、「あ、これが人工知能だ」と思うと思いますが、これらの製品を作っている人は人工知能という言葉を使うことはあまりありません。(研究分野によっては多用することはあります)
そしてエンジニアたちが音声認識などのテクノロジーを作る際に意識するのは機械学習・ディープラーニングといったものです。
さらに機械学習というのは様々な手法の総称なのですが、その中にディープラーニングが含まれているといった位置関係になっています。
つまり、音声認識、自動翻訳、顔認識といった技術を外から見た場合は人工知能、中から見た場合は機械学習・ディープラーニングという言葉が使われる場合が多いのではないかと考えています。
機械学習ってなに??
ということで機械学習って実際に何をやっているのかを説明していきます。
みなさん、中学生の頃こういう問題をやったことがありませんか?
2点(2,3), (4,9)を通る直線の方程式を求めなさい。
この問題は最終的にy=ax+bのa, bを求めればよかったですよね。
そう、機械学習がやっていることは根本的にはこれ!
すでに分かっている点を与えて、それに一番近い線を引かせるというのが機械学習です。
2点を通る直線くらいだったら人間でもできますよね。
ではこれらに一番近い直線は?
まだ引けそうですね。
じゃあこれは・・・?
こうなってくると回帰計算はとても手で計算することはできなくなります。
だからコンピュータに線を引かせてしまおう!というのが機械学習です。
全ての機械学習の根本にはこの線を引くという作業があります。
なので機械学習を勉強する際は兎にも角にも線を引くことを念頭に置いておきましょう。
もしくはy=ax+bのa, bをコンピュータに求めさせていると考えても良いでしょう。
回帰計算などはy=ax+bのような単純な一次関数になるわけではなく、もっと複雑になって求める文字もa,b,c,d,,,,みたいに増えていきますが、基本は変わりません。
以上が機械学習の概略です。
人間がデータを与えて、それを機械が学習していく。
なんとなく言葉のイメージがつかめてきたのではないでしょうか?
ただ、学習させるだけだとなんの意味もありません。
y=ax+bのa,bがわかっただけでなんの意味があるというのでしょうか。
そう、機械学習は学習そのものが目的ということは少ないです。
学習をさせて、未知のデータに対して予測をするというのが機械学習のミソなのです。
例えば過去の株価のデータをコンピュータに学習させて線を引かせます。
何が言いたいかもう分かりますよね?
そう、株価のデータを学習させて線を引かせることが目的なのではなくて、その線を明日まで延長して明日の株価を予測させることが目的なのです。
機械学習は基本的に学習と予測が1セットです。
機械学習が何をしているかわかりましたか?
機械学習を利用するために必要な知識
それでは最後に機械学習を利用するために必要な知識について説明します。
まずそれらをリストにすると
- プログラミングの知識
- 数学の知識(高校数学までできると良い)
- 英語
の3つの力です。
プログラミングの知識
まず、機械学習というのはコンピュータに計算をするように命令を出さなくてはならないのでプログラミングの知識が必要です。
Excelなどのソフトでもできないことはないですが、やはりプログラミングの知識があったほうが柔軟に利用できます。
そしてその中でも使用する言語はPythonかRです。
機械学習やデータ分析に向いている言語としてPythonとRはよく挙げられます。
僕はPythonしか使ったことがないのでRはどういう利点があるのかは分かりませんが、とりあえずPythonは機械学習だけでなく、何にでも使えるプログラミング言語なので習得して損はないと思います。
とはいえ、そんなにPythonの深いところまで勉強する必要はありません。
簡単な条件分岐やループが書けるくらいになれば十分機械学習を利用することができます。
Rは機械学習とかデータ分析にのみ強いということをよく聞くので、これから色々な分野でプログラミングに挑戦したいと考えている方にはPythonをお勧めします。
数学の知識
先ほど、機械学習はy=ax+bのaとかbを求めることだと言いましたが、実際に機械学習をするときにはそんな簡単な関数を扱うことはありません。(手計算でできてしまいますからね)
なので、もっと面倒な計算をコンピュータにやらせるわけですが、面倒な計算の中身を知る必要はないのですが、なんとなくコンピュータはこういう計算をしているんだなーとイメージを掴むには高校の数学の知識があると良いです。
その中でも特に必要な知識は行列とベクトルです。
機械学習はベクトルと行列の計算をめちゃくちゃします。
人間が計算する必要はないのですが、これらの知識があればコンピュータがどんなことをやっているのか外から眺めたときにわかり、より正しく計算をさせることができるのでこれらの知識はあると良いと思います。
英語
そして最後は英語。
技術系の記事でいつも必要だと書かれているのがやはり英語です。
もちろん、日本語での解説記事も世の中には数多く存在します。
しかし、それよりも何十倍、何百倍といった量の英語の記事が世の中には存在します。
解決したい課題によっては英語の記事しか見つからない場合や、英語の記事の方が分かりやすい場合も多々あります。
だから、機械学習に限らず何かを開発しようとしている人はある程度英語を読むことができることが必須の時代になっています。
だから英語は絶対に勉強しましょう。
まとめ
以上が「人工知能」「ディープラーニング」「機械学習」についての説明でした。
これらの単語がよくわからなかった皆さんのお役に立てれば幸いです。
このようなイメージを持って勉強すると結構すんなり難しいことも理解できるのでお勧めです。
ディープラーニングについて
ついでにディープラーニングの説明もしちゃいましょう。
先ほど説明したとおり、ディープラーニングというのは機械学習に含まれています。
ということはディープラーニングも根本的にはy=ax+bのaとかbを求めることになります。
ただ、ディープラーニングともなると事情はそう簡単でもなく、aとかbの文字数が1000個とか10000個とかそれ以上の数になってきて、人間が手計算でやるには一生かけてもできないくらいの計算になります。
それをコンピュータにやらせて短い時間でやってしまおうというのがディープラーニングです。
という感じでこの後に書いていこうと思ったのですが、続きはまた今度加筆します。
本ページは昨日9回読まれ、本日3回読まれています。もし、この記事に関連記事のリンクを貼りたいブログ運営者の方はこちらをご覧ください。