皆さんこんにちは。
本日からQiitaをはじめました。
普段は機械学習エンジニアとして、AI開発やWebアプリケーション開発に関わっています。
プライベートでは新米パパになりました。
4ヵ月になる長男を抱っこしながら記事を書いています(笑)
記事を書くキッカケとして、まだ参考書がなかった2017年から機械学習に取り組んできましたが、
地道に苦労して機械学習を習得した経験は必ず誰かの役に立つと感じています。
そこで、キャリアアップを目指す人達をサポートできる記事を書こうと決めました。
記念すべき初投稿のテーマは『機械学習は何のために作られたのか?』です。
どんなに良い参考書を読んでも、機械学習の目的が分かっていないと何も習得できないと思います。
まずは全ての基礎となる全体像を理解していきましょう。
SNS でも色々な情報を発信しているので、記事を読んで良いなと感じて頂けたら
Twitterアカウント「Saku731」 もフォロー頂けると嬉しいです。
機械学習とは
皆さんこんな苦労を味わった経験が有るのではないでしょうか?
「機械学習の何から学んだ良いのか分からない」
「ロジステック回帰、決定木、サポートベクターマシン、、色んな手法がありすぎる」
機械学習を習得する上で苦しむポイントの1つに 覚えるべき手法の多さ が挙げられます。
参考書を1冊読み解くだけでも5~10個の手法を理解する必要があります。
しかも、それらの手法を 「いつ」「どうやって」使い分けるのか、
丁寧に説明されている参考書に出会った事がありません。
それなら逆に、様々な手法が存在する理由や、それらの共通点から理解してはどうでしょう?
その方がスピードを持って機械学習の全体像を理解する事が出来ます。
機械学習すべてに共通する目的。
それは良いモデルを作るということです。
図を見て頂くと分かる通り、これが機械学習のすべてです。
『 コンピュータに大量のデータを与えて、予測を行うための法則性を見つけ出す 』
しかし、世の中には様々な種類のデータが存在します。
- CSV(エクセル):売上データ、顧客データ
- 画像:インスタに投稿された写真、監視カメラの映像
- 音声:会議のボイスメモ、コールセンターの通話録音
どういったデータであれ、良いモデル(精度の高い予測)を作る事が機械学習エンジニアには求められます。
そのための道具箱として様々な手法が用意されているのです。
- 売上データ ⇒ 回帰(重回帰, 回帰木 など)
- インスタの写真 ⇒ CNNベースの手法(VGG16, LesNet など)
- ボイスメモ ⇒ 時系列解析(RNN, LSTM など)
料理で例えるとすべてに共通する目的は「おいしい料理を作る」です。
そのためには、**材料(=データ)に応じて適切なレシピ(=手法)**を使い分けるのと同じです。
機械学習に関連する用語の整理
機械学習の目的が見えてきた所で、もう少し視野を広げてみましょう。
機械学習で最初に苦戦する部分として、
AI / 機械学習 / ディープラーニング
これらの違いを理解できない人が多い印象です。
AI(機械学習)が流行りだした2018年のニュースや記事を読むと、この3つに関して
「書いた本人もあまり理解できていないのかな?」と感じる文章が多かった記憶があります。
ここの違いを理解しておかないと、せっかく勉強しても
使える知識として体系的に整理されないので重要な論点です。
まず3つの用語 AI / 機械学習 / ディープラーニング には図の様な包括関係があります。
(出典:https://www.shikaku-square.com/media/ai-license/001-how-to-study-deep-learning-for-general/)
見て頂くと分かるように、「AI > 機械学習 > ディープラーニング 」という包括関係です。
言葉で整理すると以下の様になります。
- AI ( Artificial Intelligence ):
- 1950年代の第一次AIブームで誕生した概念のこと
- 人間の知性 ( Intelligence ) をコンピュータで人工的 ( Artificial ) に再現する事が目的
- 機械学習:
- AIを実現するために考えられた具体的な手法のこと
- 大量のデータから法則性を見つけ出して、将来を予測する事が目的
- ディープラーニング
- 機械学習の中でも、 ニューラルネットワーク という技術を使用する分野のこと
- 特徴抽出 と呼ばれる最も重要な(かつ手間のかかる)AI開発工程を自動化することが目的
こういった基礎知識を大事にすることで、記事・参考書の理解が一気に深まります。
また、機械学習の案件に関わると、プログラマーでなくとも当たり前に知っておくべき知識となってきます。
さいごに
次回は AI開発のプロジェクト全体像を整理したうえで、
**「どこで」「どのように」**して機械学習が使われるのか書こうと思います。
※(2019/12/24 追記)「第2回:AI開発のプロジェクト全体像」を投稿しました
機械学習を勉強した方なら聞いた事があるかもしれない
**「前処理」「学習」「チューニング」「検証」**などの各トピックを
AI開発プロジェクトの進行と紐づけて整理します。
その次の記事では、プログラミング言語 Python をベースにして
具体的な勉強方法を整理して行くのでご期待ください。
※(追記)「第3回:Pythonのコーディング手順を全公開」を投稿しました。
最後までお読み頂きありがとうございました。
【P.S.】
SNS でも色々な情報を発信しているので、記事を読んで良いなと感じて頂けたら
Twitterアカウント「Saku731」 もフォロー頂けると嬉しいです。