しんさんのブログ

科学や技術のこと読書のことなど

Courseraでヒントン先生の"Neural Networks for Machine Learning" 2週目

1週目はイントロということで、課題も無難にこなし2週目も受講し終わりました。

2週目はざっと以下のような内容でした。

ネットワークの種類の説明
feed forward network
recurrent network
symmetrically connected networks
以上3つの種類のネットワークの解説

パーセプトロンの解説
歴史的経緯からパーセプトロンを解説

パーセプトロンの幾何的な概念
weight spaceの話
急にweight spaceの話が出てきて、初め何を言っているのかわかりづらい
線形分離していることを説明しているようだ

パーセプトロンでなぜ学習できるか
input vector とweightをかけてうまく領域分けできますというのを原理的に解説した。
feasible regionをとれば領域分けは収束するよという話のようだ

パーセプトロンで何ができないのか
いわゆるxorがパーセプトロンで表現できないよという話
パーセプトロンは線形分離可能な問題しか扱えないという制限がある

結構むつかしいことをサラッと説明してしまうので、この講義だけだと完全理解は難しいかもしれません。

課題は、複数選択があるので選択式といっても案外難しいです。

教師あり学習と教師なし学習のイメージ

教師というからには、学校をイメージしてみましょう。
教師あり学習と教師なし学習で、生徒を小集団に分類することを考えます。

教師あり学習

全校生徒を運動場に集めて、一人一人に教師があなたは1組、あなたは2組という風に伝えます。
その後任意の生徒に教室に入ってといえば、その生徒は自分の教室に入ります。これが教師あり学習。まさに教師がいるから自分のクラスがどこかを学習したということです。

教師なし学習

教師なし学習は、例えば運動場に集まった生徒たちを、お互い話し合って同じ趣味の人同士集まってくださいというようなもの。
結果としていくつかの集団はできますが、どのような集団にわかれるべきかという教師は居なくて、単に同じ趣味の人同士集まるという基準だけで集団をいくつかの小集団に分類できました。
これが教師なし学習のイメージです。

強化学習

強化学習を学校の生徒に例えると、新入生が昼休みにたむろする場所が、入学してからしばらくすると固定してくるというようなものです。
生徒一人一人が初めは昼休みにいろんな場所に出没しますが、図書館が居心地のいい人、運動場で遊ぶ人、校舎裏でゲームする人、屋上で昼寝する人、教室でおしゃべりする人など人それぞれ居心地の良さ(報酬)に応じて滞在場所が決まってきます。そして結果として場所ごとの生徒の小集団(クラスター)に分けられる、これが強化学習のイメージです。

かなり強引な例えですが、いかがだったでしょうか。

Courseraでヒントン先生の"Neural Networks for Machine Learning"を受講しはじめました

今日から始まったようですので、早速1週目を聞きました。
最初の週なので、機械学習ディープラーニングの概要やOctaveのインストール作業など軽めの内容でした。
英語が私には聞き取りにくくスライドを読みながら理解する状態です。
Ng先生のMachine learningの講義は、修了できたのですが今回も無事最後までたどり着けるでしょうか。
Ng先生の時にOctaveの開発・実行環境は整えてあるのでそれはそのまま使用できそうです。
今回は日本語字幕はありませんので、英語も頑張って聞きましょう。
ちなみに、機械学習ニューラルネットワークの基礎知識なしでも理解できないことはないとは思いますが、簡単な解説書1冊くらいは読んでから学習した方がより理解が深まると思います。


1週目は主にニューラルネットワークについての解説でした。
脳のニューラルネットワークの仕組みや特徴から、それを計算機上でどのように実装していくかの大まかな解説となぜニューロンを使うのかの説明がありました。
最後には、非常に簡単にですが、教師あり学習、教師なし学習、強化学習についての簡単な解説もあります。
Ng先生のMachine learningは、機械学習を入り口としていましたのでまずは線形分離やフィッテイングの話から入っていきましたが、Hinton先生の講義はいきなりニューロンの話からとアプローチが違います。
両方の講義を受ければ、オーソドックスな機械学習の基礎もニューラルネットワークの基礎も学ぶことができます。
実際、Ng先生の機械学習の講義は私の基礎知識としてものすごく役に立っています。

%matplotlib inlineについて

最近、jupyter notebookを使い始めた人から質問を受け、僕も前にはまったことがあるのでメモを残します。
jupyter notebookでノート上にグラフを書こうと思い例えば、

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.1)
y = np.arctan(x)
plt.plot(x, y)

のように書くと、グラフが表示されません。
コード自体は間違っていないので、理由が分からずはまってしまうことがあるようです。
これを解決するには、先頭で、

%matplotlib inline

を1行書けば解決します。
他にも起動時に

jupyter notebook --matplotlib inline

とする方法でもOKです。
以下のブログに、説明があります
yagays.github.io

「人工知能入門」 小高知宏/著 を読みました

人工知能入門

人工知能入門

人工知能全般について、浅く広く知るための本です。
ディープラーニング機械学習の特定のアルゴリズムについて知りたいとか、機械学習の理論的な側面について知りたいと言った人向けの本ではありません。
それよりは、いったい人工知能ってどんなもので、何を目的に研究・開発されているのかを知りたいという欲求にこたえてくれる本です。
各章末に演習問題が載っていたりするのでおそらく著者が大学の講義で利用しているのではないかと思われます。

人工知能とは何かから、その歴史、そして機械学習とは何かニューラルネットとはどういうものなのかを数式をほとんど使わないで完結に説明しています。
なぜかQ-Networkの説明というちょっとそれは他のバランスから考えて難しい内容じゃないかと思うような記述もありますが、全般的には理系でない人でも、人工知能につて知りたいと思う方なら、短時間で読めてしまえます。
本の雰囲気がいかにも教科書って感じなので、ちょっと見た目はとっつきにくく感じますが読んでみると、あ、簡単に読めてしまったとなりました。

Sublime3 で日本語ファイル名が文字化けする

4Kディスプレーを最近導入しました。
その際に、Windowsで文字の大きさを、
コントロール パネル\デスクトップのカスタマイズ\ディスプレイ
で変更しました。
カスタムで180%にしたのですが、この変更を加えるとsublime3のサイドメニューやタブの日本語表記が文字化けしてしまうようです。
いわゆる豆腐になってしまいます。

対処方法は、

Preferences.sublime-settings に
"dpi_scale": 1.0,
を1行加えればOKです。
ただし、文字フォントは100%サイズですので、小さくなります。

この情報は以下のサイトに載っていました。
wist.hateblo.jp

「人工知能は人間を超えるか ディープラーニングの先にあるもの」を読みました

マスコミでも積極的に人工知能について解説しておられる東大の松尾先生による人工知能ディープラーニングにつていの解説書です。
技術書ではないので、専門家でない方も十分楽しんで読めますし、深層学習や人工知能ってなんだかわからないけど人類の脅威になるの?といった疑問や不安をお持ちの方は本書を読んで安心できるのではないかと思います。
人工知能は人の職業を奪うとか、将来人間をはるかに超える人工知能ができて人類の危機が訪れるというセンセーショナルな言説が飛び交っていますが、そういう議論にたいして人工知能を専門に研究する著者だからこその冷静で、事実に基づく論理的な解説が展開されていて読んでいて好感を持てます。
SFまがいの解説書が多い中、本書は数少ない頼りになる解説書であると思います。
学生、エンジニア、社会人、人工知能機械学習ディープラーニングに興味のあるすべての人にお勧めです。
読めば、ディープラーニングってそういうことだったのかと非常にクリアに理解できます。