畳み込みニューラルネットワーク(CNN) - Theanoの中国の公式チュートリアル(翻訳)(D)との深い学習

対話し、学ぶために皆のために、私は限られています、もし様々なサイズの誤差、一緒に進歩を遂げるように、マイクロPaizhuanを飛んでください巨大な牛の牛の子牛の牛!参照翻訳した場合、ソースを明記してくださいhttp://www.cnblogs.com/charleshuang/を

 この記事翻訳:http://deeplearning.net/tutorial/lenet.html

商品コードのスクリーンショットは、あなたが、元のテキストを表示するには、上記URLに行くことができ、非常に明確ではありません。

 

1、モチベーション

   畳み込みニューラルネットワーク(CNN)は、多層パーセプトロン(MLP)であり、それは進化生物学的概念である、モデルの変形です。猫の視覚野での初期の研究活動からヒューベルとヴィーゼル、我々は視覚野におけるこれらの細胞の細胞の複雑な分布が存在しているはず,,地元が入力外の世界に非常に敏感であるが、それらは「受容野」(セルと呼ばれています)、視野全体をカバーするためにいくつかの方法でいます。これらの細胞は、部分画像に対して敏感である、いくつかのフィルタと同じでより良好なターゲット情報の空間的関係の自然な画像を掘ることができ、入力されます。

   加えて、視覚皮質細胞、S細胞(単純な細胞)およびC(複雑型細胞)細胞関連付けられた2つのタイプがあります。S刺激に対する最大エッジパターン類似の応答を行う画像におけるそれらの受容野における細胞、及びセルCが大きく受容野を有し、それは正確に刺激パターンの画像の空間的な位置に配置することができます。

   現在は最も強力なビジョンシステム広く注目の視覚野として知られています。その神経ヒューリスティック・モデルに基づいて、多くの学問分野がありました。例えば:ネオコグニトロン  [福島]、HMAX  〔Serre07]  とキーLeNet-5このチュートリアルで論議されるべき  [LeCun98]

 

2、まばらな接続

   隣接する層の間のローカル接続モード(ローカル接続パターン)ニューラルネットワークノードを強化しCNNsは、部分相関(関心の対象)は、空間情報の自然な画像を利用します。ローカルノード1層目のノードのサブセットは、中間層のm 1、m番目の層、及びノードは、M 1層の一部である空間を有する連続的な視覚受容野ノード(M-1層は、ノードの一部であります隣接)に接続されています。あなたは、この接続図を表現するために、以下を使用することができます。

   M-1層は、網膜(NATURAL受像)の入力層である、と仮定する。図の説明は、ノードニューロンは1-M層の上部層は、各ノードに接続網膜層3つのに隣接するノード受容フィールド、レイヤ3メートル以下の幅を有するmです。M + 1ノード層とその下の層は、M層が層3つのに隣接するノードが、入力層(網膜層)の接続へと接続されたままで同様の接続ノード属性、ノードm + 1を有しますこの図に増加し、5。この構造訓練されたフィルタ(最も強い応答を生じる入力に対応する)が構築され、ローカル空間モード(各ノード以降だけ上方、受容野に応答低い局所接続されたノード)となります。上面図は、形成された多層積層フィルタ(より長いリニア)は、よりグローバルな(例えば、大空間のピクセルを含む)となります。例えば、同図において、(画素空間の点で)第一層符号化M + 1は5非線形の幅とすることができます。

 

3、重量の共有

   CNNsにおいて、重畳受容野全体にわたって繰り返されるHI疎フィルタのそれぞれは、繰り返し特性グラフ(特徴マップ)の形でこれらのノードは、マップは、同じ重み行列と同じ特別なパラメータを共有することができるとベクトルを相殺しました。

 

   図では、3があるため、同じ色の重い重量を共有する必要があるのは、図の同じ機能隠れ層のノードに属し、それらは同じに制限されています。ここでは、勾配降下アルゴリズムは、まだこれらの共有パラメータを訓練するために使用することができ、オリジナルのアルゴリズムの基礎にわずかな変更を必要とします。重量勾配は、権利勾配共有パラメータの単純な合計を共有することができます。

   なぜそれの重量を共有で非常に興味?どんな位置経験の分野での繰り返し単位を、彼らは特性を検出することができません。また、このように大幅にパラメータの数を減らすため、重量の共有は、これを達成するための効率的な方法を提供する(トレーニング)を学ぶ必要があります。良いモデルの制御能力場合は、CNNは、コンピュータビジョンの問題を解決するために、より良い汎化能力を持つことになります。

 

