機械学習勉強のアウトプット

機械学習エンジニアを目指すためのアウトプット用ブログ。

機械学習2019年7月振り返り

概要

これは個人用メモである。

何を7月に何をしたかのメモである。

そして随時更新していく。なぜなら月末にまとめてやると

何をしたのかわからなくなるからだ。

 

MNISTのエラー

事象

家のデスクトップPC windows10 32bit, memory 4GB,では

sklearnのMNISTが動かなかった。↓

from sklearn.datasets import fetch_openml
mnist = fetch_openml('mnist_784', version=1, cache=True)

 

MemoryErrorと言われた。

 

対策

ぐぐる。→該当なし。

GIthubで質問→返事なし

・別PCのwin10 64bitだと動く→やったね!

 

AWS導入

どうも64bitだと動きそうだが、64bitにするにはクリーンインストールが必要。それはしたくないので、AWSで環境を立てることにした。

 

準備

1.AWSに登録

2.セキュリティ等の初期設定

qiita.com

3.チュートリアルLinux 仮想マシンの起動)

aws.amazon.com

 4.Jupyter Notebookの設定

qiita.com

 ハマりポイント

  • exitするとPATHが消える(デフォルト)そのため、直接bash_profileに追記
  • jupyterコンフィグに記載するパスワードはsha1の部分から
  • アクセスはhttps
  • ログインできない→パスワード再設定し、openssl再実行
  • ログインパスワードはハッシュ化される前のもの
  • /etc/rc.local を編集して自動起動させる

5.root でのSSH許可。

パスワード設定

・sudo su -

・passwd root

・vi /etc/ssh/sshdc_config

 PasswordAuthentication yes

 PermitRootLogin yes#いらないかも

 

・ec2-userの公開鍵をそのままコピーします。#いらないかも
mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys_bak
cp -f /home/ec2-user/.ssh/authorized_keys /root/.ssh/authorized_keys

・service sshd restart

EC2 インスタンスに接続するためのパスワードログインを有効にする

EC2のAmazonLinuxでrootログイン可能にする(AMI設定まで) - Qiita

 

5.Gitインストール

yum install git

・ git config --global user.name "名前"

・git config --global user.emai "メアド"

・git config --list

ssh-keygen -t rsa -b 4096 -C "git@git-hub.com"

・/root/.ssh/id_rsa.pubができるのでGitHubにこの文字列を登録

 

6.Git復習

qiita.com

 

7.Gitでcloneして自分のリポジトリにUPする

cloneしたリポジトリを別リポジトリとしてリモートにpushする - Qiita

・git remote -v

・git remote set-url origin 自分のリポジトリURL

AWSは無料版はメモリが1GBだったので、MNISTが読み込めませんでした!!!!!!エラー文すら出ずに止まる!!!

AWSがだめならGoogle Colabnoratoryを使えばいいじゃない!

 

8. Google Colaboratory

初期設定等

https://www.codexa.net/how-to-use-google-colaboratory/

 

便利TIPS

https://karaage.hatenadiary.jp/entry/2018/12/17/073000

 

GitHubのコードをGC上で動かす

https://qiita.com/yoshiweb/items/3d6dbe9c3f7c81241cb9

javascript:location.href=location.href.replace('https://github.com', 'https://colab.research.google.com/github');

 

分かりづらかったので捕捉

 ・上記URLをブックマークする。適当なサイトをブックマークし、URLを書き換える

 ・GitHubソースコードを開く

 ・さっきのブックマークをクリックするとGCで勝手に開かれる!!!

 

 以上

 

Colaboratory上でGoogleDriveにアクセスする

google Colaboratoryでファイルを読み込む方法 - Qiita

そのほかは大体これを見ればわかる

 

https://colab.research.google.com/notebooks/io.ipynb#scrollTo=u22w3BFiOveA

 

 

 

振り返り(2019年6月)~Courcera Machine Learning 修了~

はじめに

アウトプットが苦手なせいか、学習の定着率がいまいち良くない。

また、勉強をしているうちにモチベーションが上がるときもあれば、

下がるときもある。下がっている場合に自分の軌跡を見返すことによって

再度モチベーションが上昇することを祈ってブログにアウトプットをする。

 

アウトプットが苦手すぎてツイッターですら勉強時間をつぶやくのを

しないときもあるが、とりあえずトライしてみよう。

ちなみに初めての投稿

 

行動しない自分

最近機械学習なるものが流行っているらしい。

ちょっと触ってみたいけど、よくわからない。

勉強するならどれから手を付ければいいのだろうと調べる。

 

調べて、Courseraのコースが良いと書いてあるのを発見。

けれど、忙しいことを理由になんだかんだ何もはじめない。

効率的な学習方法にこだわり、いつまでたっても始めない。

そんな自分に嫌気がさし、とりあえずえいや!と初めて見た。

 

