ディープラーニングにおける畳み込みを理解する(翻訳)

著者:Tim Dettmers
原文:timdettmers.com/2015/03/26/…
翻訳者:kwii

畳み込みは、深層学習で最も重要な概念です。ほぼすべての機械学習タスクの最前線にディープラーニングをもたらしたのは、畳み込みと畳み込みネットワークです。しかし、なぜ畳み込みはそれほど強力なのですか?それはどのように機能しますか?このブログでは、たたみ込みとその他の関連する概念について説明し、たたみ込みを深く理解するのに役立てます。

ウェブ上にはたたみ込みに関するブログがたくさんありますが、意味のある方法でたたみ込みの理解を深めるために、それらは不必要な数学的詳細でいっぱいであることがわかりました。このブログ投稿にも多くの数学的な詳細が含まれていますが、私は写真を使用して基礎となる数学を示し、誰もがそれを理解できるようにします。ブログの最初の部分は、畳み込みと深層学習における畳み込みネットワークの一般的な概要についてです。ブログの第2部には、深層学習の研究者や専門家が畳み込みの理解を深めるのに役立つように設計されたいくつかの高度な概念が含まれています。

パートⅠ:畳み込みとは何ですか?

ブログ全体はこの質問に基づいて作成されていますが、一般的な方向性を事前に知っておくと非常に役立ちます。大まかに言えば、畳み込みとは何ですか。

畳み込みは、情報の混合と考えることができます。情報でいっぱいの2つのバケットを想像してみてください。一方は他方と同じようにダンプされ、特定のルールと混合されます。情報の各バケットには独自のレシピがあり、あるバケットの情報が別のバケットの情報とどのように混合されるかを説明しています。したがって、畳み込みは、2つの情報源が交差する順序付けられたプロセスです。

畳み込みは数学的にも説明できます。実際、これは加算、減算、乗算、除算に似た数学演算であり、演算自体は複雑ですが、より複雑な方程式を単純化するのに役立ちます。物理学と工学では、畳み込みは複雑な方程式を単純化するために広く使用されています。第2部では、畳み込みの簡単な数学的導出の後、科学分野での畳み込みの概念と深層学習を相互に関連付けて統合し、畳み込みをより深く理解します。しかし、今のところ、実際的な観点から畳み込みを見てみましょう。

画像で畳み込み演算を実行するにはどうすればよいですか?

画像に対して畳み込み演算(2次元畳み込み)を実行すると、画像の幅と高さの2次元で畳み込みが行われます。情報の2つのバケットを混合します。最初のバケットは入力画像であり、合計3つのピクセル行列(RGB 3チャネル行列)があります。情報の2番目のバケットは、浮動小数点数の行列である畳み込みカーネル(カーネル)です。行列のサイズとパターンは、入力画像を畳み込みカーネルで畳み込む方法を示すスキームと考えることができます。深層学習では、畳み込みカーネルの出力は特徴マップと呼ばれ、畳み込み操作後の画像です。RGBで表される画像の場合、各カラーチャネルの特徴マトリックスがあります。

image.png image.png

次に、畳み込み演算によって交差する2つの情報のプロセスを示します。畳み込み演算を実行する方法の1つは、畳み込みカーネルと同じサイズの入力画像の小片を取り出すことです。たとえば、100x100の入力画像と3x3の畳み込みカーネルがあるので、入力画像。3x3パッチを取得し、画像パッチと畳み込みカーネルの要素ごとの乗算を行います。乗算された合計は、特徴行列上のピクセルを表します。乗算結果を計算した後、イメージパッチエクストラクタの中心を反対方向に1ピクセルスライドさせ、計算プロセスを繰り返します。特徴行列上のすべてのピクセルが計算されると、畳み込み操作は終了します。

image.png

画像の畳み込みが機械学習に役立つのはなぜですか?

