近頃世の中を変える技術としてAI(人工知能)の活用が非常に注目されており、様々なところで「AI(人工知能)」という言葉を耳にしますよね。そんな背景もあって「AI(機械学習)エンジニア」という言葉を聞くだけでなんだかカッコいいイメージが湧いてくる人も多いかもしれません。(僕の場合はそれが強すぎて後先考えずAIエンジニアになろうと会社を辞めました 汗)
※機械学習とは、AI(人工知能)を実現するための一つの技術です
AIエンジニアを目指しながら記事を書いている僕は、AI(人工知能)をはじめとした新しい技術について学ぶことがとても面白いと感じているのですが、学ぶことが目的化してしまう、、なんていう失敗をやってしまいがちでこれまで何度も痛い目を見てきました。
実際過去にAI(人工知能)に関する参考書を読んだりAIを学べるスクールに通ったりしてきましたが、結局実務で使えるスキルが身についておらず、運よく入社できたAI開発企業からすぐに左遷されてしまった(実力不足で)という苦い経験があります。(その時の話はこちら↓)
(だから今はAIZINEの編集員になって記事を書いてます)
左遷されずにバリバリ活躍できるAIエンジニアになるには、やっぱり機械学習に対する深い理解が必要なんです!そこで今回は、以前に加えてさらに機械学習の知識を整理、理解していくことにしました!
今回の記事のテーマとなっている「教師あり学習」について手っ取り早く知りたい方は、章「機械学習のうちビジネスで最も活用されている「教師あり学習」」から読み進めてください。
そもそもなぜ機械学習を学ぶことがAIエンジニアになるために必要なのかを答えられなかった
実は先日、今ちょうどみなさんが読まれているこのコンテンツの原稿案を、松島編集長に提出した時のことです。
・
・
・
そもそもこんな記事書いてて意味あるの?AIエンジニアになるっていう記事書くこと自体いい加減考え直したら?そんなことよりもっと通常の記事書いてよ!記事!
通常記事はもちろんしっかり書いていきますし、連載コンテンツも何が何でも続けていきます!
まあ、そこまで言うなら仕方ないか。。。というか、なんで機械学習の記事書く必要あるの?
え、、、AIエンジニアには必要な知識なんです。
だからなんで?
・・・・。
と、松島編集長から飛んできた言葉がグサグサと突き刺さりつつ、思いもよらない質問を受けた僕は、悔しいことにはっきりと理由を説明することができませんでした。(にしても、松島編集長いつも風当たり強い… 汗)
正直なところ、「AIエンジニアを目指すんだったら機械学習を学ぶのものだし、世間も注目しているから」という考えが反射的に出てきて、「なんで?って言われても…」という状態でした。自分が情けない…。
僕は、知らないうちに世間のAIブームに流されて、闇雲に進んでいたわけです。
これまで読んできたAI(人工知能)に関する参考書の中に説明があったかもしれないけど、記憶には全然残っていない始末。。。
世間では2012年頃からAI、AIと叫ばれはじめ、そんな世間の流れに飛びつくように会社まで辞めてワクワクする気持ちだけで「AI(人工知能)を実装、活用して目の前の問題を解決していくAIエンジニアになるんだ!」と動いてきた僕。
後先考えずに突っ走る、少し抜けている(少しじゃない 汗)性格もあって、恥ずかしいことに「なぜ機械学習を学ぶことがAIエンジニアになるために必須なのか?」については、ちゃんと考えたことがなかったのです。
そこで、
「なぜ機械学習を学ぶことがAIエンジニアになるために必須なのか?」
という、そもそものところから調べ直すことにしました。
(え?ここからやんの?という声が聞こえてきそうですけど…汗)
数あるAI(人工知能)技術の中で最も成果を上げている技術が、機械学習だった
こうした経緯で「現在機械学習の活用がなぜ叫ばれ、AIエンジニアになるには学べ」と言われているのかを技術書を元に調べ直したところ
「機械学習とは、AI(人工知能)を実現するための一分野で、近年特に大きな成果を上げて注目されている技術である」
という内容を発見!
ここで「だからか!」と僕は気づいたんです!そもそもAI(人工知能)とは、人間のように知能を感じさせるようなモノや技術など全般を指す言葉。そして、AI(人工知能)を実現するための技術には「そういえば機械学習以外にも色々あったな」と過去に記事を執筆しながら学んだことを思い出したのです。
(その時の記事はコチラ)
AI(人工知能)を実現する技術には「機械学習」以外にも「技術A」「技術B」・・・など様々なものがあり、機械学習を使っていなくても機械が知能を持っているかのように接した人が感じるならば、それはAI(人工知能)と呼ばれるということです。
例えば、「おはよう」と言われたら「おはよう」と返したり、「あなたの名前は?」と聞かれたら「〇〇です」と返すようなルールを無数に定めたシステムも、AI(人工知能)になります。
けれども、そんな風に無数にルールを定めなくても機械学習を使ったらコンピュータが自動で学習をして、優れた成果が出るじゃん!ということが近年わかってきたため、機械学習が注目され、機械学習を実装、活用できるエンジニアが必要とされているんですね!
なので、僕が目指しているAIエンジニアという職業は、正確にはAI(機械学習)エンジニアと呼ぶ方がふさわしいようです。
こんな内容を文章に盛り込んだので、あの松島編集長もしぶしぶOKをくれました。
機械学習のうちビジネスで最も活用されている「教師あり学習」
機械学習には「教師あり学習」と「教師なし学習」という二つの手法があって、ビジネスで今最も活用されているのが「教師あり学習」です。例えると、ウナギのさばき方には腹開きと背開きの二つの手法があるように、機械学習にも二つの手法があるということです。
ウナギ屋の大将がウナギのさばき方を体得していなければ美味しいうな重をお客さんに提供できないことと同じように、機械学習の一手法である「教師あり学習」を学ばずしてAI(機械学習)エンジニアになれるはずがないのです!そこで今回はまず「教師あり学習」にだけ焦点を当てて情報を整理していくことにしました。
※後日教師なし学習についても整理しました。詳しくはこちらをどうぞ
そして「教師あり学習」とは、情報とその正しい判断(答え)をセットにしてコンピュータにデータのパターンを掴ませていく機械学習です。(少しわかりにくい表現ですが、以降で詳しく整理していきます)
教師あり学習(回帰)を活用すれば未来が予測できる
ちなみに「教師あり学習」には、「回帰」と「分類」の二つの手法があります。抽象的な表現だけで済ませてしまうと、いつものように「わかった気でいて実はわかっていなかった現象」が起きて痛い目を見るので「回帰」と「分類」については順番にゆっくり整理していくことにします。
まず、教師あり学習の「回帰」と呼ばれる手法から。書籍によれば回帰とは
「正解となる数値と入力データの組み合わせで学習し、未知のデータから連続値を予測する」<参考文献>『仕事ではじめる機械学習』株式会社オライリー・ジャパン.有賀 康顕, 中山 心太, 西林 孝(2018).
・・・・・・・。や、やすやす理解とはいきませんよね 汗。
(何となくイメージつくけど、、、また知ったかぶりが始まる、僕はまだわかってない)
具体例に落として考えてみる。
例えば、お店で働いているとして、明日の売り上げを予測したいとする。
過去の売り上げ情報と、その日の天気とか気温、周辺でのイベント状況とか色んな情報を組み合わせていったら、今後の売り上げの予想を立てられそうな気がする。前これだけ売れたから今日はこれくらい売れるだろう、、みたいな感じで。
これと同じで、「教師あり学習(回帰)」では、「天気が晴れで、気温が◯℃で・・・売上がいくらだった」っていう情報から、売り上げ予測のパターンを掴んでいって、今後の予測ができるようになっていきます。
つまり、前述した難しい引用文に落とし込むと、、、
正解となる数値(過去の売り上げ)と入力データ(天気や気温などの情報)の組み合わせで学習し(売り上げのパターンをつかみ)、未知のデータ(未来の天気や気温などの情報)から連続値(未来の売り上げ)を予測する
となります。
教師あり学習(分類)を活用すれば区別や認識ができる
次に、機械学習には「回帰」とは別の「分類」という手法を見ていきます。書籍によれば「分類」とは、
「正解となる離散的なカテゴリ(クラス)と入力データの組み合わせで学習し、未知のデータからクラスを予測する」<参考文献>『仕事ではじめる機械学習』株式会社オライリー・ジャパン.有賀 康顕, 中山 心太, 西林 孝(2018).
とあります。
・・・・・・・。また超えるべき壁が。。。
例えば、人が犬の名前を覚えようとした時、犬の外見と犬の名前をセットで覚えていきますよね。「犬の外見」と「これは秋田犬という名前の犬だ」というように。
教師あり学習(分類)では、これと同じで、、例えば「犬の画像」と「正解となる犬の名前」をセットで準備して、コンピュータにどんどん渡していって、「この犬の名前は秋田犬だな」、というようにコンピュータにパターンを認識させていく。
その結果、名前のわからない犬の画像をコンピュータに渡してあげた時に、学習したパターンを元に、犬の名前を返すようになります。
つまり、前に出てきたあのややこしい引用文に落とし込むと、、、
「正解となる離散的なカテゴリ(秋田犬、とか犬の名前)と入力データ(犬の画像)の組み合わせで学習し(犬の画像と名前のパターンをつかみ)、未知のデータ(名前のわからない犬の画像)からクラス(正解となる犬の名前)を予測する」
となります。
※離散的・・・連続値とは異なり、間の値を取ることができないものを離散値と言います。例えばコイン投げの回数は、表1.2回、裏1.8回とは表現できません。このようにとびとびでしか数値を取れない場合を離散的と言います。
※カテゴリ・・・事柄の性質を区分する上で最も基本的な分類のこと。範疇。
※クラス・・・分類対象のカテゴリのことを機械学習ではクラスと呼びます。
まとめ
(ふう、、やっと整理できました。。。(僕が))。改めてここまで整理してきた情報をまとめてみると、
- AI(人工知能)を実現するための数ある技術の中で、近年特に大きな成果を上げている技術が機械学習だから、機械学習を学ぶことがAIエンジニアにとって必須
- 知能を感じられれば機械学習を用いていないものでもAI(人工知能)と呼ばれるので、僕の目指すAIエンジニアは、正確にはAI(機械学習)エンジニアと言いたい
- 機械学習には「教師あり学習」と「教師なし学習」の二つがあり、ビジネスで最も活用されているのは「教師あり学習」。だからまず「教師あり学習」を学びたい
- 「教師あり学習」とは、情報とその正しい判断(答え)をセットにして、コンピュータにデータのパターンを掴ませていく機械学習の手法
- 「教師あり学習」には、未知のデータから売上などの連続値を予測する「回帰」と、未知のデータから正しい分類を予測する「分類」がある
ということがわかりましたよね。
これまで見てきたように、AI(機械学習)エンジニアになるには、機械学習を学ぶことが絶対に必要なんです。理解を一つ一つ積み上げることで、たとえゆっくりにでも着実にAI(機械学習)エンジニアへと近づいていけるはず!と信じています!
ただ、今回「AI(機械学習)エンジニアになるためになぜ機械学習を学ぶ必要があるのか?」という問いに僕が答えられなかったことは、笑い話では済ませられない気がするんです、、、。(松島編集長から言われて悔しいという気持ちは抜きにしても)
だって、何をやるにしても目的があって、「なんでやりたいの?」「なんでやる必要があるの?」、そうしたことを自分に質問せずにいるってことは、クラゲみたいだからです。周りに身を委ねて流されちゃってる様子が似てます。
ちなみに、クラゲをディスっているわけじゃないですし、僕は学生時代に海洋生物資源学部にいたこともあって、泳いで数時間で何百匹もクラゲを網で捕獲するなんてこともしてきているので、クラゲには愛着があるほう。
だから今回の僕の姿は、自分が本当に得たいものがわかっていなくて、気づいた時には「こんなはずじゃなかったどうしよう!!」と、そんな事態に繋がりかねない。(何回もそんな体験がある気がするけど… 汗)
「他人が言ったから」「やった方が良いと言われているから」、、と反射的に反応するのは危険で、普段から「なんで自分はこれをやりたいの?」「なんで必要なの?」という問いを大事にして、自分で自分の人生の舵取りをしていきたい!
と、今回機械学習を学びながら気づきました(^^)
今後も、松島編集長からどんなツッコミが入ろうとも、機械学習についての知識を深掘りしていきます!(現在週1ペースで更新していますが、更新がもしも止まった時には松島編集長を説得できるだけの文章が、、、 と思ってください)
しかしそんな事態にはしません!絶対に更新し続けてやるぜ!!
興味のある方は、また次回も見に来て頂けたら嬉しいです。僕が日々学びがら知識を整理していきます(^^)
反省とお詫び 〜機械学習とは?に関する説明の補足
機械学習とは「AI(人工知能)の中心となる技術」という説明を前回の記事で書いたんですが、先日
「AI(人工知能)の中心となる技術って中核とかの意味?」と感想&質問をもらって、そこでまた上手く言語化できずに困って調べ直したんですよね。今回の記事でも少しだけ触れたんですが、現在世間でAI(人工知能)と呼ばれているものを実現する技術には、様々なものがあります。その技術の中で、近年特に大きな成果を上げて注目されている技術が「機械学習」です。
つまり機械学習とは、AI(人工知能)と呼ばれるものを実現するために、現在積極的に中心的に採用されている技術のことを言います。
曖昧な表現を使わず、よりわかりやすい表現になるように日々改善していきます!
<参考>
・有賀 康顕, 中山 心太, 西林 孝(2018).『仕事ではじめる機械学習』株式会社オライリー・ジャパン.
・石井 大輔(2018).機械学習エンジニアになりたい人のための本 AIを天職にする
・Andreas C. Muller and Sarah Guido (2016). Introduction to Machine Learning with Python: A Guide for Data Scientists. O’Reilly Media, Inc. (アンドレアス・C・ミューラー、サラ・グイド 中田 秀基(訳)(2017). Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 株式会社オライリー・ジャパン)
・Sebastian Raschka(2015). Python Machine Learning. Packt Publishing. (株式会社クイープ、福島真太朗(訳)) (2016). 『Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)』
次の話はこちら↓
AI(人工知能)って「なにそれ美味しいの?」ってレベルだった僕が、AIエンジニアを目指してステップを踏んだり踏まれたりしている記事を書いてます。よかったら読んでみてください(実話)。
コメントをどうぞ
犬の絵が下手すぎるw
犬は少し難易度が高かったので、次は猫とかにチャレンジしてみます!