深層学習ことはじめ その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つ以上の隠れ層を持つニューラルネットワークは「深い」と考えられるということです。

エッジ検出アルゴリズムStructuredForestsの適用

RandomForestsによるエッジ検出アルゴリズムStructuredForestsの適用方法です.Gitからコード一式を落としてくるところまではOK,それ以降のデータセットの入手と環境構築で詰まったので解決のメモを残します.

*****

環境
  • ubuntu 16.04LTS
  • python2.7系のvirtualenv環境を作成済み
手順
  • cd StructuredForests
  • vim StructuredForests.py
    • コード末尾の”toy”とある箇所(2か所)を”BSR”に変更
    • n_pos, n_negのデフォルト値10000をそれぞれ500000にする.
  • pip install tables opencv-python scipy scikit-image scikit-learn cython
  • mv model model.old #学習済みモデルを退避
  • git clone https://github.com/BIDS/BSDS500 #BSDS500の公式サイトが不調でダウンロードできない.githubに複製してくれている神リポジトリから取得する.
  • mv BSDS500 BSR
  • python StructuredForests.py
結果確認

edgeフォルダにエッジ抽出結果が保存されている.

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

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

******

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

celebAデータセットのダウンロード

celebAの公式ダウンロードサイト(http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)からデータをダウンロードできない.Dropboxの通信料制限が問題になっている模様.
そこでgithubにUpされている別リポジトリのコードを使って,celebAのダウンロードを行う.

@Ubuntu16
apt-get install git
sudo pip install requests
git clone https://github.com/carpedm20/DCGAN-tensorflow
cd DCGAN-tensorflow
python download.sh celebA

⇒ data/img_align_celeba.zip にcelebAが保存される.

============================

As of 2018 / Nov. / 11, data can not be downloaded from the official download site of celebA (http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html).
It seems that Dropbox’s communication fee restriction is becoming a problem.
There, download celebA using the code of another repository uploaded to github.

@ Ubuntu 16
apt-get install git
sudo pip install requests
git clone https://github.com/carpedm20/DCGAN-tensorflow
cd DCGAN-tensorflow
python download.sh celebA

celebA is saved in data/img_align_celeba.zip.