深層学習ことはじめ その13

これから数回にわたって深層学習についての記事を書きます.ひとまとめに長文としたものを数回に分けて紹介していきます.初学者向けです,何かの参考になれば.前回の記事を読んでいない方は先にそちらを見てください.

******

You know more than you think you know

デジタルフォーマットについての素晴らしいところは、望むように頻繁にこの記事を更新できることです。この記事は、最新の優れた研究ではなく、基本を説明するために作成されたものです。率直に言って、そのようなものを理解することはあなたに何ヶ月もあるいはおそらく何年もの努力を要するでしょう。基本がなければ、とにかく意味があるわけではありません。さて、あなたはこの記事を読んで、「ちょっと待って – ロジスティック回帰を積み重ねてから勾配降下を行う方法だけを教えた」と考えたかもしれません。これはロジスティック回帰の実行からすでにわかっているアルゴリズムです。これの本当の美しさ。教師としての私の仕事は、学生としてあなたにとって物事が簡単に見えるようにすることです。すべてが単純すぎると思えば、私は仕事を終えました。補足として、私は彼らが何かを懸命に学ぶ必要があるように感じさせるのは人のエゴだと思います。あなたのエゴがあなたの学習の邪魔にならないようにしてください。さて、最後の章はあなたが知らないことをあなたに見せることに基づいていましたが、この章はあなたがあなたが知っていることをあなたに見せることに専念しています。ロジスティック回帰まず、ロジスティック回帰に戻りましょう。教師付き機械学習モデルはすべて同じAPIを持っていることを忘れないでください。 (X、Y)を訓練し、(X)を予測するロジスティック回帰の場合、これは簡単です。予測は次のとおりです。
y = s(Wx)

トレーニングも同様に簡単です。コストの導関数を取り、その方向に進みます。
W = W – a * dJ / dW
それでは、ニューラルネットワークを見てみましょう。予測はほぼ同じですが、追加のステップが1つあります。
y = s(W1s(W2x))
以前と同じこと導関数を取り、その方向に移動します。
Wi = Wi – a * dJ / dWi
ニューラルネットワークは任意の深さにすることができるので、W1、W2、W3などを使用できます。畳み込みニューラルネットワークはどうですか?ここでも予測は、単に1つの新しいステップを追加するだけです。
y = s(W1s(W2 * x))
*演算子は畳み込みを意味します。これは信号処理や線形システムなどのコースで学びます。

CNNをどのように訓練するのですか?実は以前と同じです。導関数を取り、その方向に動かしてください。
Wi = Wi – a * dJ / dWi
うまくいけば、ここにパターンが見えています。リカレントニューラルネットワークはどうですか?畳み込みネットを使って1つ新しいことを紹介したのと同じように、ここで1つ新しいことを紹介します。特に、最初の計算(隠れユニットの状態)が最後の値に依存するように、2つの計算を分割します。予測は次のようになります。
h(t)= s(Wxx(t)+ Whh(t-1))y(t)= s(Woh(t))
これらを訓練する方法は、コスト、そしてその方向に動くなら、あなたは正しいでしょう!
Wi = Wi – a * dJ / dWi

さて、TheanoやTensorFlowのような自動微分が可能なツールを使えば、心配することが1つ少なくなります。
W = W – learning_rate * T.grad(cost、W)
実際、ほんの一握りのニューラルネットワークアーキテクチャが「バブルアップ」した唯一の理由はここにあります。上に移動するのは、彼らがうまく行ったからです。しかし、ベンチマークデータセットのパフォーマンスが良いからといって、有能なディープラーニング研究者になることはできません。研究者が単に新しいアイデアを試みているところで多くの論文が発表されています。それらは最先端技術と比較して優れた性能を持っていないかもしれませんが、彼らは同等の性能を発揮するかもしれません、それはまだ面白いです。成功か失敗かに関わらず、すべての研究が私たちを今日の状況に導きました。人々がニューラルネットワークを何十年もあきらめたことを忘れないでください。これは創造性とより大きく考えることについての詳細です。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です