Coursera の機械学習コースを完走して修了証を取得した話

昨年の10月から12月にかけて Cousera の機械学習オンラインコース "Machine Learning" を受講し、無事完走することができた。

www.coursera.org

コースは無料で受講できるが、修得したことを公式に認定する修了証 (verified certificate) を取得するためにはお金がいる。 機械学習コースの取得料は$49と安くはないが、記念と思って取得してみた。 取得すると以下のようなパーマリンクがもらえて、修了証が閲覧できるようになる。

https://www.coursera.org/account/accomplishments/verify/WX835R39AB77

もともとアルバイトをしていたはてなでこのコースを利用した勉強会が開催され、それに参加させてもらったのが受講のきっかけだった。 運営の id:takuya-a さんをはじめ皆様にはお世話になり、ありがとうございました。

developer.hatenastaff.com

せっかく修了証の取得までこぎつけられたので、全体を通しての振り返りを書き残しておきたい。

コースについて

講師は著名な機械学習の研究者である Andrew Ng 先生で、コースはスタンフォード大学によって提供されている。 ボリュームは全部で11週分あり、完走には2.5ヵ月ほどを要する。

コースは一人でも進められるように設計されていて、きちんと講義を見ていれば課題で詰まることはあまりない。 ただ、11週の講義を完走するモチベーションを継続させるのはそれほど簡単ではない。

詳しい内容については、例えば以下のリンク先などで既にいろいろな人が書いているので、ここでは個人的な感想を書く。

内容

大きく分けて教師あり学習・教師なし学習・機械学習応用の3パートからなっているという印象。 難しい内容を省きつつ、基本的なアルゴリズムについて丁寧に教えてくれる。

受講にあたって機械学習の知識は全く必要ないが、数学についてはある程度の素養が必要。 最低限の数学の復習はしてくれるが、少なくとも大学の一般教養の線形代数ぐらいは理解していないとその後ついていくのは厳しい。 必要な知識は 線形代数 > 微積 > 確率・統計 という感じ。

講義ビデオ

毎週の講義は10-15分ほどのビデオの数本からなる。 ビデオではスライドを流しながら Andrew 先生がカラーペンでポイントを随時書き込んだりして説明してくれる。

自分の場合、SVMやK-meansなど講義で扱っていた多くのアルゴリズムについては既に基礎的な知識を持っているつもりだったが、それでも得るものは多かった。 特に Andrew 先生が随所で紹介してくれる実践的なTIPSが面白かった。 例えば正則化係数のパラメータを最適化する際にどんなステップで値を変えるべきかといった、経験と勘に基づく秘伝のタレを伝授してもらえる。 異常検出で変数を無理やり式変形して正規分布っぽくするのには笑った。

有志の方が日本語字幕をつけてくれているのもありがたい。 講義が進むとだんだん先生がお茶目になってくるのだけど、訳も追従していて楽しい。

課題

課題は小テストにあたる quiz とプログラミング問題の exercise の両方が毎週出題される(exerciseは無い週もある)。 全て英語。

quiz は1本につき5問の選択問題で、毎週2-3本が出題される。 選択とはいえ講義をきちんと理解していないと合格点は取れない。

excercize はプログラミング形式で、課題提出ファイルをダウンロードし、インストラクションに従って該当部分を実装して提出すると自動採点される。 言語は GNU Octave というあまり馴染みのないものだが、課題をこなすだけなら習得はそれほど難しくない。 多くの課題でアルゴリズムの本質的な部分以外はすでに実装されており、お膳立てが整っているので、1ステップずつ進めていけば自然に実装が完了するようになっている。

自分の場合、これまで本を読んで機械学習を勉強する機会はあったものの、利用する際には scikit-learn などのライブラリを使うことがほとんどだったので、様々なアルゴリズムを実装するのはいい経験になった。 講義ビデオもそうだったが、このコースは理論と実践をスムーズに接続してくれる工夫があってとても良かった。

勉強会について

先に述べた通りコースに沿った勉強会という形で受講を進めており、講義はみんなで見て課題は各自でやるというのを基本にしていた。 総じて一人で進めるよりも圧倒的に実りがあった。

