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