画像には多くの気が散る情報が含まれますが、これは私たちが達成する必要のある目標(画像の分類など)とは無関係です。良い例は、ブルダキャンプでJannekTohmasと一緒に行ったプロジェクトです。Burda Bootcampは、ハッカソンスタイルの環境で非常に短時間で技術製品を作成するラピッドプロトタイピングラボです。私の同僚の9人と一緒に、2か月で11の製品を作成しました。プロジェクトでは、ファッション衣類の画像検索にディープオートエンコーダーを使用したいと思います。ファッション衣類の写真をアップロードすると、オートエンコーダーは同じスタイルの衣類を見つけることができます。

现在如果你想区分不同款式的衣服,衣服的颜色就不会那么有用;其他细节像品牌的标志也不重要。最重要的可能是衣服的形状。通常来说,女士衬衣的形状和男士衬衣、夹克和裤子完全不同。所以如果我们可以过滤图像种不必要的信息,那么我们的算法就不会被不必要的细节,比如颜色和品牌标志所干扰。我们可以通过图像卷积轻易实现过滤的操作。

我的同事 Jannek Thomas 预处理了数据,并使用了 Sobel 边缘检测器(和卷积核类似)来保留物体形状的轮廓信息。这也是为什么卷积操作经常被叫做滤波(filtering),卷积核被叫做过滤器(filter)。如果你想区分不同类型的衣服,从边缘检测器得到的特征矩阵会非常有用,原文只有相关形状的信息被保留了。

image.png

更进一步:有许多不同的卷积核,它们可以产生不同的特征矩阵,比如锐化图像(更多的细节),模糊图像(更少的细节),每个特征图都会帮助我们的算法在它的特定任务中做的更好。

接收输入,转换输入,将转换后的输入喂给(feed)一个算法,这种过程叫做特征工程。特征工程是非常难的,几乎没有任何资源来帮助你学习这项技能。所以,只有很少的人能够将特征工程熟练的应用在不同的任务中。特征工程是一种纯手工的,也是在 Kaggle 比赛中获得较好分数最重要的技能。特征工程是如此的难,因为每一种数据核每一种问题,好的特征是不同的:图像任务中的只是在时序数据中没有;即使我们有两个相似的图像任务,提取好的特征也是不容易的,因为图像中的物体会决定哪些特征有效,哪些无效。这会非常依赖经验。

所以,特征工程是非常难得,对于每一种新的任务,你必须从头开始。但是当我们看图片时,有没有自动寻找适合某一项新任务的卷积核的方法呢?

进入卷积网络

畳み込みネットワークは、畳み込みカーネルを自動的に見つける方法にすぎません。カーネルに固定番号を割り当てる代わりに、データでトレーニングされるこれらのカーネルにパラメーターを割り当てます。畳み込みネットワークをトレーニングすると、畳み込みカーネルは関連情報のフィルタリングがどんどん良くなります。このプロセスは完全に自動化されており、特徴学習と呼ばれます。特徴学習は、各タスクに適した畳み込みカーネルを自動的に生成します。ネットワークをトレーニングして、関連情報を抽出するフィルターを見つけるだけです。そのため、畳み込みネットワークは非常に強力です。特徴エンジニアリングの問題はありません。

通常、畳み込みネットワークでは、1つの畳み込みカーネルのパラメーターだけを学習するのではなく、階層構造に積み重ねられた複数の畳み込みカーネルのパラメーターを同時に学習します。たとえば、256x256画像に適用された32x16x16畳み込みカーネル(CxHxW)は、サイズ241x241の32個のフィーチャマップを生成します(これはパディングなしの標準畳み込みです)。そのため、タスクに関連する32の新機能を自動的に学習します。これらの機能は、次の畳み込みカーネルへの入力としても使用できます。階層機能を学習したら、それらを完全に接続されたレイヤーに渡すだけで、単純なニューラルネットワークがそれらを組み合わせて入力画像を分類します。概念レベルでの畳み込みネットワークについて知っておく必要があるのはこれだけです(プーリング/サブサンプリングも重要です。これについては別のブログ投稿で説明します)。

image.png

パートII:高度な概念

コンテンツのこの部分はとてもかっこいいです。時間があれば翻訳します。

おすすめ

転載: juejin.im/post/7086787302319472671