自分を少しでも良く見せようとして後から落ち込むことってありますよね。最近、社内の仲間から「AI(機械学習)の基本的なこと、入門的なことはつっちー(僕)に聞いたらええよ」みたいになってきたんですけど(僕がAIエンジニアを目指しているから)、、、僕は度々わからないことを知ったような顔をして後から後悔することが多いです 汗
そこでAI(機械学習)に関する知識を入門レベルから整理していくことにしたんですが、この取り組みの背景として、つい先日もこんなことがありました。


つっちー、AI(人工知能)と機械学習って基本的に何が違うん?入門者にもわかるように教えてー(^^)


AI(人工知能)と機械学習の違いは、


違いは!?


・・・・・。言葉の違いですかね 汗
・
・
・
そして別の日にも、、、


つっちー、機械学習ってよく聞くけど、コンピュータがどんな風に学んでいくの?入門レベルで教えてや。


機械学習っていうのは、自己学習していくプログラムですよ!要するに・・・・・コンピュータが学習していくんです 汗




・・・それって要は機械が学習するってことやろ? うーん、あんまりわからんわ。つっちー実はAI(人工知能)ちゃんと理解してないんじゃない??


・
・
・
ああ・・・(ノД`) ついこの前、、
「土屋さん(つっちー)はエンジニアに向いてない、グループ会社に異動ね。」
って言われて僕は左遷されてきたばかり。(その時の話はこちら↓)
さらにエンジニアとしてのスキルだけじゃなくて、AI(人工知能)についての基本的な知識も全然無い自分を認めざるを得ず、僕は落ち込んでました。AIエンジニアを目指しているのに・・・。
これまで勉強はしてきたけど、勉強しただけで実は理解していなかったという悔しい現実。こんな背景もあって僕はAI(人工知能)、機械学習に関する基本的な事柄を再入門として整理し、見直していくことにしました。
機械学習ってそもそも何?・・・など入門的な知識をまとめてみた
そして後日、復習した内容を活かして偶然にもタルミホの質問に答える時がやってきました。


つっちー、最近熱心に勉強してるんやって?AI(人工知能)について基本的なことから詳しく教えてー。




もちろんですよ!


そもそもまずAI(人工知能)っていうは、人の知的な活動(話すとか、判断するとか、認識するとか)を自動化したものや技術、研究分野の総称なんです。


うん、うん。


あと、機械学習っていうのは、AI(人工知能)を実現するために現在中心となって使われている技術で、プログラム自身が自動で学習していく仕組みです(^^)


自動で学習していく仕組み?


はい。ちょっと分かりづらいんですけど、簡単にいうと、コンピュータがデータに潜むパターンや傾向を掴んで、そこから未知のデータの予測や判別といったことができるようになるんです。


まだあんまりイメージがわかないなあ


難しいですよね。例えば、「結婚年数」と夫婦間の「愛の深さ」の関係性を聞き取り調査したとします。


「結婚年数と夫婦間の愛の深さを数字で表現してください」、と調査していったら、こんな声が聞こえてくるかもしれないですよね。


うん、うん。


・・・このとき、聞き取りして集めた情報(データ)をもとに、例えばこんな風にグラフ上に点が取れたとします。


結婚年数が長ければ長いほど、愛が深まるような傾向が見えてきましたよね!!世の中のリアルはどうかわかりませんけど・・・


なんか線が引けそうやん。こうやって。


そうですね!これってすごいことですよ!


え?何がすごいの?


まだ聞き取り調査をしていないような未知のデータ、例えば結婚年数35年の夫婦に対しても(グラフ上の赤の点のあたり)、「愛の深さ」が予測できそうですよね!


確かに!


これが機械学習でやっている一例なんです。機械学習とは、データに潜むパターンや傾向を掴んで、そこから未知のデータの予測や判別といったことができるようになることでしたよね。


うん、うん。


つまり、聞き取り情報(データ)からパターンや傾向を掴んで、データがない結婚年数35年の夫婦の愛の深さ(未知のデータ)についても予測ができるということです。これが機械学習です。


なるほど〜!つっちーやるやん!!
機械学習とは、データからパターンや傾向を掴み、それを利用して未知のデータに対しても予測や判別を行う技術。


今回の記事の折り返し地点までやってきました。後半部分からは少し専門的な内容になるので、ここで熱いコーヒーを入れて一旦休憩しましょう。(要点だけ知りたい人は青色の「ここまでのまとめ」だけ読んでくださるのが良いかもしれません)
機械学習(教師あり学習)の基本的な流れ
AI(人工知能)や機械学習の基本知識を再入門として整理して、タルミホに喜ばれて少し自信がついた僕。しかし、以前ヨネの質問に上手いこと答えられなかったままでいることがどうしても悔しく気がかりでした。そこで改めて僕は、ヨネに機械学習に関する説明をすることにしました。


ヨネさん!先日質問頂いた、AI(人工知能)が学んでいくステップ、わかりやすいようにまとめてきたので聞いてください!


そうなん?ええよ


機械学習は、AI(人工知能)を実現するために現在中心となって使われている技術で、機械学習には「教師あり学習」と「教師なし学習」の2つがあります。


今回はよりわかりやすい「教師あり学習」の基本的な流れについてお話しますね。


そうなんや。


まず、機械学習(教師あり学習)の基本的な流れですが、
- データを準備する
- モデルを構築する
- モデルを評価する
っていう手順で進めていきます。要するにこんな感じです。


よくわからん単語がいきなり出てきたけどとりあえず聞くわ。順番に説明していってな。
まず、機械学習の基本的な流れは、「データを準備する」→「モデルを構築する」→「モデルを評価する」という手順で進む。
機械学習の流れ ステップ1:データを準備する
まずは「データを準備する」工程からスタートです!!


そもそも実用的なAI(人工知能)をつくるにはデータが必要なんです。




現在AI(人工知能)の中心となっている技術が機械学習でしたよね。機械学習はデータから学習していく仕組みです。


うん、うん。


つまり、学習するためのデータの質が悪ければ、出来上がったAI(人工知能)の質も悪くなるんです。機械学習を活用していく際には、データが命とまで言われています。


データの質が悪いって???


例えば、子供時代の勉強を思い出してみてください。
データの質が悪ければ実用的なAI(人工知能)を作るのは困難
- データに信憑性がない → 教材の内容が間違ってるから勉強にならない
- データに欠損がある → 教材の文字が印刷ミスで読めず勉強にならない
- データが足りない → 教材に載っている問題が少ないから全然実力がつかない


なるほど!確かに勉強するための教材がダメなら実力は付かんわな・・。


そうなんです。この例と同じように機械学習の場合では、データを機械学習に適用可能な形に加工する処理が必要なんです。


また、データは、「訓練データ」と「テストデータ」の二つに分割します。これについては後から触れますね。今は二つに分けるんだな〜ぐらいでいてください。


「訓練データ」と「テストデータ」の二つかあ。ようわからんけど後で説明してくれるならまあいいや。


つまり「データを準備する」という工程をまとめると、信用できて充実した内容の十分な量のデータを準備して、訓練データとテストデータの二つに分割する、ということです。
「データを準備する」という工程では、信用できて充実した内容の十分な量のデータを機械学習に適用できる形式に加工する
機械学習の流れ ステップ2:学習モデルを構築する
データを準備した次は、「モデルの構築」をする工程に入ります。


「モデルの構築」は
- 機械学習アルゴリズムの選択
- モデルの学習
の二つの工程があります。
機械学習の流れ ステップ2−1:モデルの構築(機械学習アルゴリズムの選択)
まずは、「機械学習アルゴリズムの選択」からお話していきます。


!?機械学習アルゴリズム?モデル?何それ?


順を追って説明していくんでご安心ください!


まず、アルゴリズムとは、コンピュータの計算処理、処理のやり方のことです。なので機械学習アルゴリズムとは、機械学習の方法のことで、いろんな種類があります。


ちょうど、泳ぎ方が「クロール」や「平泳ぎ」、「背泳ぎ」など、色々あることに似てるかもしれません。
スピードを出して泳ぎたいならクロール、ゆったり泳ぎたいなら平泳ぎ、のように目的に応じて適切な泳ぎ方がありますよね。


俺はクロールでゆったりと泳ぐ派やけどな!




・・・・・・・・。


解きたい問題(目的)によって、適した機械学習アルゴリズムが変わってくるので、どれにするかを選んでいきます。


じゃあ、モデルって何なの?


モデルとは、数式で「事象を簡単にして本質を表したもの」のこと、つまり、パターンやルールを数式で表したものです。学習方法と捉えていただくとわかりやすいかもしれません。


どの機械学習アルゴリズムにもとづいて学習モデル(学習方法)を構築していくかを決める工程が、データの準備に続く「モデルの構築(モデルの選択)」という工程です。


なるほどねー
「モデルの構築(モデルの選択)」という工程では、どんな機械学習アルゴリズム(機械学習の方法)にもとづいて、データのパターンや傾向を数式で表していくかを決める
機械学習の流れ ステップ2−2:モデルの構築(モデルを学習させる)
「機械学習アルゴリズムの選択」の次は、「モデルの学習」に入っていきます。


続いてですが、次は選んだモデルを学習させていきます。
ここで思い出して頂きたいんですけど、「データを準備する」工程で「訓練データ」と「テストデータ」の二つを準備しましたよね。


うんうん。「訓練データ」と「テストデータ」、なんかあったな。


まず、訓練データを用いて、モデルに繰り返し、学習(データのパターンや傾向を掴ませる)させていきます。


訓練データをトレーニングデータっていう場合もありますよ。


学習、学習っていうけど、データのパターンや傾向を掴むってどういうこと?・・・あっ、、こないだつっちーがタルミホに説明してたあれのことか・・・。それらしい線を引くっていう。


そうですそうです!!「モデルを学習させる」っていうは、訓練データから、データのパターンや傾向、規則を掴ませていく(表現できる線を引く)ということです。。


ヨネさんが思い出してくださった例は、非常に単純なものなんですが、直線はy=ax +b という数式で表されますよね。コンピュータが、aやbを調整して適切な直線の傾きや位置を調整していってるんですね。


なるほど!
「モデルの構築(モデルの学習)」という工程では、機械学習アルゴリズムに基づいて、訓練データからデータのパターンや傾向をモデルに掴ませていきます。つまり、データのパターンや傾向をうまい具合に表現できるモデル(数式)を模索していきます。
機械学習の流れ ステップ3:モデルを評価する
「モデルを構築する」の次は、「モデルを評価する」工程へと移っていきます。


何かすごいけど、そもそも学習させたモデルが予測する精度って本当に信用できるの?


おっしゃる通りで、学習させたモデル(学習モデル)による予測精度が信用できるものなのかを確かめる必要があります。そこで登場するが、テストデータです!!


そういや、最初の「データを準備する」工程で、「訓練データ」と「テストデータ」に分けてたな。


テストデータは、学習モデルが新しいデータに対してどの程度の予測精度を期待できるかを確認するために使います。


そっか、学習モデルが実際にうまく機能するのか、予測を信じてええんかを確かめるんやな。でも、そもそも訓練データとテストデータに分ける必要ってあったの?


ヨネさん、鋭いですね!!それは大事な点で、分けることが必要です。学習モデルを構築するのに使用した訓練データは、モデルの評価に使えないんですよ。


モデルは学習したデータを覚えているんで、学習したデータは百発百中で上手く判定、予測することになっちゃって、評価の指標としてはダメなんです。


なるほどなー
「モデルを評価する」という工程では、学習させたモデルがうまく機能するのかをテストデータを用いて確認する
まとめ


長くなりましたが、改めて、機械学習(教師あり学習)の基本的な流れは下の図のように、
- データを準備する
- モデルを構築する
- モデルを評価する
となります。


機械学習の流れは、なんかCDの流し売りに似てるな!!




へ?


お店に来るいろんな人の話を聞いて情報を集める


そんで情報を溜めていくと次はこのアーティストが来るんじゃないか!っていう傾向が見えてきて予想が立つ。


そして実際に店舗に並べながら、お客さんの反応を見ては本当に当たるかを確かめていくんや。


ヨネさん、すごいですね!!確かに似てますね!!


昔CDショップで働いていた当時、「西日本一の韓流バイヤー」の異名を獲得したからな。K-popファンのおばちゃん集団の情報収集がいきたなあ。


おばちゃんたちって面白くて「次はこの子たちが来るよっ!」て教えてくれるんやな。ほんとかよ?って思って実際試しに仕入れて売ってみると飛ぶように売れ出してびっくり、そしてまたそこから、、、、


・・・・・・(古着と音楽になるといつも止まんなくなる)
さて、ここまでAI(人工知能)や機械学習の基本的なことについて、学んできたことを整理して仲間に伝えてきたわけなんですが、振り返ってみるとAIエンジニアになるには、当然のこととして以下のことを明確に理解しておく必要があります。
- AI(人工知能)とは・・・AI(人工知能)とは、単なる概念であって、人の知的な活動(話す、判断する、認識するなど)を自動化したもののこと
- 機械学習とは・・・AI(人工知能)の中心となる技術で、データから傾向やパターンをコンピュータ自身に見つけさせる仕組みのこと
- 機械学習の基本的な流れ・・・データを準備する → モデルを構築する → モデルを評価する
今回はAI(人工知能)や機械学習に関する基本の「き」としての情報整理ができました。今後も、AIエンジニアを目指してさらに詳しく、機械学習に関する理解を深めていきます。
こんな風に、知ったかぶりをしてしまって自己嫌悪に陥ったり、わかっていると思いながら人に聞かれて答えられず、もどかしい経験をしたことがある人は意外に多いかもしれません。実際僕は今回の経験を通じて、AI(人工知能)や機械学習について全然理解していなかった自分に直面し、「今まで僕は何をしてきたんだ・・・」と思わずにはいられず落ち込みました。
けれど、そんな体験を通じて、人に教えることが自分の理解を深めることをしみじみと実感。日々、学びを文章にしながら、AI(人工知能)なんて全然わからん!という方でも楽しく読めるそんなコンテンツ作りに、これからも楽しみながら取り組んでいきます!
次回は、さらに機械学習について詳しく情報を整理、理解していくつもりなので、よかったらまた読んでみてください(^^)
コメントをどうぞ
ステップ2−1のところ(まとめらへん)で、”機械学習アルゴリズム”という言葉と”モデル”という言葉を間違ってませんか?
こんにちは。
つっちーさんの挫折記事読んで、面白かった(すいません(^_^;))ので、新しい記事も読もう、と思い読んでみました。
以前にもちょっとだけ見た記憶が(結婚年数のところに見覚えが…)あります。自分は機械学習はまだ学んでいませんが「機械学習ってどういうこと?」ってイメージがよりつかめた気がします!また、見に来ようと思います:D
通りすがりさん、ありがとうございます^^
僕の引き出しが少ないので例えなどは使いまわしているところはあります 汗
ぜひまた読みにきてください〜(^^)
最初記事が長い印象を受けましたが、説明がわかりやすくて、全く知識がなくても理解できました!なるほど なるほど と読み進められたので良かったです
ありがとうございます
少し長かったですよね 汗 あまり長くなりすぎないよう気をつけていきます。こちらこそコメントありがとうございます!