スッキリわかる機械学習入門

スッキリ機械学習の「黄金の回転」

こんにちは、スッキリわかるJavaな人としてPythonとは縁遠いというポジショントークをしつつも、「機械学習の学習の学習支援」をすることがある中山です。1

今回、「プログラミング経験者 && 機械学習未経験者」の私が、『スッキリわかる機械学習』の編集・監修にたずさわらせていただきました。ただ、私自身、実はこの機械学習の分野には苦手意識というか、挫折した過去があってですね...。

しかし、この「スッキリわかる機械学習入門」の監修を通して、ある程度わかるようになった自分がいます。その鍵となった、「黄金の回転」2について、この記事ではご紹介します。

機械学習の世界は、「広大すぎる」

私はもともと、AIについてまったく興味がなかったわけではありません。AIとかわかると「格好いいんだろうなー」とか、「給料増えちゃったりするんだろうなー」とか、「話題だし知っておかないと」とか、何度も思いましたとも。

ただですね....。

AI業界の人、ごめんなさい。 機械学習の世界って、ほんと無秩序に広すぎませんか?!

私もそれなりに飲み込みは悪くない人間のつもりなんですが、いざ学ぼうとすると「いろんな専門用語やテクニック」が「前後も脈絡も関係なく」でてきて、どうも頭に入っていかないんです。

「AIと普通のプログラムの違いはなに?」というところからはじまりつつも、

  • なんか調べていると「分類」とか「回帰」ってでてくるけど、他に何があるの?
  • 「分類は教師あり学習の一種」とか「ロジスティック回帰って、分類」とかサイトに書いてあるんだけど、大混乱
  • っていうか、そもそも機械学習の手法は何種類あって、それどこまで使えるようになったら卒業なの?
  • まずは前処理できなきゃかなって、ググったら、「標準化」とか「線形補間」とか難しそうな用語も死ぬほどいろいろ出てきて、これ全部覚えないとだめなの?
  • ねぇ。もう、なんか「前処理」ですら途中でわかんないし、AIなんか作れず、動かなくて楽しくないから、もういいや...

みたいな感じでした。

全ての専門用語が大事そうに見えて、しかもその用語の関係性や学ぶ順序が全くわからず、本やサイトによって書きくちが違う。
だから、もう、「どこから手をつけていいかわからない」「手をつけても挫折する」状態。

きっと私のようなひと、少なくないと思います。3

間違いの元凶は、「技術用語」を基準に道を探していたこと

でも、今回の『スッキリわかる機械学習入門』に携わったあとになって気づいたのですが、そもそも「学び方の道の探し方」から間違っていたんですね。

大小さまざまな技術用語が、無尽蔵に、しかも相互関係していろいろ登場するのが機械学習の世界。
だから、「それを1つ1つ順に理解して潰そう」なんていう考え方をすると、混沌という名の地獄の淵が口をあけて待っているわけです。

あと、いわゆる「前処理 徹底マスター」みたいな本やサイトにいきなり手を出したことも間違いでした...。前処理って一口にいっても、簡単なものから超絶難しい高度なものまでいろいろで、そのどこまでを学べば良いかがわからない。だから、まず1冊マスターしようとして、「無理だ...」と諦めてしまう。

結果、機械学習を全く体験できないというオチでした。

「きのこ と たけのこ」 という救世主

そうこうしているときに、著者の須藤さんやスッキリPythonの国本さんと話していて、ふと言われたのが、

 「まぁいろいろ細かいテクはあるけど、 超絶単純な 前処理=>学習=>評価 をまずはやってみればいい」

っていうアドバイスでした。で、実際に彼らが作った練習用の題材(当社の研修テキスト)を見てみたら、なんと、

 「身長と体重をいれると、 キノコ派 か タケノコ派 か推測するAI」

を作ってみるという、なんともふざけた興味深い題材だったんですね。

この題材、実は「(ほとんどなにもしない)前処理=>(超絶単純な)学習=>(超絶単純な)評価」だけをシンプルにやるもので、プログラムは実質4行。

たぶんこれ、機械学習の専門家の人とかデータサイエンティストの人がみたら、

