文系出身初心者でもわかる機械学習を勉強する・実装するときの情報まとめ

今後もさまざまなサービスやロボットなどで利用されていくようになる機械学習・AI。すでにバズワードになっており、新たなビジネスが生まれるのでは?というところと、既存サービスをよりリッチな体験や価値を提供することができるのではないかということで注目が集まっています。

ただ、機械学習・AIとひとことでいっても、【どのように学習したら良いのか】、【学習するために何が必要なのか】、【そもそも機械学習やAIという全体像はどうやって把握するのか】、など機械学習に興味はあっても挑戦できないさまざまな課題があります。

今回はそのような課題の幾つかを解決できるような参考文献をまとめてみました。

機械学習・Deep Learningを学習するときのオススメ書籍

Amazonの機械学習での検索によるオススメ書籍をご紹介します。一部参考になる口コミも参考にしてみてください。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

書籍の内容
ディープラーニングの本格的な入門書。外部のライブラリに頼らずに、Python 3によってゼロからディープラーニングを作ることで、ディープラーニングの原理を楽しく学びます。ディープラーニングやニューラルネットワークの基礎だけでなく、誤差逆伝播法や畳み込みニューラルネットワークなども実装レベルで理解できます。
ハイパーパラメータの決め方や重みの初期値といった実践的なテクニック、Batch NormalizationやDropout、Adamといった最近のトレンド、自動運転や画像生成、強化学習などの応用例、さらには、なぜディープラーニングは優れているのか?なぜ層を深くすると認識精度がよくなるのか?といった“Why”に関する問題も取り上げます。

一部口コミの抜粋

Pythonで書かれた短いプログラムコードで少しずつ動作を確かめながら理解するようにも構成されてもいる。それも、ごく最低限度ではあるがPythonの記述ルールについての説明もあって、いくつかのプログラム言語に通じている人であれば、まだそれほどPythonに詳しくない人でもあまり敷居を高く感じないように配慮されている。加えて、プログラムは本書に書かれているGithubからダウンロードできる。
深層学習の本は最近いろいろ出てきて何冊か買っているが、Deep Learningを初歩から学びたいプログラミング経験者向けの入門書としては、今のところ、これがベストだと思う。強くお薦めしたい。

エンジニアでPythonが専門です。という前提でレビューさせていただきます。ニューラルネットワークに関しては知識ゼロで読み始めました。端的に言って非常に良書です。以下良かったところを端的に。コード自体が平易で読みやすいです。おそらく他の言語を触ったことのある方ならさくさく読むだけでやりたいことがわかると思います。

何と言っても本書の魅力は豊富な図解と明瞭な説明です。多くの数式は出てきますがおおよそ高校数学程度が分かれば(分からないところは都度調べられる程度なので)対象者はかなり幅広いです。ベクトル解析や微分積分の基礎的な知識があるとより分かりやすいですが、必須ではないです。ベクトルや偏微分の計算手順から追って話してくれます。

機械系の会社員ですが数冊程度ディープラーニングの書籍も読んだりしてます。
要素一つ一つの狙いをちゃんと把握できる、有機的な理解の深まる解説書です。
内容は理系の高3~大1程度なら十分理解できると思います。

ディープラーニング自体はまだ敷居が高く(GPUとビッグデータが用意できない)すぐに実用できるものではありませんが、
理系の数学教養書としては最適で、授業で学ぶ数学の個々がいかに社会に役立っているかを実感できる書籍でもあります。

ゼロから作るDeep Learning ―Pythonの特徴まとめ

● 文系エンジニアや初心者でも入りやすい
● 大枠となる部分から丁寧に説明されている
● Githubからソースコードがダウンロードできる

このようにPythonや機械学習を専門的に行っている方からの評価が非常に高いのが特徴的。
総合的な知識を身につけつつ、基本的な流れとしてはPythonのコードをみながらGithubのソースをダウンロードして物を作りながら学習できる書籍になっているので、機械学習に興味がある方は購入しておいて損はないでしょう。

機械学習・Deep Learningの学習に役立つスライド

Deep Learningは主に画像認識に使われていることが多いですが、その範囲は画像認識だけに留まらず、株価予想など幅広い分野で利用されています。

 

ここからはQiitaなどに掲載されていた機械学習系の記事でおすすめのリンクや参考文献をご紹介します。

機械学習の全体像を把握したい

チェック

東京の高専生が書いた機械学習の記事。
機械学習とは何か、機械学習でできることから始めていくという初心者にわかりやすい内容になっています。コードや実装については書かれていませんが、機械学習の全体像を捉えたいという方にはおすすめです。特に初心者で全体像がわからずいきなりコードを書き始めてしまうということがないように読んでおくことをおすすめします。