講義

基本的に大きなディスプレイに講義ビデオを写してみんなで見る。 自分は同時にマイPCでもサイレントでビデオを流しておいて、数式が理解しにくい場合などにいちいち止めたり巻き戻したりしていた。 2画面使えるので便利。

ビデオの前後や合間には、参加者の間で適宜疑問点などを口頭やホワイトボードで議論した。 参加者のほぼ全員が現役エンジニアなので、このアルゴリズムを実際の問題に適用するとパフォーマンスはどうかみたいな実践的な話もいろいろ聞くことができた。 また、機械学習がド専門のという人は居なかったものの、コンピュータサイエンスの他分野で学位を取った人が複数人いたので、理論的な面を解説してもらえたりした。

Slack

勉強会専用に参加者全員が居る Slack チャンネルを用意してもらっていた。 次のように様々なことに使えて便利だった。

  • 視聴中のビデオを遮らずに随時疑問点を共有できる
  • ビデオの合間の議論の内容を書き残せる
  • 参考リンクを共有できる
  • リモート参加できる
  • 諸連絡に使える

修了証について

冒頭に書いたように、このコースでは修了証を $49 で取得できる。 日本円だとクレジットカードの海外決済手数料を含めて6000円ぐらいになるので、学生の身としては少しためらったが、お金払ってもいい内容だと思ったので取得を決意した。

修了証を得るためには最初に本人確認情報を登録し、課題を提出する度に本人確認を行わなければならない。

本人確認情報の登録

本人確認のためには以下の3つの情報を登録する必要がある。

  1. タイピングパターン
  2. 自分の顔写真
  3. 免許証やパスポートなどの本人確認書類の写真

これらは一度 Coursera に登録すればその後は他のコースの修了証をもらうときにも使えるので、手間としては大したことはない。 ただし注意点として、この最初の本人情報登録の前に課題をやっても、修了証の取得条件をクリアしたことにならない。 コースを数週間分課題までやってから初めて修了証を取得するために本人確認手続をする場合、それまでにやった課題は全て再提出しなければならない。 Exercise はソースコードを保存しておけば一瞬で再提出できるが、 quiz はイチからやりなおしになってかなり面倒。

また、修了証に記載してもらうために登録する自分の名前は、原則として本人確認書類に記載されたものでなければならない。 公開される修了証に記載されるのは名前だけで、顔写真などが記録されるわけではないのだが、ニックネームなどは使用できない。 また本人確認書類として免許証を使用する場合、ローマ字が記載されていないので、修了証の記載名もローマ字ではなく日本語名を登録することになる。 個人的にはローマ字が良かったのだけど、残念ながらパスポートを持っていなかったので漢字になった。

課題提出時の本人確認

毎回の課題提出時には必ず本人確認ステップを踏まなければならない。 PCの場合、 Coursera Honor Code に従いますという内容の英語の一文をキーボードから入力することでタイピングパターンを照合する。 照合が失敗することは無かったが、 quiz でも exercise でも毎回入力しないといけない。 スマホタブレットで quiz をやったときはタイピングパターンの代わりに毎回顔写真を撮る必要があった。

修了証を取得したこと自体は後悔していないが、本人確認書類を提出した後はもう少し確認ステップを簡単にしてほしい。 ちなみにタイピングパターンの照合の話がコース中の異常検出の話で出てきており、 Coursera のシステムも機械学習を利用しているっぽい。 なので学習データを多く集めるために毎回パターンを入力させていると考えれば納得できなくもない。

後日談

修了証をLinkedInに資格として登録できるというので登録しておいたら、スペインのベンチャー企業からリクルートメールが届いた(丁重にお断りした)。

ブログ

昨日書いた今年の目標に書きそびれたけど、今年は積極的にブログ書いていきたい。 形から入るタイプなのでテーマも変えてみた。

今までこのブログは時折思い出したようにぽつんと投稿するだけで、ほぼ放置状態だった。 理由は単純で、特に書くことがなかったからである。

