世界を目指すIT少年の学習記録

世界を股にかけITを武器に暮らしていく!ことを目指す少年の備忘録。本のレビュー、勉強したこと、学んだことなどを記録していきます。

Deep Learningの基礎を概観しました@ UdacityのDeep learning nanodegree foundation

 

最近Udacity のDeep learning の一連の講座を卒業したので、その概観の紹介。

そして、理解したこと、まだ理解していないことを自分のために書きます。

そこ違うよ、これ参考になるよとかあれば教えてください!

 

 

目次

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

※注 本職はウェブマーケターです(広告、SNSSEO、ASOなど)何か良い案件(副業など)あれば随時ご相談下さい笑 連絡先はプロフィール

データサイエンスは趣味&将来への投資です。Pythonでのウェブアプリ開発とかも少しできるので、他にも何か面白いことあればいつでも紹介してください。基本乗ります。

 

そもそもUdacity とは?

 インターネット上でオープンかつ(ほとんど)フリーのオンライン大学の総称である、Massive Open Online Corses 通称MOOCsの一つです。

他に有名どことしては、edX, Courseraがありますが、Udacityは人工知能の世界的権威の1人であるSebastian Theran が作ったこともあり、データサイエンス系やcomputer scienceが充実しているのが特徴です。

 

UdacityのDeep learning nanodegree foundation とは

このUdacity はひとつ特徴があります。それはNanodegree というもので、企業などとコラボしてオンラインで取れる学位(みたいなもの)を取得できる一連のプログラムです。

例えばMachine learning nanodegree は最近グーグルに買収されたKaggleとコラボした講座です。さらにUdacityのnanodegree の面白いところは、nanodegree plusというものに申し込むと、卒業後転職まで保証してくれるというプログラムがあるところです。(ただし現状はアメリカ人に限る)

 

何を言いたいかと言えば、日本の教育のように大学とかで学んでることと社会が求めていることが違うという歯がゆさはなく、学んだことが実世界のスキルに直結する。という点が画期的だと思っています。

Deep learning とは?

知ってるよ!という人は多いと思いますが、簡単に言えば今一番流行ってる人工知能のことです。

ただし人工知能と言っても人間の脳のようになんでもできる万能マシーンではなく、一部のタスクにのみ特化した特化型人工知能です。

わかりやすい例で言えば、囲碁で世界チャンピオンを負かしたAlphaGoとかですかね(あれは強化学習が入ってるので、Deep learning とはまた違うのを組み合わせているようですが)

 

DL nanodegreeで学んだこと

Deep Learning(以下DL)nanodegree foundationで学んだことは以下の5つのパートに分かれていました。

基本、理論の理解→実装→実践的なプロジェクト

の3本立てで、実践的なプロジェクトはそれぞれレビューがあり、それをすべて合格しないと卒業証書がもらえないという形になっていました。

  1. 単純パーセプトロンPythonで初めからコーディング
  2. TensorFlow(DL用のライブラリ)の学習
  3. 畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)の理論と実装、画像解析プロジェクト
  4. 再帰ニューラルネットワーク(RNN: Recurrent Neural Network )の理論と実装、映画の字幕を自動生成
  5. GAN: Generative Adversarial Neural networkの理論と実装、人の顔を自動生成

では以下により詳細を説明します。

 

単純パーセプトロンの学習

単純パーセプトロンとは、ニューラルネットワークのうちの最も単純な形です。

 

ニールセンの

ニューラルネットワークと深層学習

https://nnadl-ja.github.io/nnadl_site_ja/

の第一章の途中が一番わかりやすいかと思います。

 

f:id:kenjioda:20170727221301p:plain

基本的には人の脳のニューロンを模倣しているモデルで、あるインプット(ここでいうX1,2,3)などにたいして、係数をかけ合わせて、その値がある一定の値を超えた時に発火するというモデルです。

 

例えば、「ある食べ物を食べるか食べないか」(これがOutput)を判断するときに、

甘いもの、辛いもの、酸っぱいものというインプットが与えられているとします。

このときあなたが非常に甘党であれば、甘いものに対しての優先度が非常に高いので、

甘いものという入力に10倍重み付けをするかもしれません。

逆に辛いもの、酸っぱいものはそんなにすきじゃないので、3倍、1倍と掛け合わせます。

すると、甘くて辛いものを見たときには、10+3=13というアウトプットが得られます。

あなたが食べるか食べないかのしきい値が3.5だとすると、13は3.5を超えているので、あなたはその食べ物を食べるという結論を出します。

逆に、酸っぱいもの単体では、足し合わせが1なので、3.5をうわまらないので、食べないという決定を下します。

これが単純なパーセプトロンですね。

