HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

機械学習・深層学習Q&A

 

 

follow us in feedly

f:id:s0sem0y:20170417014226p:plain

もうこれだけは絶対に把握しておいてください!

 

ってものだけ。

 

学問周り

Q:機械学習ってなんですか?

既知のデータから規則性を見出す手法を研究する人工知能の一分野です。

モデルを仮定し、そのモデルを既知のデータに上手く当てはめることを学習と言います。

 

Q:統計学との違いはなんですか?

モデルを仮定し、そのモデルを既知のデータに上手く当てはめることを推定と言います。

ここまでは基本的に機械学習と統計学は同じだと思っていいです。推定とか学習の呼び方が違うくらい。

 

大きな違いは機械学習は学習したモデルを使って未知のデータに対する予測をすることが大きなモチベーションになっているということです。統計学は推定したモデルが本当に真っ当なものであるかを考察(検定とか言う)し、出来上がったモデルでデータを説明しようとすることが大きなモチベーションになります。

 

このモチベーションの違いから、統計学では比較的解釈しやすい単純なモデルを用いることが多いのに対して、機械学習では何がなんでも予測しようとするため、モデルが複雑になるケースが多いです。

 

まあそれは結果的な違いであって、やっている事自体は本質的には似たようなものです。

 

Q:深層学習ってなんですか?

従来は難しかった多層のニューラルネットワークを用いる機械学習の一分野です。

 

ニューラルネットワークは複雑なモデルであるため、モデルに対する解釈は困難になる一方で、高い予測性能を持つポテンシャルを秘めています。深層学習の分野では主に、ニューラルネットワークを上手く学習させる方法や、ニューラルネットワークの新たな形について研究が行われています。

 

「特徴量を自分で持ってくることができる」とか、似たような概念ですが「End to Endでタスクを扱える」だとかは、構成したニューラルネットワークが結果的にそういうふうになっただけの話で、ディープラーニングの定義ではありません。

 

簡単なタスクなら生データをSVMにぶち込んで出来ましたということだってあり得ますし、難しいタスクなら、ニューラルネットワークに入れるデータを人間がかなり頑張って成形しなければいけない場合もあります。

 

ただ、「バックプロパゲーション」という学習方針のおかげで、「とりあえずつなげる」という事ができるだけの話です。

 

 

 

手法周り

Q:ニューラルネットワークってなんですか?

f:id:s0sem0y:20170308054318p:plain

1つ目の回答は、「機械学習で用いられるモデルの1つ」です。脳の神経(ニューロン)の活動を参考に作られたため「人工ニューラルネットワーク」と呼ばれますが、大抵、「人工」は省略されます。

 

2つ目の回答は、「脳の神経回路をシミュレーションするためのモデル」になります。脳の神経活動を参考にしているわけですから、正しくニューラルネットワークが神経活動を再現できれば、逆に実際に脳を使ってできないような実験をシミュレーションできることになります。実情は脳の神経活動を完全に数理的に再現すること自体が難しいという状況です。

 

 

機械学習で用いられるモデルとしての人工ニューラルネットワークに、本物の脳活動の働きを取り入れていこうという活動もあります。脳が知的なのだから、再現すればするほど、人工ニューラルネットワークも知的に振る舞えるという発想です。

 

近年の開発されているディープラーニングの技術は主に、「人工ニューラルネットワーク」のことであって、線形変換と非線形変換を組み合わせた機械学習のモデルと思って構わないでしょう。

 

Q:サポートベクターマシンってなんですか?

「機械学習で用いられるモデルの1つ」です。データを分類するとき、分類の境界が、データからなるべく離れた場所に設置されるべきであるという発想に基づいて作られたモデルです。

 

f:id:s0sem0y:20160808042726p:plain

 

境界とデータとの距離を「マージン」と呼び、これをなるべく大きくしようという発想を持っているため「最大マージン分類器」という別名を持ちます(図は左も上手く分類しているが、右の方が境界とデータの距離が遠い)。

 

 

Q:カーネル法とは?

一斉を風靡した「モデルに非線形性を導入するエレガントな手法」です。

機械学習の多くのモデルは、まず直線で分類したり回帰したりできるように考案されます。複雑なデータに対して直線では非力である場合、非線形性を導入する必要があります。

 

カーネル法はモデルに陽に非線形変換を組み込むことなく、非線形性を有したことにできる素晴らしい手法です。カーネル法を利用する際に意識することはありませんが、事実上「無限次元空間でデータを取り扱っている」ことにできるため、モデルに非常に高い性能を持たせることが可能です。

 

Q:クラスタリングは何をするもの?

クラスタリングは多数のデータをいくつかの集団に分かれていると仮定し、その集団を見つける手法です。多くの場合、データを可視化したり、大雑把に分けたりする場合に使われます。

 

クラスタリングはデータが「いくつかの集団に分かれていると仮定」としているのですが、「どのように分かれていると考えるか」によって様々な手法が考えられます。代表的なクラスタリング手法に、同じ集団のデータが空間上の近い位置に分布していると考えるK-平均法があります。

 

 