心変わりしたのには、最近アルバイトをしたり勉強会に参加したことが少なからず影響している。 まだ大したことはないものの、自分にも共有できる知見があるかもしれないと感じることが多くなった。 今は研究が忙しいけれど、落ち着いたら機械学習の話とかいろいろ書きたい。

また昨年はアルバイトを中心に多くの人にお世話になったので、環境が変わってもちょくちょく近況報告できる場所がほしいというのも理由のひとつ。 SNSはそれはそれでいいのだけど、ブログは時間の流れがゆるいので、Twitterフォローするほどでもないけどたまにブログを覗いてみるみたいなことができてよい。






とここまで神妙に書いてみたものの、ぶっちゃけブログチャレンジやりたかったのが一番の理由です。

ブログを3日継続」をクリアしました。

今年の目標

あけましておめでとうございます。

今年は社会に出る予定なので、時間もお金も使い方の自由度が上がると信じてる。

とりあえずいくつか目標を書いておく。

エンジニア活動

最近ちょっとずつエンジニア力ついてきた気がするので、今年は成果を積極的に公開していきたい。 自分の性格上、細かいところにこだわりすぎたり完璧を目指してしまうことが多いので、もう少しゆるくやっていきたい。

これまで Python3 をずっとメインで使い続けていて、ライブラリのコードを読んだり直したりする機会も増えてきたので、OSSコミットとかもできたらいいなと勝手に思ってる。

あとはそろそろまともに Vim 使えるようになりたい。

データサイエンティスト活動

昨年は機械学習やデータ分析の勉強を頑張った。 具体的には京大で開催されたサマースクール MLSS'15 に参加したり、

mlss | Machine Learning Summer School Kyoto 2015

アルバイトをしていたはてなで Coursera を利用した機械学習勉強会に加わらせてもらったりした。

Coursera を利用した機械学習勉強会 - Hatena Developer Blog

こちらは課題も完走して Certification を取れたので、あとでブログに詳しく書こうと思っている。

ちなみにこの辺に興味を持ったきっかけは、昨年の春に参加した学生向けコンペだった。

第1回データサイエンス・カップ 2015 春 - yubessy blog

機械学習を勉強していくにつれて、確率・統計の基礎をもう一度きちんとやり直したい気持ちが高まってきたので、今年はその辺をしっかりやりたい。 Coursera に味をしめたので、誰かおすすめのコースあったら紹介してください。

良いサービスにお金を使う

以前はなんとなく月額や年額のサービスに課金するということをためらっていたのだけれど、1年前に思い切って Dropbox Pro に加入してから方針がだいぶ変わり、便利なものには進んでお金を払おうと考えるようになった。 昨年は以下のサービスに課金していたが、予想以上に満足度が高かった。

実は今日も、正月で気が大きくなって2つ新たに課金してしまった。

ほかに今年は次のサービスに課金することを検討している。

生活

24歳にして初めて東京で一人暮らしをする(予定)なので、生活力をつける必要がある。 たぶん自炊以外は今までも普通にやってたので何とかなると信じている。

健康

大学院に入ってから運動の機会が減ったからか、はてなでおいしいまかないを食べすぎたからか、最近体重が増えてきた。 なんか運動したほうがよさそう。

健康管理に Fitbit 導入したのでとりあえず Charge HRAria がほしい。

おわりに

他力本願万歳。

www.amazon.co.jp

今年購読してよかったRSSフィード

大晦日なので今年買ってよかった○○エントリでも書こうと思ったけど、よく考えてみたら特に大したものは買っていない。 それもそのはずで、この1年は新しい生活のために自分の身の回り(お金・持ち物・生活習慣など)を整理しており、新しいものが増える余地が少なかったのだった。

代わりというわけでもないけど、今年は意識的に自分の情報収集環境を充実させようと頑張っていた。 その一環で、若干時代遅れ感はあるがRSSリーダーを活用してみた。 というわけで、今年購読してよかったRSSフィードをメモしておく。

開発・エンジニア

HackerNewsの100pt以上限定フィードはいち早く話題を知れてよい。POSTDはソースをたどると良いサイトが見つかったりする。

