『ウェブ最適化ではじめる機械学習』を出版しました。
昨年の 11 月にオライリー・ジャパンから『ウェブ最適化ではじめる機械学習』という本を出版しました。大変ありがたいことに、いくかのブログで取り上げていただけているようです。
出版してから少し日が経ちますが、まだギリギリ新刊かなということで、書籍の紹介と舞台裏の話を書きたいと思います。
何の本?
ひとことで言うと、ウェブエンジニア/ウェブマーケターこそ機械学習に入門するのに最適な役職なんだよ!という本です。
私は普段ウェブサイトのフロントエンドエンジニアとして仕事をしていますが、仕事の中で機械学習との接点はあまりないように感じます。ひとことでウェブエンジニアリングと言ってもその範囲は広いので一般化は難しいですが、基本的には HTML / CSS / JavaScript / バックエンドの言語(Python, Ruby, Go など)を駆使して意図通りのユーザインタラクションを作っていくことが主な関心の対象になると思います。目的とする設計がある以上、「データから何らかの規則性を見出したい」という機械学習的な問題意識が立ち上ってくることはどうしても稀です。もちろん、画像認識や推薦エンジンがウェブサービスの肝になることはありますが、そういったテクノロジーがいわゆる「ウェブ開発」というラベルの下で行われるかというと、あまり一般的ではないと思います。
この本では「実はそのウェブ開発こそが機械学習入門への格好の題材なんだよ」というスタンスで、ベイズ的 A/B テストやバンディットアルゴリズムをはじめとするユーザ体験向上のための機械学習技術を紹介しています。ウェブサイトやウェブサービス開発に携わるマーケターやエンジニアが最短パスで機械学習の世界を垣間見れるように、「ウェブサイトとユーザのインタラクションを最適化すること」をテーマにして、機械学習のさまざまな問題と解法を紹介しています。ユーザーにウェブサイトを使ってもらうという当たり前のことに、ここまで機械学習が応用できるんだということを感じてもらたら幸いです。「機械学習は興味があるけれども、仕事で使う機会はあまりないなあ……」と感じているウェブ業界の方々は、ぜひ手に取ってみてください。
なぜ書いたか
簡単にですが、本書を書くことになった経緯のあらましを書きたいと思います。私がプログラミング、そしてウェブ開発の世界に踏み出したのは大学生のころ。映画 The Social Network に触発されて、ウェブアプリを作りはじめましたのがきっかけです。それからしばらくしてウェブアプリを作るための技術は少しは身についたものの、機械学習や統計のことはさっぱりでした。研究室の先輩たちがサポートベクターマシンのライブラリのことを話しているのを耳に挟むことはあっても、それとウェブサービスを作ることとの間に何の関係があるのかは全く想像できませんでした。
そんな中、私がバイトしていた某ベンチャー企業で収益を大幅に改善することが急務となりまして、キラーアプリを作る余裕もなく、まずは既存のサービスのデザインの A/B テストをしてみようということになりました。私は当初、このような変更で得られる利益など微々たるものだと思って懐疑的でした。しかし、その期待は良い意味で裏切られることになります。蓋を開けてみたら、大幅に数字を改善するデザイン案がザクザク生まれてきたのです。これが私と A/B テストの出会いでした。とにかくたくさんアイデアを試して高速に PDCA を回す。それが当時の第一信条でした。
しかし時が進むにつれ、だんだんと試すアイデアも枯渇してきます。この頃は毎朝出社したらまず午前中にブレストして、午後にアイデアを実装して、夕方に実験をセットして帰る、という日々を繰り返していました。しかし努力とは裏腹に目覚ましい改善はなかなか生まれなくなり、だんだんとストレスが溜まっていくのを感じていました。何より不安だったのが、毎日のように下すデザイン上の判断が本当に適切なのかわからないことです。もしかしたら昨日は偶然数字が上がっただけかもしれない、実はデザインを変更しないほうがよかったのかもしれない、そんな不安に苛まれるようになりました。
そんなときに勇気と度胸ではなく、数字を以て合理的に自信を持って決断を下すために、必要に駆られて学び始めたのが統計です。さらに、「できるだけ早く結果を得たい=早くサービスを成長させたい」、「たくさんのアイデアを同時に試したい」という問題意識で調べるうちに出会ったのが実験計画法、機械学習、最適化などの知識です。いつのまにかこれらのトピックにのめり込んでしまった私は、このテーマで修論を書き、いつのまにか博論も書いていました。この頃に書いた論文のリスト
博論を書き終えてみると、自分が今まで学んできた道のりは結構ユニークなものかもしれないと思うようになりました。それぞれのトピックは決して目新しいものではありませんが、それらを結ぶ線が珍しいものだったのです。人間の感性に基づいて進化するウェブサイトのことを考えるうちに、一般的には離れていると考えられているトピックが意外と近いのではないか、と気付かされるようになりました。この感動を多くのひとに届けたいと思い、博論の内容を理工書としてアレンジして出版したいと思うようになりました。その後素敵な縁に恵まれて、今回の出版に至りました。「ウェブサービスをユーザテストで高速に成長させたい」という問題意識を持ったつくり手が、最速で機械学習を学べるようにしたいという思いで生まれたのが本書です。
書いてあること、書いてないこと
技術的なトピックとしては、ベイズ推論、バンディットアルゴリズム、ベイズ最適化、メタヒューリスティクスなどがキーワードになります。ウェブサービスがユーザテストで高速に PDCA を回す営みを、ベイズ推論やメタヒューリスティクスといった視点から眺めて、その具体的なアルゴリズムおよび実装をまとめています。このあたりのキーワードで興味を持った方は、目次を見てみてください。また、オライリーのサイトでまえがきと2章の冒頭が無料で読めます。
「機械学習」とタイトルにありますが、近年の機械学習や AI の代名詞とも言える深層学習、ディープラーニングに関する記述はほとんどありません。したがって、深層学習を学びたい、という方にはおすすめしません。ただ、本書の中で出てくるロジスティック回帰は、パーセプトロン、ニューラルネットワーク、深層学習とつながっていくものですので、深層学習をすでに学んだ方が別の角度から深層学習を眺めるのには少し役立つかもしれません。本書で中心的に扱うベイズ推論と深層学習の架け橋という意味では、『ベイズ深層学習』(講談社)も併せて読むといいかもしれません。
小ネタ
最後に、本書にまつわるちょっとしたトピックスを紹介します。
表紙の動物は何?
ウミウシです。Hermaea bifida という種類だそうです。ウミウシってこんなかんじの、カラフルな角が生えたやつを想像していたのですが、その 100 倍くらい強そうなやつに仕上がりました。
電子版はないの?
あります。オライリーのサイトの Ebook Store で購入できます。
サンプルコードはどこ?
サンプルコードは Google Colaboratory で公開しています。各章のサンプルコードのリンクはオライリーのサイトの「関連ファイル」で見られます。
作中のイラスト
本書のところどころにゆるいイラストが出てきます。これは iPad で Paper というアプリを使って描いています。フリーハンドで書いてもいい感じに直線に直してくれる機能があり、重宝しました。
最後に
紙の書籍、Ebook の購入はオライリーのサイトからどうぞ。
本書を読まれた際はぜひ Amazon や Twitter 等に感想やレビューを寄せていただけると、大変モチベーションが上がります!何卒よろしくお願いいたします。