スーツ姿のプロダクトマネージャースマートフォン用の表示で見るスーツ姿のプロダクトマネージャーITで新しいプロダクトを生み出したいすべての人を応援するブログです。※記事内容は個人的な見解であり、所属組織とは無関係です。仕事のはなし本のはなし雑記2018-11-23SEが機械学習を学ぶためのヒント&おすすめ本5選SEのための機械学習・AITwitterGooglePocketAIをめぐるお祭りが少し落ち着いてきている気がしますが、その一方で、データサイエンスの重要性は高まり続けています。マーケティングやWebサービスだけでなく、業務システムに機械学習の機能を取り入れるタスクも増えてきました。したこともあって、データサイエンティストに対するニーズは高まるばかりです。以下の記事を読むと売り手市場という状況は変わっていないようです。別の見方をすると、データサイエンス・機械学習のスキルが労働市場で競争力を高めることになります。これは、SEのようなエンジニアだけでなく、プロマネやチームリーダのようにマネジメントにかかわる人も同様だと言えるでしょう。したこともあり、最近、社内の同僚から機械学習について教えてほしいという相談を受けることがよくあります。仕事だけでなく、個人的に勉強したいので学び方を教えてほしいと相談されることも増えてきました。そんなとき、以下でご紹介した定評ある機械学習の入門書をおすすめしてきたのですが、なかなか手を出しにくいようで、最近は見直しています。買いました!この記事では、まず初めにSEが機械学習を学ぶときにつまずきやすい点を整理します。その上で、これまで社内のSEや私のチームに新しく配属された新人におすすめして評判が良かった本と、それを使った学び方のヒントをお伝えします。SEがつまずきやすい3つのポイント機械学習処理の本質を理解するなんとなくわかるが応用できないというジレンマリアルなタスクをガイドライン付きで演習する実システムのコンテクストで機械学習を理解するSEはどのように新しい技術を捉えるのか?システムの中で機械学習を理解する確率的・統計的なものの見方を自分にインストールする優秀なSEであればあるほど理解しにくいデータサイエンス統計的なものの見方を身につけようSEがつまずきやすい3つのポイントSEの方は、実際に動かしてみないとわからないとおっしゃる方が多い印象があります。機械学習プログラミング」や、数式なしで概念を理解できる「戦略的データサイエンス入門」をおすすめしてきました。ような本格的な入門書から入る人もいます。社会人になって長らく数式と無縁の生活を送ってきた人にはかなりハードルが高く、詰まってしまう人もいます。今の仕事との関連がつかめず、イメージがわかないという人も多くいました。何よりも、私がSEからデータサイエンティストに転身したときも、同じように本質をつかめず苦しんだ時期がありました。SEとしてSI開発に携わってきた人が、機械学習を学ぶときにつまずくポイントは3つあると思っています。処理内容の本質的な理解:システムへの組み込み方を意識したときに、「機械学習」の処理内容がわからない。In/Outの仕様、どんな仕組みで動いているのか?実務における位置付けの把握:自分が携わっているシステム開発でどの部分に位置づけされるのかわからない。どこに置けばよいのか?ものの見方:プロジェクトの進め方やテスト方法が独特でわからない。精度がパーセントで示されても困る。精度を100%にできないのか?それぞれ少し深く見ていき、壁を乗り越えるヒントをお伝えします。機械学習処理の本質を理解するSEが機械学習を学ぶ直接のきっかけは、自分が構築しているシステムに「機械学習」なるものを組み込むことになったときだと思います。上司から「機械学習を活用方法を考えて」とリクエストが来ることもあるでしょう。したとき、まず機械学習でできることを知るために、多くのSEが”事例”を求めます。そこでなんとなく理解が進むのですが、仕組みが気になってきて、機械学習の入門書を手に取ります。手を動かして処理内容や仕組みを理解したくなるのでしょう。そこで、多くの方がPythonやRのコードが載っているものを選び、自分のPCでポチポチと試しながら少しずつ分類や回帰の概念を理解していきます。機械学習と聞いてさぞ大量のコードを必要があると思いきや、たった数行で学習できる例題を動かしてみて、拍子抜けするかもしれません。なんとなくわかるが応用できないというジレンマしかし、こうして学んでいっても、スキルが身についたような気がしないのではないでしょうか。自分が本質を理解できているのか、新しいデータを渡されて「学習モデル」を作れるのか―。私のチームに配属された新人がまさに同じような状態に陥っていました。彼の話を少ししてみましょう。彼はデータサイエンス未経験の新人として入社し、たまたまデータサイエンティスト集団の一員となりました。未経験ということもあり、実戦投入の前に社内外の教育を受けてもらったり、定番の機械学習入門書で自主的な勉強をしてもらったりしました。やってもやっても「実感」がなく、不安が募るばかりだったと言います。そこで、リアルな実務データの解析をやってみようということになりました。手始めに、これまで学んだことをベースにデータビューイングしてインサイトを導出するタスクです。基本統計量の確認やデータ数の確認などベーシックな報告を期待してのことで、Pythonの実践的な練習という側面もありました。彼はどのようにデータを見てよいかわからず途方に暮れてしまったのです。データを目の前にして、手を動かすことができなかったということです。上で挙げた話は、私自身も経験したことでした。私が研究所に異動になってRを触り始めたとき、参考書として「Rによるデータサイエンス」を読み込み、Rのコードを書いて動かしながら理解していきました。いざテキスト分類のタスクに取り掛かろうとしたときに、何からやって良いかわからないという状態に陥りました。知識の点と点が繋がらず、応用が利かないという状態でした。同じようなアプローチで機械学習を学び始めたSEの多くも、このジレンマに直面していることでしょう。リアルなタスクをガイドライン付きで演習する応用力を高めるには実務経験を積むのが一番です。問題設定がなされたタスクとデータがあって、それの前処理からモデル作成、評価・チューニングまでを一通りやってみるのが、理解を深めるための王道です。手ごろなタスクがないこともあるでしょうし、前処理の一部だけを下積みとしてやり続けても、機械学習の本質はつかめません。この問題を解決するために、本屋に頻繁に立ち寄って題材を探していました。いくつか購入して新人やSEに紹介し、スキルアップ効果があった本を紹介します。見るこの本は、機械学習の実行ライブラリとして定番のscikit-learnとTensorFlowを学べる本として人気のある本です。通常の機械学習からディープラーニングまでを、わかりやすい解説とコードで理解できるのが特徴です。各手法の解説は概要的なものになっていますが、全体像をつかむにはかえって良いかもしれません。エンドツーエンドの機械学習プロジェクト」で、リアルな機械学習タスクを初めから終わりまで学べる点です。ここでは、カルフォルニアの住宅価格を推定する例題がでてきます。これをこなすことで、データ加工からモデル構築までを、手を動かしながら習得できます。このように、ガイドライン付きでリアルなタスクを疑似的に学べる題材は見かけませんでした。この本を見つけたときに、これだ!と思ってすぐに購入しました。会社の新人に2章をやってもらったところ、かなり効果的でスキルアップに繋がりました。本人もやっていて楽しかったと言ってくれたので良かったと思っています。副読本として、以下の参考書を活用してもらいました。わからないことをググるだけでなく、自分で本で調べながらやっていくと、より効果的だと思います。実システムのコンテクストで機械学習を理解するプロマネをやっている人が、機械学習を含むシステム構築を立ち上げようとしたとき、機械学習というものがシステムのどこに位置付けられるのか気になるはずです。プロマネの方が数式レベルでアルゴリズムを理解する時間はないかもしれませんが、リーダーとして実システムの中での位置付けを知る必要があるからです。これまで、多くのSEの方に機械学習の説明をしてきましたが、同じSEでも機械学習処理の捉え方が違うことがわかってきました。大雑把に分けて、アプリケーション系のSEとインフラ系のSEで、コンテクストが大きく異なります。SEはどのように新しい技術を捉えるのか?アプリケーション系のSEは、顧客の機能要件を元にシステム化要求→設計→プログラミングという順に細分化・具体化することでシステムを作っていきます。そのため、システムや処理の全体像を機能ブロックと処理・データのフローで捉えていきます。この意味で、機械学習を機能ブロックの一つとして捉え、そのIn/Outとデータレイアウト・構造から位置付けを理解しようとします。インフラ系のSEは、顧客の非機能要件を元にシステム構成を考え、サーバースペック、ミドルウェア、ネットワーク仕様などを策定していきます。そのため、機械学習のように新しい機能要素が出てくると、そのミドルウェアに対する理解から始まり、サーバーに必要なCPU・メモリのスペック、データ処理件数、バッチ要件などを押さえていきます。最終的にはシステム構成図の中での位置づけを理解しようとします。このように、一口にSEといっても、システム・技術を捉える目が全く違うのです。システムの中で機械学習を理解する残念ながら、上にあげたような視点で機械学習を解説してくれる参考書はなかなかありません。最近、”システム”という観点で機械学習を丁寧に解説してくれる本が出版されました。見るこの本は、機械学習を「仕事で使う」ためにどうするかという視点で解説した本です。データ分析のためではなく、実システムにどうやって機械学習を組み込むかを解説していることがポイントです。処理、環境両面で説明されているので、アプリケーションSE、インフラSEを問わず読みやすいのではないでしょうか。機械学習プロジェクトのはじめ方」にて、データサイエンスプロジェクトの全体像を示します。システムに機械学習を組み込む」にて、機械学習を使ったシステム設計の考え方が示されます。機械学習の処理を理解した上でこの4章を読むと、実システムのコンテクストで機械学習を理解することができるはずです。後は、自分自身がかかわっているプロジェクト、システムで機械学習を活用することをイメージし、具体的に考えてみるとより一層理解が深まることでしょう。ものの見方を身につけることだと思います。私がアプリケーションSEからデータサイエンティストに転身したとき、この考え方の転換にもっとも苦労しました。優秀なSEであればあるほど理解しにくいデータサイエンス大雑把にいって、SEが直面している問題の多くは、不確実性によって生じることです。顧客要件の思わぬ変更や人間関係など、コントロールが難しい不確実性にどうやって立ち向かうのかが大きな関心事になります。した「システム化要求事項」に落としていくことが基本スキルになります。エンジニアは、日々不確実性を排除してロジックが通るブレのない設計を行っています。データサイエンスの世界では、不確実性自体を内包したモデルを作って動くものを作っていきます。前者は演繹的なモデル、後者は機能的なモデルともいえ、極端に言えば180度違う思想であると言えるでしょう。統計的なものの見方を身につけよう機械学習はデータの集合から帰納的にモデルを構築する手法であり、アルゴリズム、学習プロセス、評価(テスト)それぞれにおいて、統計的な考え方が登場します。これを理解するには、自然に統計的な観点でデータや物事を捉えるスキルを身につける必要があります。入門書を読んでもなかなか身につけることができません。データを触って分析したり、機械学習モデルを構築したりすることを続けていくと、自然とわかるようになってくるものですが、そうも言ってられない方も多くいると思います。そこで、読み物的に気軽に読めつつ、データの眺め方や実世界での応用例をイメージできる本をいくつかご紹介します。見るまずは、ビッグデータ時代のベストセラー「統計学が最強の学問である」です。相当に売れた本で、いまだに本屋で見かける定番本となっています。PythonやRで機械学習を触ったことがある方も、統計に自信がない方は一度読んでみることをおすすめします。実例が豊富なだけでなく、さまざまな統計モデルを俯瞰し整理していることも大きな特徴です。「ランダム化」について平坦に解説されていて、統計学のキモである重要な考え方を身につけることができます。見る交通渋滞、クレジットカード、入試など、実世界における統計学の活用例を豊富かつ丁寧に解説する本です。ド素人だった私がデータサイエンスチームに異動したとき、一番初めにすすめられたのがこの本と、「その数学が戦略を決める」でした。読みやすいので、さらっと読めてしまうかもしれません。私も、一度読んだだけで劇的に理解できた!とはなりませんでした。後々になってさまざまなデータ、プロジェクトにかかわっていると、ふとこの本で読んだことを思いだされて、リンクすることがあります。いった意味で、統計的な考え方を身につけるには、よい材料になると思っています。見るコンサルタントが書いた問題解決に関する本です。コンサルタントの基本思考を身につけるための本として有名ですが、データを見る目を養うための本としても有用です。第1章から第5章で統計的なものの見方を身につけるために重要な概念が示されます。「バラツキ」を考える統計学のポイントは、データ、値のバラツキを考えることであり、データの塊を比較して分析することでさまざまな知見を得ることです。この考え方が、演繹的案思考に慣れたSEには想像しにくいのですが、この本では実ビジネスの事例を通して解きほぐしていきます。コンサルタント向けなのでやや硬い印象がありますが、大変貴重な本だと考えています。以前、はじめて機械学習を学ぶ方に向けて、質の良い3つの入門書...2018-03-11プロダクトマネージャーおすすめ本11選このブログのテーマのひとつ、プロダクトマネージャー。ku2tはてなブログをはじめよう!ku2tさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。