output={01if jwjxj thresholdif jwjxj> threshold

output={01if jwjxj thresholdif jwjxj> threshold

 

 誤差逆伝播法(Back propagation)と勾配消失問題(Vanishing gradient problem)

誤差逆伝播法とは何か?の細かい説明は以下のリンクなどを見ればわかるかと思うのですが、簡単にいえば、「ニューラルネットワークの重み付けを効率的に更新していくためのアルゴリズム」です。

重み付けを更新するときに、予測した値と実際の値の誤差=目的関数 を最小化することがニューラルネットワークの目標です。

なぜかといえば、予測した値がなるべく本当の値に近いほうが良いに決まっているからですね笑

そして、この予測と実際の値に差があるときに、それを学習データとして、より良い重み付けを探っていきます。そのときにこの誤差逆伝播を使います。

qiita.com

 

ただし、誤差逆伝播には問題があり、それが勾配消失問題です。

勾配消失問題とは、重み付けを更新していくときに、アウトプットに近い層は重み付けの更新がうまくいくものが、よりインプットに近い層に進むに従い、うまくいかなくなるという問題です。

これがなぜ起こるのかに関して以下のリンクがうまく説明しています。

 

medium.com

 

誤差逆伝播では、活性化関数の微分を計算します。このとき、活性化関数の種類によって、微分での値が異なります。

 

例えばシグモイド関数

シグモイド関数微分を行うと下の図のように、最大で1/4しか値を返しません。

つまり、もし活性化関数にシグモイド関数を使っていると層が進むにつれて、1/4x1/4x1/4… といって重みの更新が非常に小さくなりほとんど学習しなくなります。

これが勾配消失問題です。

 

 

f:id:kenjioda:20170727221211p:plain

それに対して、以下の

Rectified linear unit 通称ReLUは微分するとステップ関数になって重みとしては1を返していきます。ですので層が深くても重みが更新され、勾配消失問題が発生しなくなります。

 

f:id:kenjioda:20170727221241p:plain

勾配消失問題と逆で重みが、消失するのではなく、発散してしまうケースもあるとのことですが、その場合明らかに異常値が出てくるのでそこまで問題にはならないようです。

 

 

TensorFlowの学習

Deep learning を実装するにあたり、色々なライブラリがあるかと思いますが、Udacity の場合はGoogleが提供しているTensorFlowでした。

 

そもそもDL以外も色々できるようにしようというコンセプトらしいので、正直僕のようなプログラミング弱者には辛いです笑

 

 

本家の畳み込みニューラルネットワークチュートリアルなどは参考になるかもしれません。

TensorFlow

 

 

ディープラーニングなライブラリは色々あり、それぞれによって特徴が結構違うらしいですが

、世界ではTensorflowが流行りのようです。

日本ではプリファードネットワークが出しているChainerが人気だと思うので、おそらく日本語の資料は多く見つかるのではないでしょうか。そしてChainerは短く書けると聞いたことがあります。

 

 

TensorFlowが難しすぎる人にはKerasというライブラリが簡単なのでオススメらしいですが、僕もちゃんと使ったことはないです。

チュートリアル見た感じ簡単そうでしたが。

 

 

畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)

畳み込みニューラルネットワークディープラーニングを一躍有名にしたものだと思いますが、ディープラーニングで特に得意とする画像認識に用いられます。

もともとネオコグニトロンという日本の研究者のモデルをもとにしており、人の脳での視覚野での処理を模倣しています。

 

詳しくは以下文献が特に参考になりました。

 

 参考になった文献

 

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

 

 基本的には、画像内の特徴的なパターン(斜め、縦、横など)に反応する層を畳み込み層とします。ここで画像の特徴的なものを抽出します。

次にもう少しざっくりした概念を抽出するプーリング層を挟みます。ここでは、ざっくりとある領域の中で最も大きいピクセルのみに反応する(マックスプーリングの場合)というような処理をするので、畳み込み層で抽出した特徴をもう少しボカすような処理をします。

 

これが実際脳の視覚野でも同じようなことが行われており、実際プログラミングでもうまく画像認識することが可能になります。

 

これがざっくりとした畳み込みニューラルネットワークの仕組みです。

 

再帰ニューラルネットワーク(RNN: Recurrent Neural Network )とLSTM: Long term short memory

再帰ニューラルネットワーク通称RNNはその名の通り再帰的な構造を持ちます。 

再帰とはウィキによると

再帰(さいき)は、あるものについて記述する際に、記述しているものそれ自身への参照が、その記述中にあらわれることをいう

と書かれています。

つまり自分自身を再度参照するよーってことですね。

これを行うと何が嬉しいかというと、自分の前の状態を参照できる。

それによって「時系列的な影響を考慮できる」というメリットがあります。例えば一個前がこういう状態だったからその値を再帰的に参照して次の時間の状態に引き継ぐことができます。

 

これがRNNの本質かつ、大きな特徴です。

またRNNをより拡張して特に自然言語処理などに使いやすいと言われているものがLSTMでこれは以下のリンクで美しく説明されています。

Understanding LSTM Networks -- colah's blog

 

 

www.youtube.com

 

 

 

Chat botの作成(Seq to seq)

自然言語処理と言えばチャットボットでしょ。という話があるかと思いますが、LSTMのみで作るとわけわからない文章が生成されたりします。実際映画の字幕から自動で字幕生成するという課題をやったところ結構わけわからないものが出てきました笑

 

現状は完璧に扱えるものがないので、半分くらい人間が用意した文章をもとにチャットするみたいなSequence to sequence モデルが使われているようです。

※これあんまりよくわかってないから復習する

www.wildml.com

www.wildml.com

 

GAN: Generative Adversarial network 

 最後にGANをやりました。

先述の

深層学習 (機械学習プロフェッショナルシリーズ)ではCNN, RNNそしてディープボルツマンマシン(DBM)しかなかったので、この講座で初めて知りました。

 

確かあのBengio先生もニューラルネットワークの中で最も面白い発見の一つみたいに言ってるらしく(確か)確かに今までのものとは違うので面白いです。

 

僕が解説するよりも以下の記事を読んだ方が圧倒的にわかりやすいですが、特にGANとはなんぞやを説明している文を抜粋すると

 

この関係は紙幣の偽造者と警察の関係によく例えられます。偽造者は本物の紙幣とできるだけ似ている偽造紙幣を造ります。警察は本物の紙幣と偽造紙幣を見分けようとします。

次第に警察の能力が上がり、本物の紙幣と偽造紙幣をうまく見分けられるようになったとします。すると偽造者は偽造紙幣を使えなくなってしまうため、更に本物に近い偽造紙幣を造るようになります。警察は本物と偽造紙幣を見分けられるようにさらに改善し…という風に繰り返していくと、最終的には偽造者は本物と区別が付かない偽造紙幣を製造できるようになるでしょう。

GANではこれと同じ仕組みで、generatorとdiscriminatorの学習が進んでいきます。最終的には、generatorは訓練データと同じようなデータを生成できるようになることが期待されます。このような状態では、訓練データと生成データを見分けることができなくなるため、discriminatorの正答率は50%になります。

 

です。このように、ランダムなノイズから生成した画像を本物の画像と同じように偽造していくモデルを構築というのがGAN がやってることです。

詳しくは以下を要参照!

elix-tech.github.io

 

 

その他参考になる概念やリンク

 

ハイパーパラメータのチューニング

ハイパーパラメーターとは、重みとかがパラメーターかと思いますが、それよりも前に定義しなければいけない
層数とか層ごとのユニット数などです。
入力と出力はデータや予測したい要素によって決まると思いますが、隠れ層は任意で決めなければいけません。そしてこれは結構めんどくさいです苦笑
友人がハイパーパラメーターの研究してた気がするけど詳細は知りません

stats.stackexchange.com

 

転移学習

転移学習(Transfer learning )はめっちゃ便利で、ディープラーニングって学習するのにコンピュータリソースも時間もクソ使うけど、Googleとかが頑張ってチューニングしてくれたやつをそのまま使えまっせってものです。便利だね!

cs231n.github.io

 

Batch normalization(バッチ正則化)

バッチ正規化はイマイチなんでうまくいくかわかってないけど、とりあえず正則化すると極端な値とかが出てこないから学習しやすいとかだった気がするけど忘れたので勉強します。

Implementing Batch Normalization in Tensorflow - R2RT

Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift

Word2Vec

こちらは自然言語処理系。Bag of wordsのようにある文章内に単語がいくつ出てきたとかではなくて、もっと高度なもので、女王-女=王みたいな計算もできるらしい

どうなってるかよくわかってないからこれも要復習

Word2Vec Tutorial - The Skip-Gram Model · Chris McCormick

 

最適化関連の手法

最適化でAdam optimizerとか出てくるのでそれなんぞやを解説している

postd.cc

Auto Encoder

これもなぜうまくいくかはよくわからんけどうまくいっている系らしい。

入力と出力を同じようにするよーというもので、ノイズとかがいい感じに減るのかな?なんでうまくいくかは解明されてないのでイメージですが

 

 

感想

 全体的にディープラーニングを概観できたし、実際の実装や実践的な課題があってめっちゃ良かったです。

値段はこの時ちょっと安くて400ドルくらいだったし、三ヶ月くらいでこんなにできて良かったです。あと卒業証書もこんな感じでもらえるのでLinkedinにも書けるし良いよねー的な笑

f:id:kenjioda:20170812065216p:image

けど、当たり前だけどディープラーニングってチューニング大変だし学習データ膨大に必要だったり、画像処理以外は結構実践で使うの大変そうだから、他の初歩的な機械学習アルゴリズムや統計の知識ってやっぱ大事だなと思った次第です。

 

というわけで、今は初心に帰ってこちらの本

 

はじめてのパターン認識

はじめてのパターン認識

 

 そして、Udacityは

Intro to machine learning 

Intro to Machine Learning Course | Udacity

 

Model building and validation

Model Building and Validation | Udacity

の二つをやってます。

 

引き続き頑張ろう!

Deep Learningをやっている。独学を支援するようなサイトを作り始めた。人類のためにね 1,2,3月振り返り

月一で更新する予定が全然できていなかった笑

 

Deep Learningを真面目にやっている

掲題の通り、最近はDeep Learningをやっている。

なぜやっているかといえば、

UdacityのDeep Learning nanodegree foundationというプログラムに参加しているからである。↓

www.udacity.com

なぜ入ったかというと、単純にプログラム内容が魅力的だったからである。

だって、画像認識とかは当たり前だけど、

映画のセリフをDeep Learningで自動生成、翻訳、音楽生成とかめっちゃ楽しそうやん!!!

ただそんだけ。あとやっぱ知っておいたほうが良いかな的な

主に、Tensorflowでの実装ですね。その前にもPythonで簡単なパーセプトロンでの3層構造くらいのNNは実装しました。

誤差逆伝播法(Back propagation)とかはふーーんくらいに思っていたけど、きちんと理解しておかないとどの活性化関数を選ぶべきかとか、勾配消失問題とかが理解できなくなるので大事だなと思います。

ちなみにこれについて載っているサイトはこれです↓

medium.com

※最近Mediumはまじめな記事が充実しているんですね。

 

あとRNNのLSTMをめっちゃわかり易く説明しているリンクが下記です。おすすめ

Understanding LSTM Networks -- colah's blog

 

自己学習を支援できるようなサイトを作り始めた

上記のリンクのように、コースをやっている中で外部リンクが紹介されることが多いので、それをどうやって管理しようかなぁという問題があったのでメモがてらで、リンクを集めるサイトを作った。(Google siteだけどね)

 

あとは、自己学習時におけるハードルって結構色々あると思っていて、自分も過去&現在でその課題を感じているので、何かしらの方法で解決できないかなを模索しようという意思もあり、実験的に作り始めた。

それが以下である。

Academic Wiki

人工知能機械学習系を主にまとめたリンク集は

Academic Wiki - 人工知能と機械学習

である。(これは普通に便利だと思います。英語多いけど)

 

このサイトのゴール

このサイトのゴールはサイト内にも記載したが下記のようなものである。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

サイトのゴールはオンライン、オフラインのリソース関わらず、自己学習をする人達を最大限サポートし、目標達成まで全力でサポートするエコシステムを構築することです。

卓越した能力を身につけるための学習プロセスを研究するK. Anders Ericsson著のPeak: Secrets from the New Science of Expertiseによる学習プロセスの4つに要素+学習後のプロセスの支援を目標とします。

 

1.能力、目的を把握

2.その人の能力よりやや難しいコンテンツを抽出

3.集中した時間を使って学習

4.適切なフィードバック

5.目標達成後のアカデミックパスやキャリアパスの支援

 

そのうち、

1.はクイズやインタビューなどで把握可能、2はカテゴライズされたリソースを体系的に整理すれば可能です。

3と4は課題ですが、自動採点システムや人が介入したコミュニティ作りで今後可能になるかもしれません。

5は現状の日本では大きな課題になっていますが、米国のUdacity nanodegree programなどは良い事例となるでしょう。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

で、色々独学とかをしている人やしていた人および自分の経験から考えると、

初めの「目的にあった教材選びやパス選択」が大きなポイントでかつ難しいところのようである。

例えばよくある独学でつまずく例として

Webサイト作れるようになりたくて、プログラミングを始めた。けど、本屋で一番多かったJavaをやり始めて、1から10の足し算だけできるようになって挫折。

みたいなことがある。

この例は、そもそも目的に合っていない言語と、目的に合っていない勉強方法によるモチベーションの低下が失敗要因。

と言える。

 

僕自身も人工知能やりたい!みたいなノリで初めたけど色々ありすぎてどうしたらいいんや。とりまPRMLがいいらしいよと頭いい人に言われて、これ無理やんってなる。

とかが起こった。

今はUdacityが最も良い解の一つに自分の中では落ち着きつつあるけど、だれもが感じるハードルだよねって思う。

英語も独学で頑張ったけど、今思うと、色々無駄にすごした部分とかもっといいやり方あったな。って思うし。みたいな。

 

今は特にお金にしようとか思っていないので、興味あるような人いたら一緒にプロジェクトをすすめたいなって思っている。

この記事を読んで興味を持った方がいたら、是非私に、Facebookで気軽に連絡をくれるとありがたいです。織田健嗣Facebookリンク

 

 

他にも勉強したこと&していること

3ヶ月分あるからざっくりでいいやw

 

 もっと詳細な理論とか知りたいなと思って読んだ。完全には理解していない部分もあるw DBMとか。でもCNNやRNNの理解には役に立ったなぁ

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

 

 

 馬田さん本。最後の章が一番おもしろかった

逆説のスタートアップ思考 (中公新書ラクレ 578)

逆説のスタートアップ思考 (中公新書ラクレ 578)

 

 

他にも色々読んだ気がするけど忘れたからいいやw

 

オンライン講座

データをいかに取得し加工するかという話。前処理ってやつですかね。データサイエンスの8割はこの作業に時間を費やされるとか。大変ですな。まだ、落とし込めている感が一ミリもないから、もう一回復習しようかなって思っている

www.udacity.com

 

今やっているなうだけどSklearnを主に使って、基礎的な機械学習が学べる、SVM, Naive bayes, Decision treeとかさ。Sklearn使うとマジ簡単だねw

www.udacity.com

 

基礎的なやーつ 大事だね。Siraj(Youtuberでデータサイエンスの面白いやつ)っていうやつのおすすめ

www.youtube.com

 

 

結論

独学は頑張ればすべてオンラインで完結する。

お金も必要じゃない。

けど、まだまだハードル高いから解決する何かを作りたい

それが Academic Wiki が目指すところ。

 

P.S.

Kaggleやりたい。やります。

 

 

株式会社はてなに入社しました

株式会社はてなに入社しました

株式会社はてなに入社しました - hitode909の日記

大学院で研究じゃなくて社会人になって正解だと思った一年だった 一年振り返り

f:id:kenjioda:20161230160414j:plain

 

今年の振り返り(というか意見の羅列)および12月の振り返りをしようと思う。

大学院行こうかなぁ。社会人になろうかなぁ。とか色々考えている人の参考になったら良いな。

ただし、完全に個人的意見なので、頭いい人にちゃんと相談するのが一番いいけどね。

 

大学院で研究ではなく社会人になって良かったと思った一年だった

理由は以下

 

1.大学院行かなくても自分で勉強できる。(特に理論系)目的によってはむしろ効率が良いこともありそう。

2.アカデミックの世界で重要視されていることと実務(ビジネス)の世界で重要視されていることは違う

3.アカデミックの世界で活躍できなくても、ビジネスの世界で活躍する方法はありそう

 

の3点です。

 

大学院行かなくても勉強できる。目的によっては研究室よりも効率良い

まず、一つ目

大学院行かなくても勉強できるっしょ

という話は、実験系とかものすごく高い器具やソフト使わないと無理。

とかでなければ全部自分でできます。

もしかすると、私がいた研究室が特殊だったのかもしれませんが、

量子コンピューターの理論系の研究室だったので、

「そもそも量子コンピュータないし実験できるわけねぇw」

という背景もあり、すべて理論なので、各自勝手に好きな時間に好きな場所で勉強する。各自が何やっているかも知らない。

という状況でした。(つまりほぼほぼ独学)

 

別に研究室来なくても良いので、スタバでやっても、インターン先の会社のデスクでやっても、家でもどこでもOKでした。

まあなんで、むしろ社会人になってからも独学しても状況が変わらなかったわけですね。

 

 

社会人になって変わったのは、時間の感覚に敏感になったこと。

なぜなら自由な時間が少ないから。

どんなに優良な企業でも一日8時間×5日は拘束されると思いますし、休憩時間と通勤時間も入れたら一日最低10時間は拘束されるでしょう。

 

学生時代はこの一日最低10時間の拘束がなかったので、めっちゃだらだらしてました。笑

(そもそも本当にすごい人とか、研究者を目指す!と思って進んでいる人はこんなことないんですけどね)

 

 

社会人になると、だらだら勉強することもなく、朝家出る前と通勤時、帰ってからちょろっと、および週末でめちゃめちゃ集中して勉強というルーティンができましたので、非常に効率的でした。

 

あと、論文とかに落とし込む必要性がないから、必要性があるものだけかいつまんで学ぶこともできる。

というメリットも大きかったと思います。

 

アカデミックの世界とビジネスの世界で求められることは違う

所詮学部卒なので、お前アカデミックのことなんもしらないだろ!ということはあるのですが、周りの友人達は修士卒業やPhD課程にいるやつもいるので、なんとなく把握しているつもりです。

 

くそざっくり言うと、

アカデミックだと基本「なんか新しいことやんなきゃいけない」と思います。

じゃないと論文とか研究にならないので。

あと「めっちゃ厳密じゃないとだめ」ってのもあります。

 

対してビジネスは

「あるビジネス上の課題を解決すれば、別に手段は新しくなくても全然OK」で、「100%正解じゃなくても80%くらい正解でもうまくいけばいいよ」という考え方があります。

 

前者の「別に手段は新しくなくていいよ」

という点は特に大きく、すでにアカデミックの世界では当たり前だったり、色々な事例があるような理論をあてはめてビジネス問題を解けばそれでOK

です。

 

また、厳密に正解しなくても、現状より良くなればOK なので、そこまでハードルが高くないのが現状です。

 

構図としては、

アカデミック:ある特定の分野について誰よりも詳しく誰よりも深く

ビジネス:他の人より詳しくて、今を改善すればOK

となりそうです。ですので、おもったよりも深掘りしなくても適用できればいいんだな

って感じになります。

 

例えば統計的仮説検定とかで、

なんで、t分布に従うのか?F分布従うのか。それぞれの確率分布はどのような理論的背景から導き出されたのか。情報量基準っていつでもAICで本当によいの?

 

とか理論系の研究室で聞かれそうなことは、

「基本みんなそれでやってるんで」って感じの答えでOKになるわけです(極端な話ですが)

 

なので、そこまで極める必要性がないのが現状です。

※もちろん基礎研究をやっているところとかは違いますが。

 

アカデミックでは花が開かなくても、ビジネスでは花開く人はいると思う

上記の理由から、アカデミックでは

「くそ厳密に、くそ深く」が求められがちです。

 

ですが、ビジネスでは

「そもそもどの課題があるかを発見する」

だったり

「今まで周りの人が知らなかった方法で現状よりも改善する」

というスキルがあれば重宝されるわけです。

 

一つ目の能力については、どうすればよいかというと、

私はわかりません!!!!(ってか教えて)

今勉強中です。

 

 

二つ目の周りのやつに勝つ

に関しては、

「特殊になれば良い」

だと思っています。

だって周りに勝てばいいんだから、それは相対的に特殊になることだから。

 

私が現在行っているアプローチは、古くから知られている手法ですが、

「掛け合わせる」

です。

 

私は、

マーケ×データサイエンス

を目指しています。

マーケができる人はたくさんいる。それはレッドオーシャン

データサイエンスができる人もいる。大抵数学がめっちゃできる。

でも両方できる人はたぶんあんまいない。(自社調べ)

 

掛け合わせると、そこそこ特殊×そこそこ特殊=めっちゃ特殊 となるわけなので、他のやつに勝てる唯一無二の存在になる可能性が高くなると思うのです。

 

ただし、これは本当にそうなるかはわからないし、うまくいかないかもしれないので、私が実際にやってみて、この道を開拓したいと思っています。笑

 

 

はやく唯一無二の存在になって、

天上天下唯我独尊なう」

ってつぶやきたいですね。(アフリカあたりで)

 

 

以下いつも通りの記録

12月振り返り

いつも通り12月に勉強したのを列挙

 

データサイエンス関連

Udacity Nanodegreeを引き続き

NanodegreeのSyllabusにはIntro to CSのLesson4まででOKと書いてったのですが、

Intro to Data AnalysisのPythonレベルがおもったよりも俄然高く、結局Intro to CSのLesson 5-7もやることに。

 

なぜなら、辞書とかLesson4までではやっていなかったのに、Intro to Data Analysisではバリバリ出てくるためw

 

 

Intro to Data Analysis

www.udacity.com

 

というわけでIntro to CSの最後のほうを引き続きやっているわけですが、それでもIntro to Data Analysisのクイズを独力で解ける気はしないので、写経状態になりそう。

www.udacity.com

 

色々ググったら、

Dive Into Python 3 日本語版

が非常に良いらしい

というのを見てやってみようかなぁと考えてもいる。けど、どうしたらプログラミングを習得するのに効率良いのかよくわからないので、検討中。

(しかもPython3だし)

 

あと引き続き以下もやっている。 

項目反応理論[入門編](第2版) (統計ライブラリー)

項目反応理論[入門編](第2版) (統計ライブラリー)

 

そろそろRで実装もしようかな

 その他 本

分散読みしすぎて全然読み切れていないけど、これは読んだ 

まなざし

まなざし

 

 おすすめ度:5

仕事帰りの電車の中とかで読める感じ。脳の容量を使わない。

そして面白い。面白いこと考える人だな って思う。

 

 

今回は以上!

本読んでない!すくない!

 

 

来年は夏頃までにDeep Learningとかで筋電位からロボットアーム作る装置とか、

自動運転ロボット(ルンバ的なやつ)とか作ってみたいですなぁ。

 

最終的にはやっぱりアイアンマン!

 

来年もどうぞよろしくお願いいたします。

 

データサイエンス学ぶならUdacityのData analyst nanodegre 11月振り返り

f:id:kenjioda:20161211114624p:plain

バイトするならタウンワーク

と同じノリで

データサイエンス学ぶならUdacity!

と最近は思っています。

Pythonをやっているよ。Intro to computer scienceなう

Intro to CSの前に統計系の基礎をこれで学んだよ。

 

Inferential statistics↓ではいわゆる統計的仮説検定の概要を把握するという感じだった。

www.udacity.com

よく本読んでて、F検定とかカイ二乗検定とか出てきてよくわかんねぇーけどとりあえず、差とかを検定しているんだろうなぁ

とざっくりとしか理解していなかったけど、この講座で学べた。ただし、なんでその分布に従うかとかまではやっていないので、こういうときはこの検定を使う。とか言うイメージ。

そもそも仮説検定とはから、t検定、F検定、カイ二乗検定、相関、回帰

とかが内容としては入っていた。相関とか回帰は別に見なくてもいんじゃね?って感じ。

 

UdacityのData analyst nanodegree(Data Analyst Nanodegree | Udacity)

の要件の中にIntro to CSのLesson4までと書いてあったのでやっている。

www.udacity.com

初めの方は、まあいわゆる文法みたいなのを学んで、変数の指定の仕方とかやったり、If文の書き方、関数の書き方とかをやる。

けど、日本のプログラミング教育と違うのは、こういう基本的な文法をならったあとにすぐに実践に移るという点。

 

スクレイピングとかをすぐに実装してみよう!みたいな流れになるので、For文とか学んだけど、結局1から10まで出力しただけ。くそつまんねぇ。みたいな日本の教育とは違うなと思いました。(そういえばイリノイ大学のCSのクラスもそんな感じだった気がする。途中でDropしたけどw あのときちゃんとやっておけばよかった。)

 

あと教育×テクノロジーにずーーーっと興味があるし、それで色々作りたいという思いもあり、

 これを読んでいる。

項目反応理論[入門編](第2版) (統計ライブラリー)

項目反応理論[入門編](第2版) (統計ライブラリー)

 

項目反応理論は、テストとかの答えをもとに生徒の能力を推定する理論で、基本はロジスティック回帰を理論の基盤としている。

今後きちんとまとめようと思う。 

 

UXって大事なんじゃないかなって思って勉強始めた

なぜUXが大事になってくると思うかの理由は以下

 

人工知能の発展によって、数字でわかる、計算すれば答えが出て来る。または人間よりも精度が高い答えを出せる可能性が高いもの(複雑な多数の要素、多くのデータが取れるもの)は機械にやらせればいい時代になっている。

なので、より答えがない、ファジーな問題を解く。人間にしかできないような問題を解くことがより重要になってくると思うから。

 

マーケ文脈だと、広告は自動化ツールがすでに人間を超えているので、自動化ツールが勝手にやってくれるようになっている。

またSEOに関しても今までは「テクニック」の部分が多かったのが、Rank Brainと呼ばれるGoogle人工知能アルゴリズムによって、より「ユーザーの体験」を重視=UX の文脈が強くなっている。

 

ーー以下妄想ーー

人工知能の今後を考えていくと、今後ソフトウェアとしての人工知能は非常に発展していくと考えられる。特にDeep Learningを中心とした特化型人工知能は強くなっていくだろう。

まだまだ汎用型人工知能は先だが、それもいつか実現できるかもしれない。

仮に汎用型人工知能ができたら、その後はマルチモーダルを利用した、体験を加味した人工知能の発展が次の課題になる可能性が高いのではないかと思っている。

しかし、これを実現するには、ロボットが人類と共存できるようになる必要があるので、そのためにはロボット工学の中の位置制御から力制御に変わる必要がある。しかし、その分野は発展はまだ先だと考えられる。

 

UXデザイナーが本質的に目指していることは、人間がいかにスムーズに快適に過ごせる体験を最大化させるものをつくるか。で、これを行うのにユーザー調査や、様々なファジーな情報を統合していく必要があって、人工知能がすっごく発展しても体験の部分に対してのハードルが高いので難しいんじゃないかなって思っている。

ーー妄想以上ーー

 

という妄想をいつも通勤時に考えているのですが、

端的にいうと、UX学んだほうがマーケターとしてもいいよね。っていうだけの話です。笑

 

 

 というわけでUX担当とかに聞いて良いと言われている本を順次読んでみたりしています。

UXデザインのやさしい教本 UXデザインの仕事の実際、学習のヒントとアドバイス

UXデザインのやさしい教本 UXデザインの仕事の実際、学習のヒントとアドバイス

 

おすすめ度:4

樽本さんのユーザービリティエンジニアリングにも近しい感じだが、わりとUX全体を俯瞰している感じ。はじめてよむのは これいいかも。 

 

人間中心設計入門 (HCDライブラリー)

人間中心設計入門 (HCDライブラリー)

 

おすすめ度:2

ちょっと理論を俯瞰しすぎていて逆にわかりづらい気がする。好みがわかれそう。

たぶんすっごいきちんと学んだ人にはいいのかもね。

とりあえずUX関連の理論をすべてまとめた、

彦丸風にいえば、「UX界のブリタニア辞典や〜」って感じ(読めばわかる)

 

IA/UXプラクティス モバイル情報アーキテクチャとUXデザイン

IA/UXプラクティス モバイル情報アーキテクチャとUXデザイン

 

読んでいるなう。なので今後書く。 

 

ほかにはこんな本を今週は読んだんだ

 

おすすめ度:5

前作も良かったけどこれもすっごい良い。

面白いからすぐよみ終わっちゃうし。

 

成果を出し続けるための 王道SEO対策 実践講座

成果を出し続けるための 王道SEO対策 実践講座

 

おすすめ度:5 

まだ読み途中だけど、初心者にも中級者にも嬉しい気がする。301リダイレクトの書き方とか以外と技術的なこともかいてあるし、基本もかいてあるし、さいこー!

 

仮説思考 BCG流 問題発見・解決の発想法

仮説思考 BCG流 問題発見・解決の発想法

 

おすすめ度:4

なんか頭いい人の本。普段の仕事の考え方には役立つよ。 

 

発想する会社! ― 世界最高のデザイン・ファームIDEOに学ぶイノベーションの技法

発想する会社! ― 世界最高のデザイン・ファームIDEOに学ぶイノベーションの技法

 

 おすすめ度:4

IDEOの本。でも↓のクリエイティブマインドセットのほうが読みやすい。

マネージャーの人はこれ読むと良いかもね。ベンチャーの社長とか。

 

クリエイティブ・マインドセット 想像力・好奇心・勇気が目覚める驚異の思考法

クリエイティブ・マインドセット 想像力・好奇心・勇気が目覚める驚異の思考法

 

読んでいるなう。

こっちのほうが個人向け 

 

おすすめ度:2

まだ読み途中だが、記事をよんでこの人の考え方いいなとおもって買ったけど、この本は間に受けないほうがいいやつな気がしている。 

 

 

Fire TV Stick

Fire TV Stick

 

あと全然関係ないけどFire Stick買いました。めっちゃアクション映画読んでる。

Amazon Primeさいこー(Amazon信者) 

 

読んだ冊数

4月 8冊 

5月 5冊

6月 4冊

7月 4冊

8月 4冊

9月 5冊

10月 6冊

11月 6冊

計 42冊→約60冊/年 ペース

そんな読んでるんだ!(驚き)w

 

今年も残りわずか。がんばろー!

【3秒記事】データ解析のためのPython環境をMacで構築&学習教材リスト!

以下は三秒記事(主にはてな記法で書いてみたかっただけである)

Anaconda をMacにインストールする方法

https://www.continuum.io/downloads#osx
から、Graphical installerで.pkgファイルをダウンロードするとうまくいかないので、command line installerを使ってTerminalからインストールするとうまくいく

おそらく新しいMacのOSだとセキュリティを高めているらしく、App storeまたはAppleに承認されたものしかインストールを許可しないようである。

あとはiPython notebookを使うと、良いよ!ターミナルで

ipython notebook

とうつだけでnotebookが立ち上がる

PythonCSVを読み込もう!

やり方は以下

#まずunicodecsvをインポート
import unicodecsv

with open('enrollments.csv', 'rb') as f:
  reader = unicodecsv.DictReader(f)
  enrollments = list(reader)

enrollments[0]

#Create a function to read csv files
def read_csv(filename):
  with open(filename, 'rb') as f: #rbにするとバイナリーモードで開ける バイナリーモードだとOSに依存しなくなる
    reader = unicodecsv.DictReader(f)
    return list(reader)

#例えばこういうふうに使う
enrollments = read_csv('enrollments.csv')
print enrollments[0]

はてなブログでコードを挿入する方法
www.weblog-life.net

そもそもPython学ぶには

日本語ならこれ↓
ただし、途中までしか無料でできないので、Loopとかやりたければお金払わなきゃいけないみたい。でも月額980円だから、いうて一ヶ月で終わると思うからまあいいかもね
prog-8.com

最近まで全部無料だったCodecademyも有料化してきているみたいだしね。
www.codecademy.com


あとはやっぱりUdacityのIntro to computer scienceいいよ
今絶賛やっています
www.udacity.com


以上!

SEO対策ならこれだ!YeahそしてStatisticsな月 10月振り返り

今月をまとめると

SEOを学ぶために新しくサイトを作り始めたよ!

引き続きData analysis nanodegreeをやっているよ!

の二点です。

ウェブマーケター兼データサイエンティスト兼海賊王を目指す僕としては、一番体を成す月だったね!

以下なぜか、テンション高めの記事です。

 

SEOを学び始めているよ!

サイトはじめたんだ

まあもともと4年前くらいにもTOEFLを専門としたサイトを運営していて、

TOEFL 勉強法」とかで1位とってたりしたんだが、記事書くの飽きたっていうのと中国人のハッカーにハッキングされてサイトが真っ白になった。

っていうことがあったからやってなかったんだけど、今ウェブマーケティングを職種としてやっているしまた勉強しようかなってね。

 

作ったサイトは以前のTOEFLサイトを踏襲して英語勉強法サイト

英語勉強法 徹底解説 study-english.jp

っていうなんのひねりもないドメイン名のサイトだ!

 

僕がおすすめする本はこれだ!

 

いちばんやさしい新しいSEOの教本 人気講師が教える検索に強いサイトの作り方 (「いちばんやさしい教本」シリーズ)

いちばんやさしい新しいSEOの教本 人気講師が教える検索に強いサイトの作り方 (「いちばんやさしい教本」シリーズ)

 

 いわずとしれたアユダンテ(SEO専門コンサル会社)の本

本当にこれをはじめにやればOK

そして僕の目の前にはアユダンテ出身のSEO担当者が座っているよ!(^_-)-☆

 

 

SEO対策のための Webライティング実践講座

SEO対策のための Webライティング実践講座

 

次にこれ。SEOの基本を身に着けたら記事をどうやって書けばいいかをこれで学ぶんだ!Yeah

 

本は以上。他にもSEOじゃないけどWebマーケ(ソーシャルも含め)でいいとおもうのは

 これかな↓ 

 

絶対に読むべきリンクはこれだ!

だってGoogle先生が出している教科書だもの。みつを

  1. 検索エンジン最適化スターターガイド(PDF)
  2. ウェブマスター向けガイドライン(品質に関するガイドライン)

 あとはみんな大好き

海外SEO情報ブログ - 海外のSEO対策で極めるアクセスアップ術

Byすずきけんいちさん

これを毎日読んでいれば君はSEO担当だ!

 

 ちょっと気になるんだが↓これいいのかなぁ 内部対策大事そうだもんねぇ

これからはじめる SEO内部対策の教科書

これからはじめる SEO内部対策の教科書

 

 

 

Data analysisやってるよ!(Descriptive & Inferential statistics)

Descriptive statisticsは終わったぜ

www.udacity.com

Descriptive statistics は終わった。日本語で、記述統計かな?いわゆる中央値、最頻値、平均値とかを鬼丁寧にやってくれました。簡単すぎたが、一応すべて終わらせた

 

今はInferential statisticsをやっている

だんだんテンションが下がってきたが笑

今は

www.udacity.com

これをやっている。

t検定とかの統計的仮説検定やら、カイ二乗検定とかが学べる。

そこらへんやりたかったから非常にうれしい!

 

次はちょろちょろ

www.udacity.com

これやらなって思いつつなかなかすすまないやーつ。

今月読んだ本

今月読んだ本は以下だ!

 

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

  • 作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,黒沢 健二,松永 肇一,美谷 広海,祐佳 ヤング
  • 出版社/メーカー: 早川書房
  • 発売日: 2012/01/11
  • メディア: 単行本
  • 購入: 21人 クリック: 325回
  • この商品を含むブログ (36件) を見る
 

 おススメ度:3

おもしろいっちゃ面白いけど自分に落とし込むのはむずいのと、体系的にまっとまってる気がしなくて読みづらかったね。

 

論点思考

論点思考

 

 おススメ度:4

超有名な本。

まずは何を解決するかの課題設定するのがビジネスで一番大事だもんね。って本

それがむずいんだなぁw

って感じなので読んだ。この前の仮説思考ってほうよんでるけどそっちのほうがおもしろいかも

 

 おススメ度:5

これは良書。酒がわかる。ただしウイスキーは少ないので、ウイスキー好きの僕には物足りないけど、日本酒とワインがちょっとわかるのはすごい今後の人生豊かになりそうw

 

 

 おススメ度:3

ヒントにはなる。けどコンマはまだまだ発展途上の分野だなぁと感じる

 

サラバ! 上

サラバ! 上

 

 

サラバ! 下

サラバ! 下

 

 

 おススメ度:4

名小説 上下巻 又吉も絶賛したという作品。小説はいいね。新しい世界に連れてってくれるからさ。

 

読んでいる本

 

仮説思考 BCG流 問題発見・解決の発想法

仮説思考 BCG流 問題発見・解決の発想法

 

 超良い。

 

発想する会社! ― 世界最高のデザイン・ファームIDEOに学ぶイノベーションの技法

発想する会社! ― 世界最高のデザイン・ファームIDEOに学ぶイノベーションの技法

 

 おもろいんだけどなぜか眠くなりがち

 

来月はPython頑張れるようにしよう。