企業の開発ブログは単なる技術エントリよりも組織やチーム開発に関するエントリを重点的に読んだ。

有名なOSS開発者のブログも設計思想が垣間見れて面白い。

機械学習・データサイエンス

海外サイトのほうがむしろ説明が体系的でわかりやすい。

他に技術ノウハウが参考になった企業・個人ブログ。

将棋

趣味は将棋観戦です。

お金

この前書いたとおりお金のこといろいろ知りたかったので。

その他

理系大学院2年目・就活という点で共感することが多かったブログ。

おわりに

他にも合計100以上のサイトのフィードを購読していたけれど、これはいいなと思うサイトを見つけるのはなかなか難しい。 RSSそのものの問題点として、フィード内で記事をフィルタリングをする手段が基本的に無いのは不便だと思った。 例えば良い記事があっても更新頻度が多すぎるようなサイトは登録しにくいし、開発者の個人ブログで私生活の記事も含むような場合も購読するか迷うことが多い。

なお、RSSリーダーFeedlyを利用していた。

feedly.com

FeedlyにはExploreという機能があり、様々なテーマのフィードを検索で見つけることができる。 ただし残念ながら日本語のサイトはあまり出てこない。

この点に関して、はてなブックマークRSSリーダーの開発に取り組んでいるらしいのでひそかに期待している。

bookmark.hatenastaff.com

※ちなみに自分は今年1年間はてなでアルバイトをしていました

マネーツリーとマネーフォワードを1年間使ってマネーツリーを選んだ話

うまくいけば来年4月から社会に出ることになるので、今年は家計簿をつけることを目標にしていた。 そのため、今年1月からマネーツリーとマネーフォワードという2つの家計簿アプリ(iOS)を1年間使ってみた。

moneytree.jp

moneyforward.com

結論から言うとマネーツリーに一本化することに決めた。 せっかくなので選択の過程を書き残しておこうと思う。 以下はあくまで自分の用途からみた主観的な話であり、内容について責任は持たない。

比較表

下の話を表にまとめるとこんな感じ。

マネーツリーマネーフォワード
資産一覧
種別集計画面見やすい見にくい
資産とポイント別画面同画面
出費集計
種別グラフ棒グラフのみ円グラフ可
通販履歴非対応対応
金管
レシート読み取り非対応対応
財布残高自動計算ATM引き出しで対応対応
その他
無料版の機能高機能制限あり
Web版ありあり

もう少し詳しく

これまで実家暮らしの学生だったこともあり、自分の持っている資産の総額をきちんと把握していなかったので、アプリに最も求めていたのは資産の推移を把握できることだった。

両アプリはいずれも資産一覧・出費集計・現金管理の機能を有しており、自分にとって重要な順に各機能を並べると 資産一覧 > 出費集計 > 現金管 となる。 以下ではこの3つの面についてそれぞれのアプリを比べて気づいたことを書く。

資産一覧

資産一覧はマネーツリーのほうが見やすい。

マネーツリーは「口座残高」タブで全資産および銀行口座・クレジットカード・電子マネー・その他の各残高を一目で把握できる。 個別の銀行口座の残高や入出金記録などはその画面から1~2タップでたどり着けるようになっている。

マネーフォワードは最近種別集計額を表示してくれるようになったものの、登録金融機関が多いと画面が冗長になって見づらい。

f:id:yubessy:20151230233855p:plain:w180 f:id:yubessy:20151230233844p:plain:w180

また、マネーツリーはポイント類と金融機関をタブで明確に区別しているけれど、マネーフォワードはすべて資産としてひとつの画面で扱っている。 個人的にはここは区別してほしい。

他にもマネーフォワードはカードの使用額が確定するまで表示できなかったり、通販サイトが残高0の金融機関として表示されるなどの不満がある。

出費集計

出費集計はマネーフォワードのほうが高機能。

マネーフォワードは各月の出費額を色付き円グラフで表示してくれるため、月の出費の割合が把握しやすい。 マネーツリーは棒グラフしか出ないので割合を把握するのにはあまり向いていない。