「なんだこの手抜きは! データに欠損ないとかありえんだろうが。評価こんな手抜きしていいと思ってんのか。学習ではもっと適切なモデルを選べ! ・・・云々・・・」

という怒号がとんでくるような、超絶シンプルな題材で、ある意味現実にはあり得ないような機械学習体験なんです。

でもですね。

私、これで動いたときに、「あぁー。なるほど、こういうことね。」って、すぅーっと、全体像が見えた気がしました。

「回帰」も「分類」も「欠損値補完」も、専門用語はまだほとんどわからない。でも、「こういう感じってこと」がわかる。それがまず一番嬉しかった。

そして「結局どんな機械学習でも、基本これは変わらない」「あとはこれに枝葉が付くだけ」と思えたとき、とても安心したんですね4

『スッキリわかる機械学習入門』では、最初のAI開発体験である4章で、まさにこの「きのこたけのこAI」をやります。
「AIとか機械学習とか、なんかもやもやしてわからない...」という方、きっと私のようにスカッ!とするはずです。

そこからいろんなテクニックを、簡単なものから、少しずつ自然に覚えていく。

『スッキリわかる機械学習入門』では、そのあと、「前処理を学ぶ章」「学習を学ぶ章」「評価を学ぶ章」のようなものは続きません。

そのかわりに「あやめを判定する」とか「俺が豪華客船に乗って沈没したら死ぬか予想する」などの4つの題材を、4つの章を通してひたすらAIを作っていきます。
このとき、各章では、前の章でも、前の前の章でもやったような「前処理=>学習=>評価」をひたすら繰り返しやっていきます。

ただ、単に繰り返すのではなく、章が進むごとに、ちょっとした新テクニックを簡単なものから順にいくつか学び、それを織り交ぜていくんですね。

たとえば4章のきのこたけのこでは、単なる「前処理=>学習=>評価」だった。
でも、5章では、前処理の分野で「欠損値の穴埋め」、評価の分野で「ホールドアウト法」という基本的なテクニックを学びます。
そして、「(欠損値穴埋めを加えた)前処理=>学習=>(ホールドアウト法を使った)評価」という形となるんです。

そうやって、章が進むごとに「前処理=>学習=>評価」の実践サイクル(回転)は、少しずつ高度に・大きくなっていくんです。5

そして9章に辿り着いたときには、「機械学習を入門者として最低限知っておきたい12個のテクニック」を自然と使っている、という算段なんです。

私みたいに「モヤモヤしている人」にこそ。

機械学習まったくの未経験者だった中山は、『スッキリわかる機械学習』の、この「黄金の回転メソッド」によって、最低限初心者を名乗れるぐらいに理解できたかなと思います。正直言えば、まだ怪しいところはあるし、忘れてしまうこともあるけど、概念としてはしっかり染みついているし、いざとなればコードをしっかり書ける自信があります。

著者の須藤さんが書いているとおり、これは「本職のデータサイエンティストを目指す人」にとってはまだ入口ではありますが、そこは中身や裏側を大事にするスッキリシリーズ。「ちょっとAI作りを体験してみるだけ」のような書籍とは一線を画します6

「機械学習ははじめて。でも、概念や手法をさらっと知って満足するのではなく、データサイエンスやAIエンジニアをちゃんと目指したい。ちゃんと理屈を理解して、自分の手で実装できるぐらいに本格的に学びたい」という方には、まさにうってつけだと思います。

10月16日頃から書店で販売される予定ですので、よければぜひ手に取ってみて下さい!

  1. 再帰3回ぐらいでは、まだまだスタックオーバーフローしません。
  2. ここでred-green-refactorのイメージが先に出てくるあなたは真のエンジニア。
  3. Javaとかプログラミング言語を学ぶ人も同様に「どれから手を付けて良いかわからない」ことあると思うのですが、それとまたちょっと次元が違う、無間地獄感を感じました。
  4. キノコタケノコできて相当満足したので、満足しちゃって学習をやめようとしたことは秘密。
  5. えぇ。だいたい、1つ章が進むごとに、1.618倍ずつぐらい
  6. 付録ではありますが、行列演算や偏微分もでてくるあたり、須藤さんのふんわりスパルタ感を感じました

-スッキリわかる機械学習入門
-