図4に示すように、詳細な説明およびラベル説明

   概念的に、図によって特徴づけは、線形フィルタの入力画像を畳み込むバイアス項を増加させ、そしてこの得られた結果を非線形関数に作用します。我々はk番目の特徴の層HKスタンプがあり、そのフィルタの重みWkのと判断BKバイアスをかけた場合、特徴マップは、(非線形関数は双曲線正接をとる)は次式で定義されます。

 

コンボリューションの説明:

 

より良好な中間層にデータを表現するために、特徴マップの複数で構成され、{HK、K = 1,2,3 ... K}。四つのパラメータ(索引図のターゲット機能によって決定W重み、図の前記ソース。インデックス、インデックスソース垂直位置、水平位置インデックスソース)は(W)が4次元テンソルであると言うことができ、bはバイアスベクトル、図の特徴量に対応する各ベクトル要素です。私たちは、表現するために、次の図を使用します。

 

図2は、図4と前記m個のM-1レイヤ2レイヤ機能(H0、H1)図を含むニューロンノードCNNを含む上層です。ニューロンH0、H1の出力(画素)は、M-1層の画素により計算された、2×2のその受容野。フィールドは、4つの特性グラフを横切っ感じるする方法であることをここで注意し、重みがW0は、W1は、入力インデックスを示す特性図、三次元テンソル(3Dテンソル)であり、他の2つはピクセル座標を表します。一般に、それぞれ、図重量接続され、それのk番目の特徴量特性グラフに接続された第m層上の右側の画素は、座標(i、j)を有する図機能における最初のL M-1層で表します。ピクセル。

 

5 ConvOp

   ConvOpは、畳み込みTheano層の実装です。これは一般的に、ConvOpは、2つの入力(パラメータ)を含む、scipy.signal.convolve2dに機能scipyのダウンロードを繰り返します。

   (1)ミニバッチの入力画像4Dテンソルに対応します。各テンソルのサイズ:[ミニバッチサイズ、入力特徴マップ、画像、画像の高さの数の幅]。

   (2)テンソル4Dの重量Wに対応します。各テンソルのサイズ:[式図層の数mは、図の特徴で数M-1層の幅は、フィルタの高さ、フィルタ]。

   次のコードは、図1における畳み込み層を実装し、入力は、図3(RGBに対応)を我々はフィールド9 * 9受容2つの畳み込みフィルタを有することができる120 * 160のサイズを含みます。

 

 

私たちは、フィルタがランダムに初期化されたエッジ検出オペレータのアクションを生成することができることを見出しました。

加えて、我々は重みのために同じ式が初期化された使用、これらの重みは、ファンインが隠されている、[-1 /ファンイン、1 /ファンイン]の範囲からサンプリング一様分布であります入力層のノード数は、MLP、以下のナンバーワンであるファンインノードが、はCNNのために、我々は、アカウントに入力された特徴マップの数、および受容野の大きさを取る必要があります。

 

6、最大のプール

   もう1つの重要な概念はCNNsは、ダウンサンプリングの非リニア方式で最大(MAX-プーリング)、プールされています。セルへの入力画像の最大値が重複しない行列になるように、各サブ領域(矩形領域)、最大値が出力されます。

   (1)上位計算の複雑さを軽減:テクノロジーは、2つの理由のために非常に有用で視力の問題で最大のプールです。(2)不変性は、変化の形を提案しました。この不変性を理解するために、我々は、変換最大合計層が2×2以上のウィンドウで実施される場合、最大細胞層及び単一画素について、ボリュームを組み合わせたベース層が、8つの方向は、8つの可能があることを前提と構成、正確層と同じ結果を生成することができる3つの畳み込みがあります。ウィンドウは3 * 3の確率になると、5/8になった正確な結果を生み出します。

   したがって、ロバスト性の変位、中間表現層の寸法を小さくするための非常に柔軟な方法で最大のプールのための良好な変化を有しています。

   theano.tensor.signal.downsample.max_pool_2dでTheanoの最大のプールが実現しました。入力としてN次元テンソル(N> 2)でこの機能、およびこの最大プールテンソル変換するスケーリング係数。ここではサンプルコードは次のとおりです。

 