f:id:yubessy:20151230233911p:plain:w180 f:id:yubessy:20151230233919p:plain:w180

またマネーフォワードは楽天Amazonの買い物履歴を取得しているので、閲覧できる情報量もマネーツリーより多い。 例えばKindle電子書籍を買ったとき、マネーフォワードは書籍名まで見れるが、マネーツリーはクレジットカードの履歴としての "AMAZON DOWNLOADS" というような文字列しか見れない。

細かいことを言うとマネーフォワードも自動分類の精度がよくなかったり、カード履歴と買い物履歴の名寄せが失敗したりするといった問題はあるけれど、気になったら手で直せるし、そんなに手間もかからない。

金管

金管理については、機能の豊富さではマネーフォワードが勝るものの、使い勝手はマネーツリーのほうがよい。

当初はマネーフォワードをRecerecoと連携してレシート入力で現金管理をしていた。 この機能では、連携する財布を指定しておくとレシートを入力することで差し引き残高が計算されるようになっている。

こうしておくとスマホで財布の中身が確認できるのではじめは重宝していたけれど、しだいにパシャパシャが面倒になり、また帳尻が合わなかったりすると修正が大変だったりした。 ふと 財布の中身は財布の中を見れば確認できるのでは、 という至極当たり前のことに気付いてからこの機能はあまり使わなくなった。

入力画面はマネーツリーのほうがシンプルで使いやすい。 マネーフォワードは少し前に画面がリニューアルされた結果、メモの入力がしにくくなかったりして、むしろ使いにくくなったように思う。

f:id:yubessy:20151230233902p:plain:w180 f:id:yubessy:20151230233927p:plain:w180

最近はなるべく現金より電子マネーやクレジットカードを利用しており、こうすると記録が自動で残るので手入力の手間が省けて便利。 現金の入出金はは千円以上の出費だけ直接入力している。

ちなみにマネーツリーは出費カテゴリに「ATM引き出し」という項目があり、この額が記録した現金出費額と相殺されるようになっているので、うまく使えば手元の現金を把握することも可能ではある。

その他

上に挙げてない大きな違いとしては、マネーツリーのほうが無料で使える機能が豊富だという点がある。

マネーフォワードの無料版は、広告が表示される・金融機関の登録数が少ない・1年以上前の記録が見れない、といった制約がある。

家計簿アプリ 資産管理 「マネーフォワード」

対してマネーツリーはこれらの制約を設けないことを明言している。

Moneytreeのセキュリティへの取り組みについて | Moneytree 一生通帳、家計簿より楽チン!

マネーツリーのこの太っ腹っぷりはすごい。

またマネーフォワードはWeb版があるのが強みだったが、つい最近マネーツリーもWeb版がリリースされたのでその点においては違いがなくなった。

よく言われるセキュリティ上の懸念については、両アプリとも残高照会に必要な最低限の情報しか保持しないので情報が洩れて銀行からお金が引き出される可能性は非常に低いし、不安なら大事なアカウントは連携しなければいいのでここではとやかく言わない。

おわりに

何度も言っているが、マネーツリーはUI/UXが洗練されていて使い心地が非常によい。 対してマネーフォワードは、機能の豊富さではマネーツリーを上回るものの、自分にとっては必要ない機能が多い印象だった。 また最近はましになったものの、以前のマネーフォワードはバグが多くてしょっちゅう落ちていた。

両方のアプリを1年間ほぼ毎日使った結果、自分にはストレスをほとんど感じさせないマネーツリーが合っているという結論に至った。 ただ、人によっては機能の豊富なマネーフォワードが合う人もいるだろうし、この辺は好みの問題かもしれない。

最後に、ここまで偉そうにあれこれ言ってみたけど、どちらのサービスに対しても運営にはいい印象を持っていることを記しておきたい。 両社ともお金の世界を良くするのに相当な努力をしていることは、例えば以下のような記事からよく伝わってくる。

何より競合が存在するというのはサービスが良くなっていく上でいいことだと思うし、心の中では今後も両方のサービスを応援していきたい。