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

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

******

ニューロンが「オン」または「オフ」,これはあなたに何を思い出させますか?あなたが「デジタルコンピュータ」と言ったなら、あなたは正しいでしょう!具体的には、ニューロンは、はい/いいえ、真/偽、0/1タイプの問題に対する完全なモデルです。これを「バイナリ分類」と呼び、機械学習のアナロジーは「ロジスティック回帰」アルゴリズムとなります。それはあなたが他のニューロンの出力または他の何らかの入力信号(すなわちあなたの目の視覚受容体またはあなたの指先の機械的受容体)として想像することができる入力x1、x2、およびx3として受け取り、そしてこの出力ニューロンに対するこれらの入力ニューロンの強度によって重み付けされた、これらの入力の組み合わせ。実際には実際の数と式を扱う必要があるので、xからyを計算する方法を見てみましょう。

 y = sigmoid(w1 * x1 + w2 * x2 + w3 * x3)
この項では、バイアス項は無視されます。これは、次の次元に常に等しい次の次元x0を追加することによって簡単に与えられるためです。 各入力ニューロンは、対応する重み(シナプス強度)で乗算され、他のすべてのニューロンに追加されます。次に、その上に「シグモイド」関数を適用して、出力yを求めます。シグモイドは次のように定義されます。
sigmoid(x)= 1 /(1 + exp(-x))
シグモイドの出力は常に0から1の間であることがわかります。2つの漸近線があるため、入力が+∞の場合、出力は正確に1になり、入力が -∞の場合、出力は正確に0になります。入力が0の場合、出力は0.5です。出力は確率として解釈できます。特に、それを確率として解釈します。
P(Y = 1 | X)
これは、「YがXに対して1になる確率」と読むことができます。私たちは通常これと「y」それ自身を交換可能に使うだけです。どちらもニューロンの「出力」です。ロジスティック回帰(ニューロン)はこの記事の前提条件なので、覚えておいてください。あなたはすでにこれらすべてに精通していると思います。ニューラルネットワークを得るためには、単純にニューロンを結合します。我々が人工ニューラルネットワークでこれを行う方法は非常に具体的です。フィードフォワード方式でそれらを接続します。 その入力は(x 1、x 2)であり、その出力はz 1です。我々はzの層を「隠れ層」と呼ぶ。ニューラルネットワークには1つ以上の隠れ層があります。より隠れた層を持つニューラルネットワークは「より深い」と呼ばれるでしょう。 「ディープラーニング」はちょっとした流行語です。私はこの話題についてグーグルで話しました、そして一般的なコンセンサスは1つ以上の隠れ層を持つニューラルネットワークは「深い」と考えられるということです。

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

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

******

*前提条件を読んでください
ディープラーニングには大学レベルの計算と線形代数が必要であることに多くの人が驚きます。 はい、「数学」と言って、足し算と引き算を意味するのではありません。まずは無料の計算式MOOCを見つけ、完了したら戻ってきてください。明確にするために、この記事はあなたがすでにロジスティック回帰を知っていることと、それをNumpyとPythonを使ってコーディングする方法を知っていることを前提としています。繰り返しますが、これに対する反応は「なぜ本にロジスティック回帰を含めなかったのでしょうか」ということです。よくあることですが、線形回帰はロジスティック回帰の前提条件です。明らかに、この質問に終わりはありません。この記事ではPythonのforループとifステートメントについては説明しません。それらについて知らないからといってよいでしょう。
*練習が必要です
あまりにも説得力があるように聞こえないようにしてください、しかし、あなたがいくら読んでも、あなたは練習なしでは良くなりません。コードを何も書かずにいくつかのコースビデオを見た後、人々はなぜ彼らが専門家ではないのか疑問に思います。あなたはYouTubeを見ることから戦う方法を学びますか?もちろん違います!あなたはけがをすることになります。オンラインでボディビルディングのテクニックについて読むことはあなたの体格を向上させるのですか?もちろん違います!あなたは実際にジムに行く必要があります。あなたの数学の先生があなたに同じ問題についての何百ものバリエーションを割り当てていた理由があります。それは練習が完璧になるからです。すべてを読んだだけでは、ディープラーニングについて話し合ったときに自分が話していることを知っているように思えるかもしれませんが、端末で数時間だけで直感が教えられます。
ニューラルネットワークとは
歴史のある時点で、コンピュータ科学者がコンピュータコードで脳をモデル化しようとしていたので、ニューラルネットワークはそのように呼ばれます。最終的な目標は、「人工の一般的な情報」を作成することです。これは、私にとっては、あなたや私が学ぶことができるすべてを学ぶことができるプログラムを意味します。私たちはまだそこにいないので、人類を引き継ぐ機械について怖がる必要はありません。
現在、ニューラルネットワークは、画像や音声の分類などの特異なタスクを実行するのに非常に優れています。脳とは異なり、これらの人工ニューラルネットワークは非常に厳密な定義済み構造を持っています。脳は、電気的および化学的な信号を介して互いに交信するニューロンで構成されています(したがって、ニューラルネットワークという用語)。人工ニューラルネットワークではこれら2種類の信号を区別していないので、これからは「a」信号があるニューロンから別のニューロンに渡されていると言います。シグナルは、「活動電位」と呼ばれるものを介して、あるニューロンから別のニューロンに渡されます。それはニューロンの細胞膜に沿った電気の急上昇です。活動電位についての興味深いことは、それらが起こるか、またはしないかのどちらかです。 「間に」はありません。これは「全か無か」の原則と呼ばれます。ニューロン間のこれらの関係には長所があります。カナダの神経心理学者Donald Hebbに起因する「一緒に発火するニューロン、一緒につながるニューロン」というフレーズを聞いたことがあるかもしれません。強い関連性を持つニューロンは互いに「オン」になります。したがって、あるニューロンが別のニューロンに信号(活動電位)を送り、それらの結合が強い場合、次のニューロンも活動電位を持ち、他のニューロンに引き継がれる可能性があります。 1つのニューロンが別のニューロンに信号を送信すると、2番目のニューロンの電位がわずかに上昇する可能性がありますが、別の活動電位を発生させるのに十分ではありません。したがって、ニューロンが「オン」または「オフ」であると考えることができます。 (すなわち、それは行動の可能性を持っている、またはそれはしません)

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