注意到和大部分代码不同的是,这个函数max_pool_2d 在创建Theano图的时候,需要一个向下采样的因子ds (长度为2的tuple变量,表示了图像的宽和高的缩放. 这个可能在以后的版本中升级。

 

7、一个完整的CNN模型:LeNet

   稀疏性、卷积层和最大池化是LeNet系列模型的核心概念。犹豫模型细节变化较大,我们用下图来展示整个LeNet模型。

 

模型的低层由卷基层和最大池化曾组成,高层是一个全连接的MLP神经网络(隐层+逻辑回归,ANN),高层的输入是下层特征图的集合。

从实现的角度讲,这意味着低层操作了4D的张量,这个张量被压缩到了一个2D矩阵表示的光栅化的特征图上,以便于和前面的MLP的实现兼容。

   

 

8、全部代码

 

 

 

应该注意的是,在初始化权重的时候,fan-in是由感知野的大小和输入特征图的数目决定的。最后,采用前面章节定义的LogisticRegressionHiddenLayer类,LeNet就可以工作了。

 

9、注意要点和技巧

   超参数选择:由于CNNs比标准的MLP有着更多的超参数,所以CNNs的模型训练是很需要技巧的。不过传统的学习率和惩罚项仍然是需要使用的,下面说的的这些技巧在优化CNNs模型的过程中需要牢记。

  (1)滤波器的数量选择:在选定每一层的滤波器的数量的时候,要牢记计算一个卷积层滤波器的激活函数比计算传统的MLPs的激活函数的代价要高很多!假设第(i-1)层包含了Ki-1个特征图和M*N个像素坐标(如坐标位置数目乘以特征图数目),在l层有Kl个m*n的滤波器,所以计算特征图的代价为:(M-m)*(N-n)*m*n*Kl-1。整个代价是Kl乘级的。如果一层的所有特征图没有和前一层的所有的特征图全部连起来,情况可能会更加复杂一些。对于标准的MLP,这个代价为Kl * Kl-1,Kl是第l层上的不同的节点。所以,CNNs中的特征图数目一般比MLPs中的隐层节点数目要少很多,这还取决于特征图的尺寸大小。因为特征图的尺寸随着层次深度的加大而变小,越靠近输入,所在层所包含的特征图越少,高层的特征图会越多。实际上,把每一次的计算平均一下,输出的特征图的的数目和像素位置的数目在各层是大致保持不变的。To preserve the information about the input would require keeping the total number of activations (number of feature maps times number of pixel positions) to be non-decreasing from one layer to the next (of course we could hope to get away with less when we are doing supervised learning).所以特征图的数量直接控制着模型的容量,它依赖于样本的数量和任务的复杂度。

  (2)滤波器的模型属性(shape):一般来说,在论文中,由于所用的数据库不一样,滤波器的模型属性变化都会比较大。最好的CNNs的MNIST分类结果中,图像(28*28)在第一层的输入用的5*5的窗口(感受野),然后自然图像一般都使用更大的窗口,如12*12,15*15等。为了在给定数据库的情况下,获得某一个合适的尺度下的特征,需要找到一个合适的粒度等级。

  (3)最大池化的模型属性:典型的取值是2*2或者不用最大池化。比较大的图像可以在CNNs的低层用4*4的池化窗口。但是要需要注意的是,这样的池化在降维的同事也有可能导致信息丢失严重。

  (4)注意点:如果想在一些新的数据库上用CNN进行测试,可以对数据先进行白化处理(如用PCA),还有就是在每次训练迭代中减少学习率,这样可能会得到更好的实验效果。

转载于:https://www.cnblogs.com/charleshuang/p/3651843.html

おすすめ

転載: blog.csdn.net/weixin_34153893/article/details/93677532