Q:教師なし学習と教師あり学習の違いは?

 

学習とは、データxを入れると何か出力を返す装置y=f(w,x)wを調整することで構築することです。このy=f(w,x)学習をする際に、教師データを必要とする手法を教師あり学習と言い、そうでないものを教師なし学習と言います。

 

例えばx_iを入れた時に装置がy_i = f(w,x_i)という出力をしますが、このy_it_iになるように学習させたい場合は、t_iのことを教師データと呼び、この方針での学習を教師あり学習と呼びます。

 

一方で、教師データt_iを準備しない方法を総じて教師なし学習と呼びます。

 

 

Q:特徴量抽出ってどんな作業ですか?

 

生データから、分類器や回帰器などの学習に用いるデータを選出する作業全般だと思って構いません。

 

例えば主成分分析で次元を落としつつ、有効な成分を集約してしまうなどの手段が取られます。

他にも音声データであれば「周波数」という物理的概念に意味があることが明らかであるため、パワースペクトラムやケプストラムなどが学習データに使えるだろうと予想できます。したがって特徴抽出としてフーリエ変換やウェーブレット変換を用いるケースもあります。

 

 

 

 

 

 

 

 

 

 

何が言いたいのかというと

 

ディープラーニングでも、特徴量抽出をしてからデータを与えます。

 

ディープラーニングは機械学習の一種です。

 

ディープラーニングは魔法ではありません。

 

ディープラーニングは特徴量を自分で獲得する?

このような話を頻繁に目にしますし、実際それが可能になるケースもあります。

 

その要因の多くは、勾配学習の際の勾配計算に「誤差逆伝搬法」を使えるためです。

 

層をどれだけ追加しても、分岐しても、ループ構造さえなければ正しく勾配を計算できる素晴らしく画期的な方法です。これのおかげで、例えば主成分分析で特徴抽出をして、ロジスティック回帰で分類を解いていた場合は、これらはいずれもニューラルネットワークでモデル化ができるため、1つに繋げて学習が出来てしまいます。

 

特徴抽出をしてから学習するのではなく、特徴抽出のモデル自体を内包できてしまうケースがあるのです。そして誤差逆伝搬法によって、同時に学習が可能となります。

 

 

特徴量の獲得を指令しているのは誰?

じゃあ、音声データのパワースペクトラムに対して主成分分析(に限らず非負行列分解でも何でも良い)を行って、ロジスティック回帰でもSVMでも何でも良いから分類をしていたとしましょう。

 

パワースペクトラムをニューラルネットワークにぶち込んで上手く分類が可能なことは何となく想像がつきます。では、音声データからフーリエ変換によってパワースペクトラムを獲得する「特徴量抽出」作業を完全に無視し、音声の生データをニューラルネットにぶち込んで上手く行くでしょうか?行くわけないんすよ。

 

普通、工夫なしには無理なんです。深いニューラルネットワークが特徴量抽出をしてくれるのではなく、特徴量抽出という作業をニューラルネットワークのモデルの構築で補っているんです。

 

ディープラーニングが特徴量抽出をしているのではなく、人間が特徴量抽出が可能になりうるニューラルネットワークを構築して、ディープラーニングしているんです。

 

そうしていないディープラーニングならば特徴量抽出なんて出来ませんし、別にタスクによっては出来る必要だってありません(もともと特徴量がはっきりわかっているなら、学習時間を伸ばしてまで深いニューラルネットに投げるメリット無いですよね)。

 

 

 

 

 

 

 

 

 

 

なんでこの記事書いたのか

 

以下の人たちに最低限把握してほしい

「統計学は最強だぞ!」人間が突然現れた。最近の人工知能は統計学に基づいて、うんぬんかんぬん…(本人は統計のトの字も知らんだろうに、多分下の本を読んだんだと思う。私は読んだこと無いので知らんが)。

 

統計学が最強の学問である

統計学が最強の学問である

 

 

 

ディープラーニングっていう人工知能が凄いらしい勢が現れた。そして、本人も人工知能というか情報技術に明るい姿勢を持っているらしい。そのために基本情報技術者試験を受けるのだとか(その姿勢は素晴らしいんだけど、多分機械学習一ミリも関係ないぞ…)。

 

 

「ディープラーニングは特徴量抽出も全て出来てEnd to Endであることが素晴らしい。他の手法なんて人間があれこれやらなくちゃいけなくて、めんどうだ」勢が居る。

 

わかったふうな口でしゃべるので一番たち悪い。

大抵ハイパーパラメータの調整も含めて、今んとこはディープラーニングのほうがめんどうですわ。そうでもない人は多分既存のディープラーニングで解決策がはっきりしている簡単なタスクをやっているだけ。そして解決策がはっきりしているものならなおさら通常の機械学習の方がめんどくささは少ないです(手法が確立された時には精度はディープラーニングが勝っているだろうから、それを流用すること自体は良いことだけど)。