機械学習を学ぶ前に、機械学習を使って何をしたいのかを決めてください。
機械学習は数式がたくさん登場したり、難しい概念を理解しなければならなかったりすることがあります。
やりたいことを決めてから学ぶと、今自分はある目的を達成するために学んでいるんだと思うことができます。これは学習の進み具合に大きく影響します。
学ぶ前に何をしたいのかを決めるべきだというのは、機械学習に限らずプログラミング全体を通して言えることだと思います。

機械学習アルゴリズムを使って識別などを行うときには、特徴抽出を行った後のデータをアルゴリズムに入力するということをよく覚えておいてください。

機械学習をこれから始める人に押さえておいてほしいこと by @sonicair on @Qiita http://qiita.com/IshitaTakeshi/items/4607d9f729babd273960

Qiitaの機械学習タグのついた記事一覧

http://qiita.com/tags/DeepLearning

Googleのサンプルコードを使って株価予想

「Machine Learning with Financial Time Series Data on Google Cloud Platform」を利用しながら、実践的に学ぶことができる記事となっています。株価予想などに興味がある方はぜひ見てみてください。
[TensorFlowで株価予想] 0 – Google のサンプルコードを動かしてみるhttp://qiita.com/akiraak/items/b27a5616a94cd64a8653

ディープラーニングフレームワークChainerの利用

Deep Learning(深層学習)フレームワーク、Chainerに手書き文字の判別を行うサンプルコードがありますが、そちらを使ってニューラルネットワークモデルを試してみるという記事になっています。フレームワークを用いながら、取っ掛かりとしてPythonを書いて手を動かしながら勉強していきたいという方におすすめです。

【機械学習】ディープラーニング フレームワークChainerを試しながら解説してみる。 by @Kenmatsu4 on @Qiita
http://qiita.com/kenmatsu4/items/7b8d24d4c5144a686412

機械学習を仕事で活かすようにするまでの流れ

Xeneta_ASという企業で働いているエンジニアが書いたmediumの翻訳記事。元々はエンジニアではなかったようですが、開発のエンジニアブートキャンプに通ってプログラミングを学習。

その後機械学習に興味があったので学習し始めたという経緯が記載されています。

実際の開発現場に取り入れるのかという流れを詳細に書いてあるので、これから導入を考えているエンジニアは必見です。

私は機械学習週間という思い切った計画を遂行しました。その目標は、週末までに実際の問題に機械学習を適用できるようになることです。結果的に、なんとかこの目標を達成することができました。

その週に私が行った作業は次のとおりです。

  • scikit-learnについて理解
  • 実在するデータセットに機械学習を適用
  • 線形回帰アルゴリズムを一からコーディング(Pythonを使用)
  • NLPをほんの少し学習

教訓:難しく論理的なことより、簡単で実践的なことから始めるべき。

プログラミング学習をこれから学んでいきたいという方の教訓になりますね。

教訓:新しいことを短期間で習得したい場合は、仲間のいる環境に身を置くべき。

→ プログラミングが学習できるスクールの一覧

機械学習に挑んだ一年間 – 機械学習について一から学び、仕事に活用するまでの道のり | コンピュータサイエンス | POSTD http://postd.cc/learning-new-stuffmachine-learning-in-a-year/

機械学習が学習できるプログラミングスクール

gori0i9a3129072103951_tp_v-1

機械学習が書籍や独学で勉強するのが難しいという方はプログラミングスクールでも学習することが可能です。理解が難しい、実装がわからないという箇所をそのまま先生に聞くことができるというのがプログラミングスクールの大きな魅力です。

IBM Watsonを使った機械学習 – CodeCamp

オンラインの動画を使ったプログラミングスクールであるコードキャンプは、IBM Watsonを使って簡単なアプリケーションを作成し、機械学習を体験するコースを実施しています。先行リリースとして受講権がプレゼントされるキャンペーンも実施中です。

受講する際にJavaScriptのスキルが必須となってきますので、JavaScriptでルーレットをスクラッチで何もみずに実装できるレベルになっておくとスムーズに学習できるでしょう。

※まだカリキュラムとして決定しているわけではないので、変更も想定されるのでご注意ください。

→ コードキャンプの詳細

機械学習・Deep Learningを学習するときのまとめ

機械学習

● 最初に機械学習で活かしたいものを明確化する
● 理論的なことだけでなく簡単なことの実践を始める(実装してみる)
● 体系的な理解をしようとすると時間がかかりすぎる

まずは、利用したいものを決めて、実践で利用していくというのが、機械学習を効率的に学ぶための方法だということですね。機械学習というと理系で難しそうというイメージがありますが、文系の方でも一つ一つ理解していけば利用可能です。

機械学習はこれからの時代、あらゆるところで必要とされますので、今学んでおいて損はないでしょう。これからの時代にあったスキル・知識を身につけていきたいですね。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

入門 Python 3