大変だった

  • 聞き取りやすい英語
  • 評判が良い
  • 分かりやすい講義
  • 数学の知識不要
  • 英語力不要
  • プログラム経験不要
  • 文系でもOK

と、数々のうたい文句を目にし、簡単そうだと思ったが、そんなことはなかった。

英語は何言っているかわからないし、

字幕の翻訳は正確性がなく、たまにずれていてわかりづらい。

プログラム課題は英語だし、QAももちろんすべて英語。

Google翻訳に突っ込んでも意味がわからない翻訳。

ベクトル、行列がしょっちゅう出てくるので、

きちんと理解しないと、プログラム課題が解けない。

プログラム課題の想定時間は3時間程度らしいが、実際にやると9時間程度かかる。

理解できないふがいなさ、迫る期限、目の前に広がる異界の言葉。

とにかくつらかった。特に英語。TOEIC500点程度じゃ食らいついていくのでやっとだった。

 

勉強内容

詳細は以下とほとんど同じ。

各章ごとに学んだことを記載しようと思ったが、アウトプットに時間を割くよりもまだまだインプットしたい内容が多いため、割愛。

とてもわかりやすく簡潔にまとめられていて、移動中の復習で大変お世話になった。

数学が苦手な人でも大丈夫かーとこの人のQiitaが背中を押してくれる最後の一押しになったが、この人はドイツ留学までしているハイスペック人材だった。

他の投稿内容見ても明らかに自分よりハイスペックであり、若干だまされたと思った。

qiita.com

Week-1: 機械学習とは?単回帰分析、最急降下法、目的関数
Week-2: 重回帰分析、スケーリング、正規方程式
Week-3: ロジスティック回帰、正則化
Week-4: ニューラルネットワーク入門
Week-5: ニューラルネットワークバックプロパゲーション
Week-6: 機械学習のモデル評価(交差検定、Bias & Variance、適合率 & 再現率)
Week-7: サポートベクターマシーン (SVM)、カーネル (Kernel)
Week-8: 教師なし学習 (K-Means)、主成分分析 (PCA)
Week-9: 異常検知 (Abnomaly Detection)、レコメンダシステム (Recommender System)
Week-10: 大規模機械学習
Week-11: 写真の光学文字認識

 

学習時間

各章ごとの学習時間

week1:記録なし

week2:15h

week3:17h

week4:8h

week5:9h

week6:9h

week7:9h

week8:7h

week9:10h

week10:2h

week11:2h

復習:26h

 

各月ごとの隔週時間

3月:10h(3/25から開始)

4月:38h

5月:39h

※復習時間は除く。

合計学習時間:113h

 

痛感

今までどれだけ勉強していなかったか痛感した。

仕事が終わってから1時間だけでいいから勉強する。

これがどれほど大変な事か理解をしていなかった。

言うならば、今まで数年かけてきたダラダラすると言う習慣を

変える必要がある。ダイエット、早寝早起き、筋トレなど、新しい習慣を

身につけるのはとても大変だ。多くの人が挫折を経験したことがあると思う。

日によっては22時に仕事が終わり、帰ってきたら23時。

疲れ果てた体で1時間勉強する。

定時で終わって帰ってきても、19時。寝るまでには5時間程度はあるが、

まったりネットサーフィンしていたらあっという間に日付が変わってしまう。

言い訳ならたくさんできる。楽な方へ行くのは簡単だ。

でもそこでちょっとだけやる気を出して、1時間勉強する。

休みの日に10時間程度勉強しようと意気込むが、せいぜい4,5時間程度しか

集中できない。

言うは易く、行うのは難しい。言葉では言い表せられないほど

日々コツコツと学習する大変さを思い知った。

毎日たった1時間程度だが、積み重なればCourseraのような1つのコースを

修了し、自分の力とすることが出来る。この差は大きい。

今まで自分がいかに努力をせず、勉強している人たちと差が開いているかを

実感した。同時にコツコツ出来る人は本当に偉大だなぁと尊敬の念を抱いた(Twitterではたくさん見かける)。

頭では分かっていたつもりだった。

 

月に3冊本を読めばそれだけで上位20%に入れるそうだ。

ちなみに半分の人は月に1冊も本を読んでいない。

言い換えれば、努力している人としていない人の差が激しい。

程度の低い望みかもしれないが、落ちぶれたいとは思わない。

もっと頑張らねば。

 

勉強履歴と今後の予定

2019年3月

  • Coursera Machine Learning開始

2019年4月

  • Coursera Machine Learning 継続

2019年5月

  • Coursera Machine Learning 終了

2019年6月

2019年7月(現在)

  • scikit-learnとTensorFlowによる実践機械学習 写経&理解

 

www.oreilly.co.jp

 

なんだかんだで書くのに2時間くらいかかった。

アウトプットって大変。

推敲はしてない駄文をネット上に公開することに幾ばくかの恥を感じるが、

たぶんほとんど閲覧されることはないと高をくくっている。