こんにちは、@keimaejimaです。
思い返すと去年は初めて機械学習について学んだ年でした。なかなか心理的ハードルが高めだった機械学習ですが、昨年関わっていたプロジェクトの中で学ぶ機会があり、本当に良かったなと思っています。
そこで今日は、大学院まで文系で進んできた僕が機械学習を数学的な部分も含めて理解するために使った教材をご紹介したいと思います。一応ゴールとしては、「数学的な原理も理解しつつCNN(畳み込みニューラルネットワーク)のモデルを作ってWebアプリケーションから利用する」というところをイメージしていただければと思います。
記事中で「ここが間違っているよ」とか「もっと良い教材があるよ」などありましたら教えていただけるとありがたいです。
「わいは機械学習のライブラリを使って実装だけできればそれで良いんや!」という人は数学の知識は必要ないと思いますが、どういった原理で機械学習が行われるのかをちゃんと理解するためには数学の知識が不可欠です。
機械学習に関わる数学の知識を得る教材として以下の2つをご紹介します。
文系出身の方は微分の数3Cの範囲と、行列については学んでいないと思うので、「もう一度高校数学」で学習すると良いかと思います。この本の関数、微分、行列、確率の単元を学ぶと十分かと思います。(積分は不要)
「人工知能プログラミングのための数学がわかる本」は上記で学んだ数学と機械学習との関わりと学ぶのに適していると思います。ただ、一度も機械学習に触れたことがない状態で読むと、「活性化関数ってなんだ?誤差逆伝播法ってなんだ?」となると思うので、実用編で紹介した教材に取り組みつつもう一度読むような使い方が良いのではないかと思います。
数学の学習が終わったら、ライブラリなどを使わずにスクラッチでコードを書きつつ機会学習について学んでいく段階です。こちらでは下記の2つの教材をおすすめします。
CourseraのMachine Learningコース
https://www.coursera.org/learn/machine-learning
いずれも基礎から機械学習が学べる教材ですが、かなりボリュームのある教材ということもあり、今回の目的からすると必ずしもCourseraの方は必要ない気がします。僕個人としてはCourseraの方の線形回帰のところまでやった時にぐっと機械学習が身近になってモチベーションが上がった記憶があり、時間のある方にはおすすめす。(ちなみにその後ニューラルネットワークの単元までやってもう十分だろうと思って途中でやめました)
いずれの教材についても反省としてあるのが、上述の数学の教材をやる前に取り組んでしまったことです。数学の知識が今くらいあればより理解が深まった部分が多々あると思うので、近いうちに時間を作って再読したいと考えています。
さて、いよいよ実用的なモデルを作ってサービスから利用するところまでやっていく段階です。特にエンジニア経験のある方であれば、数学編と原理編をすっとばしてここからやってもモデル自体は作れてしまうので、効率重視の方はここからで良い気がします。
こちらでは下記の2つをお勧めします。
Udemy 「TensorFlow・Keras・Python・Flaskで作る機械学習アプリ開発入門」
https://www.udemy.com/tensorflow-advanced/
機械学習に詳しい友人に勧められたこともあり、最初に学習するライブラリとしてGoogleがオープンソース化した機械学習ライブラリのTensorFlowとKerasを選びました。上の本はTensorFlow・Kerasの基礎からディープラーニングを使った画像判別、自動着色、画像生成まで扱っており、よく一冊にまとめたなと思うくらいよくまとまった本です。
Udemyの講座ではTensorFlow・Kerasでモデルを作って、FlaskというPythonのWebアプリケーションフレームワークから呼び出して画像判別をさせるところまでやります。判別結果がブラウザに返ってきた時には結構感動すると思います。
以上簡潔ではありますが、文系出身者が機械学習を初めて勉強するときにおすすめの教材をご紹介しました。
今年は今準備中の事業に関わる技術であるということもあり、なんとか時間を作って自然言語解析の分野について学んでいきたいなあと思っているところです。
今日は以上です!
※こちらの記事は下記の転載記事です