これから数回にわたって深層学習についての記事を書きます.ひとまとめに長文としたものを数回に分けて紹介していきます.初学者向けです,何かの参考になれば.

******

昨今の技術トレンドにおいて,深層学習はますます注目を集める存在になっています.2016年3月において、GoogleのAlghaGoプログラムは、中国のボードゲームGoのゲームで、9段のプロGoプレーヤーLee Sedolに勝ったばかりです。人工知能の分野の専門家は、私たちはトップのプロGoプレーヤーに対して10年もの間、勝利を達成することができなかったと考えました、しかし進歩は加速したようです!ディープラーニングは複雑な科目ですが、他のどの機械学習アルゴリズムよりも習得が難しくありません。この記事は、ニューラルネットワークの基本を紹介するために作成しました。学部レベルの数学とプログラミングのスキルを習得できます。数値計算ライブラリNumpyと共にPythonプログラミング言語を使用します。また、後の章で、TheanoとTensorFlowを使ってディープネットワークを構築する方法も示します。これらは、ディープラーニング専用に構築されたライブラリで、GPUを利用することで計算を高速化できます。他の機械学習アルゴリズムとは異なり、ディープラーニングは自動的に機能を学習するため、特に強力です。つまり、「カーネル」や「相互作用効果」を考え出してテストするために時間を費やす必要はありません。これらは統計学者だけがやりたいことです。代わりに、ニューラルネットワークにこれらのことを学習させます。ニューラルネットワークの各層は、前の層とは異なる抽象概念を学習します。例えば、画像分類では、最初の層は異なるストロークを学習し、次の層では形状を学習するためにストロークをまとめ、次の層では顔の特徴を形成するために形状をまとめます。
*ディープラーニングについて学ぶ方法
ディープラーニングが非常に人気を博しているので、あらゆる種類のバックグラウンドからの人々がそれについて学ぶようになったのを見ました。私が気づいたことの一つは、群衆が大きくなるにつれて、ディープラーニングに対して間違ったアプローチをとるだけでなく、一般的に学習に対して間違ったアプローチをとる人々の数もまた増えているということです。この章は、人々が罠にかけられるのを見たすべての落とし穴と、それらを避ける方法です。
*あせらずゆっくり
ディープラーニングに関するすべてが太陽の下にあるわけではありません。人々は、彼らがこの記事の内容を拾い上げて、彼らの最初の試みでLSTMについて学ぶつもりであると思います。この記事では、自走車を動かすことができる、分散GPUベースの100層ニューラルネットワークの運用方法を紹介する予定です。 Amazonの製品の説明を読み、自分で考えたならば、この短い記事を読んで、「私は私自身のたたみ込みニューラルネットワークを書くことができる!」と思うかもしれませんが、それは絶対にありません。あなたがディープラーニングに慣れていなくて、すぐにLSTMや畳み込みニューラルネットワークについて学ぶことになると思うなら、あなたはとても間違っています。ディープラーニングについて学ぶには10倍してください。あなたはこの記事がディープラーニングについてではないと誤って考えています。なぜならそれは畳み込みニューラルネットワークやリカレントニューラルネットワークをカバーしていないからです。より高度なニューラルネットワークについて学ぶには、まず基本的なニューラルネットワークとそれに関連するアルゴリズムを理解する必要があります。それがこの記事で学ぶことです。ええ、それは多くの時間がかかるでしょう。これが簡単なプロセスであると仮定したならば、それは誰の間違いではなくあなたの間違いではありません。ステップ1を完了しないと、ステップ10に進むことができません。
*あなたは数学を必要としています
人々は時々「なぜあなたは私たちにディープラーニングのためのAPIを与えられなかったのですか?」のようなことを言います。ディープラーニングの背後にある数学とアルゴリズムは、それを面白くて強力にするものです。 「数学なし」が目的のルートである場合は、おそらくランダムフォレストのような単純な機械学習アルゴリズムのほうが、パフォーマンスと精度が向上します。
*最後に
用語を理解していることを確認してください。誤ってディープラーニング=コンネットとリカレントネット、そしてGoogleが何をしていると考えてはいけません。古典的なフィードフォワードニューラルネットワークのテクニックは「ディープラーニング」の傘下にあり、ニュースで読む今日の人気のあるディープラーニングのテクニックについて学びたいのであれば、それらは理解することが絶対に不可欠です。後で学ぶこと(オートエンコーダ、畳み込みネット、リカレントネットなど)のすべては、この記事の内容によって異なります。