プログラマーでもなんでもないボクがcourseraで機械学習を始めました

こばわ、蒼志です。しがないツイッタラーからブログデビューすることになりました。

 

さて、タイトルの通り、このたび2017年11月13日23時からcourseraで機械学習を始めました。

どんな人が書いているの?と軽く自己紹介から、主に備忘録、まとめを目的とした学習内容を書き残していこうと思ってます。

 

プロフ

文系(法学部出身)

数学力:高校文系数学レベル(センター試験アベレージ約190)

英語力:英検2級(センター試験アベレージ約190)

プログラミング歴なし(HTML、CSS,PHPはマイビジネスのためたしなみ程度に触った経験)

 

なんか受験がんばった人的なイメージだと思いますが、大体そんなところ。でも実際の数学力、英語力は自信があるような感じではなく、今でも英語は洋ゲーで意味不明な英語文面を読み飛ばす感じだし、1日中youtubeで外国人がしゃべってる動画を垂れ流してもほとんど理解できないような状態です。受験時のプロフ紹介になっているのはそれ以降これといった客観評価できる資格などはないからです。

割と本を読むほうです。

 

きっかけ

 

なんか最近機械学習流行ってんなーやってみたいけど敷居高い気がするとかずっと思ってたんですが、プログラマー需要が高い世の中にどんどんシフトしてきている実感があり、AIやらディープラーニング、データサイエンティストなどの流行り言葉に乗ってみたいミーハー気分で勘違いしちゃった君という自覚の元でチャレンジ中です。

MOOCでのオンライン講義は以前から経験はありますが、単位取得には至っていません。やはり言葉の壁は高いと日々実感しています。

 

どこで何を勉強している?

 

これを読んでる人の大半がプログラマー系の人だと思いますが、ほんと何もわからないど素人が書いていると思ってください。その上でご指摘などあるなら言っていただけるとぬか喜びします。

 

今勉強しているのは、couseraというMOOCのプラットフォームがあります。そこでAndrew Ng教授によるmachine learningのスタンフォード大学提供のオンライン講義を学習しています。

受講は無料だけど、お金を払って認定証(certification)をもらえる有料コースもあります(対外的にスキル証明するための学位のようなもの?)。

www.coursera.org

 

こういったオンライン学習は数年前から世界的に大ブームとなっていますが、最近は最後まで受講し、修了するところまでたどり着ける人が少なく、効果を疑問視するという声もちらほら聞かれます。

 

ですが、この機械学習講座は英語なのですが、字幕があります。そこでたくさんの日本人プログラマーが受講しているという話もいろいろ調べている中でわかりました。

「日本、遅れてる!」と溜息混じりの声がよくSNS界隈で聞こえてきますが、そんなことないのですね。みなさん果敢に挑戦され、ブログでもたくさん参考になる話を収集することができます。挫折しそうになったら、辞める前にいろんなブログを読んでみてください。英語がわからないという人もなんとかかじりついている人もいます。 

 

講義内容は字幕があります。そこまではいいですよね。ただ次に問題になりそうなのが、課題です。各週の講義最後にはクイズ問題がありますがこれが英語になっています。ここは避けようがないのでがんばって英語で解いてください。制限時間はないので、google翻訳を使ってでもやるといいでしょう。動画講義の受講時にもちょっと英語に聞き耳を立てるぐらいの感じでやると課題をやるときの一助となるはずです。

 

まだこれを書いている時点ではweek2の半ばなのですが、octaveという数式処理ソフトをインストール(無料)したり、以降の課題はこのoctaveというソフトを使って提出という形式だと聞いています。そのあたりはまたレビューしたいと思います。

 

参考にしている記事

 

qiita.com

qiita.com

 

必要となる数学力は?

 

高校で全く数学を勉強したことがないという人を除けば、youtubeなどでもキャッチアップのために必要な知識を手に入れられるので壁にぶつかっても問題解決を模索していけたらなあと思います。それを踏まえて数学知識はどんなものが必要かピックアップすると、

 

行列(week1で演算方法の解説があるので知らなくても大丈夫)

ベクトル(数学Bやっていれば多分大丈夫)

いわゆる線形代数ですね。解析学について触れるところもありましたが、教授は特に勉強する必要はないとの主旨でした。

 

 「高校で全く数学を勉強したことがないという人を除けば、」と言った理由は、ツイッターや本などで見聞きしていると、「機械学習は数学力がなくても(アルゴリズムに適用するだけなので)できなくはないが、数式の話になるとそこで躓いてしまって先がない」という話をよく聞きます。

なので、ある程度の数学力は前提にしたほうが良さそうです。数学できないけどがんばりたいという人がいれば、高校数学にまずは力を入れてみるのもいいかもしれませんね。 

 

week1を終えて

内容:イントロダクション、単一変数の線形回帰(コスト関数、最急降下法線形代数(行列)復習

 

所要時間は約3時間半かかりました。クイズも難しいものはあまりなく、クリアしました。先生も動画講義内でここは理解できなくてもいいみたいな話をしてくれることがあり、あまり肩に力を入れずに初学者でも対応している雰囲気はあります。

私自身は文系数学で終えているので、行列や回帰分析の勉強はほぼしたことがありません。「ほぼ」というのは本で多少触れたりした経験がある程度ということです。

そんな人でも大丈夫なのかと言えばがんばればなんとかなると一応思っています。ただし本音を言えば、いつ挫折してもおかしくない、そのときはそのときで潔く諦めようと思っています。week2とweek5が結構難しいという噂レベルの話もあるので、逆にそれらを乗り越えたら修了に近づけるのかもと少しポジティブ寄りに考えています。

 

week2の途中

内容:多変数線形回帰、分析的なパラメータ計算、octave,Matlabチュートリアル

多変量線形回帰で躓き中 うふふ

 

 今のところの感想

私はいつ躓いてもいいのですが、やり始めてみて楽しんでいることに気づきました。明日は挫折するだろうと思いながら軽い気持ちでやっています。

 1週間分を1日ずつやれば全部で11週あるので11日でできるかなと思っていましたが、week2に入ってそれが無理だとわかりました。課題の提出期限があるのでそれを守ることと、とりあえず1か月程度での修了を目標にしています。プログラミング能力もないので明日には挫折している可能性は極めて高いです。