文系にもわかるニューラルネットワークコンソール入門:「affine」って何?

ちょっと間が空いてしまいました。まみたすです。
今回は久々にニューラルネットワークコンソール記事です!

※素人が素人なりに考察した記事ですので、間違いがあればどんどんご指摘ください

Neural Network Consoleを始めてみて、わたしとsyalakuくんはわりと大きな壁にぶつかっています…。
それはプロジェクトを作ったときのこの画面。


これ・・・

一つも意味がわからない

というわけで、一つずつ調べているところです。
今回は、「Affine」層についてわかったことを解説します!解説というほど解説にはなっていませんがお許しください!

 

Affineって何?

 

まず、上記の図を見てわかるように、機械学習は何度かの処理を経て学習をしてアウトプットしてくれるようです。

この何度かの処理を「層」としてとらえているみたいで、「Input」はデータを読み込む、ということはなんとなくわかります。

(1,28,28)は座標なのでしょうけど、ちょっと省略します。
>座標ではなく、出入力の形式だそうです!(2018/1/17追記)

マニュアル通りにやっていたのですが、Affineってなんだよ、と。

まず読み方がわからないので、私もsyalaku君も「ア…アファ…アッフ…」みたいになってました。

「アフィン」と読むそうです。

これは画像の処理をしてくれる層のことで、読み込んだデータを色々いじるよー!第一弾!みたいな感じです。

 

色々いじるよー!第一弾!で何をするかというと、「アフィン変換」を行います。

「アフィン変換」とは、「読み込んだ全ての画像の均一化を行う」「全ての画像の位置を同じように調節する」といえばなんとなくイメージできるかもしれません。

「アフィン変換とは」と検索すると、こんな感じの解説とかわかりやすい解説がたくさん出るので、本格的に知りたい人は他の記事を参考にしてください。

あくまでも「数式とか絶対無理、蕁麻疹出る、でも機械学習はちょっと興味ある~」みたいな緩い人向けです。(私です)

 

 

文系にもわかるようにアフィン変換を説明すると…

アフィン変換とは、画像で描かれているものが何なのかを判断するために、画像の中の特徴をとらえて、回転させたり拡大したり縮小したりして、何枚かの画像を同じような向きや大きさにすることです。

例えば、猫の顔の画像が何枚かあるとして、猫の顔がちょっと傾いていたり、ちょっと後ろ向きだったり、大きさ(猫の顔以外の余白の大きさ)が全然違ったりするわけです。

それをこねくり回して、同じようなサイズで同じような向きに統一していくのが「アフィン変換」のやっていることです。

画像の特徴をどうやって見分けるかというと、これまた色々細かく見ているそうなのです。

色を2色にしてみたり(二値化)、エッジ加工をして輪郭をはっきりさせてみたりするそうなのですが、あまり詳しいことはわかりません…ので、解説者求む!です!

 

なぜ上の図で2回Affineが登場するのかというと、おそらく特徴を取り出して均一化した画像を、次の「Tanh」の層でまた詳しく解析して、またもう一度「Affine」層でより精度を上げて画像を均一化しているのだと予想されますが、Tanh層が意味わからな過ぎてまだ不明です。

 

要するに

アフィン層は画像をこねくり回して大体おんなじ感じになるようにしています。

 

 

今日はここまで!

 


機械学習の前に、画像処理を勉強しないといけないみたいです。

The following two tabs change content below.
まみたす

まみたす

1992年生まれ。知識ゼロ文系女子からSEになっているところ。 カメラ、猫、お酒、旅行がすきです。
この記事の内容が役に立ったと思ったら、SNSで記事を共有してもらえると幸いです。

3 thoughts on “文系にもわかるニューラルネットワークコンソール入門:「affine」って何?”

  1. >(1,28,28)は座標なのでしょうけど、ちょっと省略します。
    入出力の形状です。座標ではありません。

    > アフィン変換の認識
    概ね全て間違っています。確かに、アフィン変換によって画像を拡縮、回転、平行移動を行うこともできます。しかしそれは一般的な画像処理の話であって、機械学習においては関係ありません。というかアフィン層ということ自体少ないです。アフィン変換で間違いではないですが、このように一般的な画像処理のアフィン変換の利用とこんがらがるので多くの人はわざわざアフィン層とは言いません。

    > Tanh層
    Tanhという非線形活性化関数を適用するだけです。解析も何もしません。

  2. コメントありがとうございます!
    解説ありがたいです・・・!
    ちなみにこの記事は4と9の画像をインポートして、どれが4でどれが9か判別するサンプルを試した時のものです。

    >出入力の形式
    そうなのですね!訂正します。

    >しかしそれは一般的な画像処理の話であって、機械学習においては関係ありません

    画像処理専門でやっていた方から話を聞いていたので、ちょっと切り分けができていなかったかもしれませんね。
    では、このNeural Network Consoleにおけるaffineは一体なんの働きをしているのでしょうか?

    >非線形活性化関数を適用
    ここで詰まって勉強が全く進んでいません。。。
    ここの解説も欲しいです…!

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)