読者です 読者をやめる 読者になる 読者になる

paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

初心者でも今すぐ機械学習・ディープラーニングの勉強を始められるスライド11

f:id:paiza:20161130170319j:plain
Photo by PROTim Regan
こんにちは。谷口です。

最近「人工知能」や「機械学習」に関する話をよく耳にします。実際に機械学習の勉強をしている人や、機械学習に関連した研究開発の求人を探す人も増えてきたなーと感じます。弊社のITエンジニアにも機械学習を勉強中という人がいますが、特に最初の頃は難しすぎて何から手を付けたらいいのかよく分からず、とても悩んだと言っていました。

というわけで今回は

という方々のために、機械学習を勉強している弊社のエンジニアに、機械学習に入門した頃に役立ったスライドを聞いてきたのでご紹介します。

機械学習ディープラーニング

ときどき機械学習ディープラーニングを混同している人がいますが、あくまでもディープラーニング機械学習の手法の一つです。

機械学習とは、コンピューターが与えられたデータからアルゴリズムや特徴などを反復的に学び、学習したことからデータの特徴やパターンを見つけ出すという技術の分野全体のことを指します。

ディープラーニング機械学習の手法の一つで、ニューラルネットワークという人間の脳の神経回路を元にした手法がベースになっており、アルゴリズムとしては、脳の神経細胞を模したパーセプトロンが三層以上重なって組み合わさっています。(この辺のアルゴリズムを理解しようと思ったらまず前身となっているニューラルネットワークから学ぶ必要があります)すごく簡単に言うと、データの特徴をさまざまな方面や段階から学び、勝手に深く理解してくれるという機械学習の手法で、複雑な特徴を理解しないとできない画像の判別処理等に向いています

例えば、ディープラーニング以前の機械学習であれば、「眼鏡」の画像を判別させるとなると、単に色や形、顔の目の上にあるといった情報から判別していたので、眼鏡っぽいけど眼鏡じゃないものまで「眼鏡」として判別されていたとして、ディープラーニングだともっと細かい情報を元に判別するのでより精度が高くなる傾向にある(※絶対ではない)ということです。

ディープラーニング以前の機械学習サポートベクターマシンを使用したもの)と、ディープラーニングの分類結果で面白いスライドがあります。(※サポートベクターマシン:教師あり学習を用いるパターン認識モデルの一つ)

以下は2つとも二次元の眼鏡っ娘の画像を分類するシステムを構築したスライドですが、サポートベクターマシンの前者が64%ディープラーニングの後者が91~95%となっています。

◆TensorFlowで 趣味の画像収集サーバーを作る 4月号(P11~「好みの眼鏡っ娘画像を自動で収集したい」)

speakerdeck.com


ちなみに機械学習初心者のエンジニアの方が機械学習やその手法を体型的に学ぶ場合、下記の書籍がかなりおすすめです。コードはC言語で書いてありますが、if文・for文ができれば理解できます

機械学習と深層学習 ―C言語によるシミュレーション―

機械学習と深層学習 ―C言語によるシミュレーション―

機械学習と深層学習 ―C言語によるシミュレーション―


あと、少し前に話題になったので見たことある方もいるかもしれませんが、このブラウザ上に可視化されたニューラルネットワークのデモが面白いです。

◆A Neural Network Playground

playground.tensorflow.org

左側でデータを作って、真ん中の「hidden layer」で隠れ層を増やして、右側のOUTPUTで結果を見ることができます。自分で触れて楽しい。

■初級~中級者程度の人が、機械学習について学べるスライド

機械学習に関して

機械学習チュートリアル

www.slideshare.net
実は機械学習って何なのか全然わからない」という段階の人向け。数式とか出てきません。機械学習って何なの?何がいいの?どんなことが得意&不得意なの?といったところから始まるので本当に入門者の人に。

機械学習によるデータ分析まわりのお話

www.slideshare.net
機械学習でデータ分析をしてみたい人向け。統計とかアルゴリズムとかツールの話は出てきません。データの前処理(ダミー変数とか欠損値とか正規化とか)や混同行列などデータ分析の際に知っておきたい基礎知識が詰まってます。

◇ソフトウェアエンジニアのための「機械学習理論」入門

www.slideshare.net
ビジネスにおけるデータサイエンスの役割などの例がわかりやすいです。すごくもりだくさんですが、データサイエンス入門・回帰分析・線形判別法・教師なし学習に分かれているので、知りたいところだけ見ても役立ちます。

ディープラーニングに関して

◇Deep learning

www.slideshare.net
ディープラーニングがどういうものか全体的にさっと知りたい人向け。

◇Deep Learningと画像認識 ~歴史・理論・実践~

www.slideshare.net
ディープラーニングがすごいのはわかったけど中で何がどうなってるか理解したいよ!みっちり全部知りたいよ!という人向け。みっちり長いですがわかりやすくまとめられてます。

機械学習に適したライブラリごとのチュートリアル的なスライド

Pythonには機械学習のためにデータを処理するライブラリ(数値演算をするためのライブラリや図を作成するためのライブラリなど……)がそろっていて、呼び出したり組み合わせて処理したり……といったことがしやすいため、多くの人が機械学習Pythonを使っています。このライブラリを使い始めるのに役立ちそうなスライドをご紹介します。

scikit-learn

www.slideshare.net
scikit-learnは分類や回帰、クラスタリングなどの機能が実装されており、機械学習における定番ライブラリの一つです。

TensorFlow

www.slideshare.net
TensorFlowは、2015年11月にオープンソース化されたGoogle機械学習ライブラリです。

Chainer

www.slideshare.net
chainerはニューラルネットワークを実装するためのライブラリです。日本人の方が中心となって開発されています。

Theano
  • Pythonとdeep learningで手書き文字認識

www.slideshare.net
Theanoはディープラーニングライブラリの決定版?と言われております。行列演算などを行う関数が実装されています。

■まとめ

機械学習はハードルが高いと思われがちですが、チュートリアル的な感じで試しに手を動かしてみるとイメージも掴みやすいと思います。特にPythonR言語には便利なライブラリが多く無料で提供されていますので、実装にもチャレンジしやすいかと思います。

「何を作ったらいいかわからん…」という人は、楽しそうなシステムを作っている人たちがたくさん記事を公開しているので参考になると思います。

bohemia.hatenablog.com

hakobe932.hatenablog.com

今後も商業的なサービスや研究・分析にはますます機械学習が使われ、必要不可欠な技術となっていくでしょう。現時点では想像もつかないようなすごいサービスが生まれることを期待しています。興味のわいた方はぜひ学んでみてください。

paiza動画ラーニングについて

f:id:paiza:20160307113923p:plain
paizaには、オンラインでプログラミング学習ができるパイザ・ラーニングという無料学習コンテンツがございます!現在、機械学習でよく使われているPythonはもちろん、JavaPHPRubyの入門編を学ぶことができますが、対応言語は今後もどんどん追加される予定となっています。

プログラミング未経験の方でも、「やさしく・楽しく・わかりやすい1本約3分のレッスン動画」 や 「ブラウザ上でコードを書いて実行できるオンライン実行環境」「複数の練習問題」で、未経験者でも無理なく学習を続けることができます。




paizaではITエンジニアとしてのスキルレベル測定や、動画によるプログラミング学習コンテンツ(paiza Learning)を提供しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編