Main Content

컨벌루션신경망의지정하기

새로운(Convnet)을을훈련위한번째는아키텍처아키텍처정의정의입니다입니다입니다。convnet계층계층대해자세히알아보고계층이이이에서에서어떤나타나는지합니다합니다합니다。딥러닝계층전체과이들을만드는방법은딥러닝 계층 목록항목을하십시오。lstm신경망신경망신경망에알아보려면알아보려면알아보려면알아보려면알아보려면알아보려면알아보려면장단기 기억 신경망항목을하십시오。사용자지정을만드는방법은사용자지정딥러닝정의하기항목을하십시오。

신경망아키텍처된의유형및에달라질수있습니다있습니다。포함된유형개수는구체응용방법이나따라달라집니다달라집니다달라집니다。예를를를분류에는계층과이이있는반면반면반면반면반면반면반면반면반면반면회귀회귀신경망신경망에는신경망신경망끝끝부분에에회귀회귀회귀계층계층이합니다합니다적은수영상를하는는컨벌루션이한개또는두개밖에없는없는크기가작은작은충분충분할할수있습니다있습니다。반면,수백수백의영상구성데이터경우에는여러개의컨벌루션컨벌루션완전연결연결계층이포함포함포함된된보다보다복잡한신경망이신경망이필요필요할할

모든 계층이 순차적으로 연결된 심층 신경망의 아키텍처를 지정하려면 계층으로 구성된 배열을 직접 만드십시오. 예를 들어, 28×28 회색조 영상을 10개 클래스로 분류하는 심층 신경망을 만들려면 다음과 같이 계층 배열을 지정합니다.

layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,16,'Padding',1) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,32,'Padding',1) batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];
layers객체로 구성된 배열입니다. 그런 다음layers를훈련함수trainNetwork의 입력값으로 사용할 수 있습니다.

모든 계층이 순차적으로 연결된 신경망의 아키텍처를 지정하려면 계층으로 구성된 배열을 직접 만드십시오. 계층이 입력값 또는 출력값을 여러 개 가질 수 있는 신경망 아키텍처를 지정하려면层Graph객체를 사용하십시오.

영상 입력 계층

ImageInputlayer를사용영상계층만듭니다만듭니다。

영상 입력 계층은 신경망에 영상을 입력하고 데이터 정규화를 적용합니다.

inputSize인수를 사용하여 영상 크기를 지정합니다. 영상의 크기는 이 영상의 높이, 너비, 색 채널 개수에 대응됩니다. 예를 들어, 회색조 영상은 채널 개수가 1이고 컬러 영상은 채널 개수가 3입니다.

컨벌루션계층

2차원 컨벌루션 계층은 2차원 입력값에 슬라이딩 컨벌루션 필터를 적용합니다.卷积2Dlayer2차원차원컨벌루션계층만듭니다만듭니다만듭니다만듭니다만듭니다。

컨벌루션계층은 다양한 구성요소로 구성됩니다.1

필터와스트라이드

컨벌루션계층은 입력 영상 또는 직전 계층의 출력값의 부분 영역에 연결되는 뉴런으로 이루어집니다. 이 계층은 영상을 스캔하면서 이러한 영역에 국한된 특징을 학습합니다.卷积2Dlayer함수를하여계층을때때filterSize입력 인수를 사용하여 이러한 영역의 크기를 지정할 수 있습니다.

trainNetwork함수는각 영역에 대해 가중치와 입력값의 내적을 계산하고 편향 항을 더합니다. 영상의 영역에 적용되는 가중치 세트를필터라고 합니다. 필터는 각 영역에 대해 동일한 계산을 반복하면서 입력 영상의 세로와 가로 방향을 따라 이동합니다. 즉, 필터는 입력값을 컨벌루션합니다.

아래 영상은 3×3 필터가 입력값을 스캔하는 것을 보여줍니다. 아래쪽 맵은 입력값을, 위쪽 맵은 출력값을 나타냅니다.

필터가 이동하는 스텝 크기를스트라이드라고 합니다. 스텝 크기는大步이름-값 쌍 인수를 사용하여 지정할 수 있습니다. 뉴런이 연결되는 국소 영역은filterSize'Stride'값에 따라 중첩될 수 있습니다.

아래영상은3×3필터가스트라이2드로입력값을스캔하는것을 보여줍니다. 아래쪽 맵은 입력값을, 위쪽 맵은 출력값을 나타냅니다.

필터에가중치개수개수h * w * c입니다。여기서는의높이이고,w는필터이고이고는입력에있는채널의개수입니다입니다입니다。예들어,입력값컬러경우경우경우,색채널의개수는는는는는는는는는는는는는경우경우경우경우경우필터의컨벌루션이출력하는의를결정합니다합니다。필터의개수는卷积2Dlayer함수에서numFilters인수를 사용하여 지정합니다.

팽창된 컨벌루션

팽창된 컨벌루션은 필터의 요소 사이에 삽입된 공간으로 인해 필터가 확장된 컨벌루션입니다. 팽창 인자는'DilationFactor'속성을 사용하여 지정합니다.

파라미터의 개수나 연산량을 늘리지 않으면서 계층의 수용 영역(입력값에서 계층이 볼 수 있는 영역)을 늘리려는 경우 팽창된 컨벌루션을 사용할 수 있습니다.

이계층각요소에에에에을을하여를합니다합니다합니다。팽창인자값을스텝크기이동등한필터업샘플링인자를합니다합니다합니다。팽창인자따라필터가(滤波器大小 - 1)。*扩张因子 + 1로정해집니다。예를,팽창팽창가[2 2]인 3×3 필터는 요소들 사이에 0이 삽입된 5×5 필터와 같습니다.

아래 영상은 2배만큼 팽창된 3×3 필터가 입력값을 스캔하는 것을 보여줍니다. 아래쪽 맵은 입력값을, 위쪽 맵은 출력값을 나타냅니다.

특징 맵

입력값을 따라 이동하는 필터는 컨벌루션에 대해 동일한 가중치 세트와 동일한 편향을 사용하여특징 맵을형성합니다。각특징서로가중치와서로을사용한결과입니다입니다입니다。따라서특징개수필터의와같습니다같습니다。컨벌루션계층파라미터의개수는((H*W*C + 1)*过滤器数)。여기서서은입니다입니다。

채우기

'Padding'이름-값 쌍 인수를 사용하여 입력 영상 테두리에 세로와 가로 방향으로 채우기를 적용할 수도 있습니다. 채우기는 입력값 크기를 늘리기 위해 입력값 테두리에 추가되는 값입니다. 채우기를 조정하여 계층의 출력 크기를 제어할 수 있습니다.

아래 영상은 3×3 필터가 채우기 크기 1이 적용된 입력값을 스캔하는 것을 보여줍니다. 아래쪽 맵은 입력값을, 위쪽 맵은 출력값을 나타냅니다.

출력크기

컨벌루션계층의 출력 높이와 너비는 (Input Size – ((Filter Size – 1)*Dilation Factor + 1) + 2*Padding)/Stride + 1입니다. 전체 영상을 완전히 덮으려면 이 값은 정수여야 합니다. 이러한 옵션을 조합한 결과로 영상을 완전히 덮을 수 없게 되는 경우, 영상의 오른쪽과 아래 가장자리를 따라 남는 부분이 기본적으로 컨벌루션에서 무시됩니다.

뉴런의개수

출력높이와를하면특징맵에있는뉴런의총총개수개수개수개수개수개수개수개수개수개수개수개수。컨벌루션계층뉴런의총(출력크기)는地图大小*过滤器数。

예를 들어, 입력 영상이 32×32×3 컬러 영상이라고 가정하겠습니다. 필터가 8개이고 필터 크기가 5×5인 컨벌루션 계층의 필터당 가중치 개수는 5 * 5 * 3 = 75이고, 계층의 파라미터의 총 개수는 (75 + 1) * 8 = 608입니다. 스트라이드가 각 방향에서 2이고, 크기가 2인 채우기를 지정하면 각 특징 맵은 16×16 크기를 가집니다. (32 – 5 + 2 * 2)/2 + 1 = 16.5인데 영상의 오른쪽과 아래쪽의 가장 바깥에 더해진 채우기 중 일부가 버려졌기 때문입니다. 마지막으로, 계층의 뉴런의 총 개수는 16 * 16 * 8 = 2048입니다.

Relu(校正线性单元)와와와같은형태형태를합니다합니다합니다。

파라미터에대해알아보기

컨벌루션계층을 정의할 때 이름-값 쌍 인수를 사용하여 계층의 학습률과 정규화 옵션을 조정할 수 있습니다. 이러한 옵션을 지정하지 않은 경우,trainNetwork训练함수로정의된전역훈련옵션을사용합니다。전역및계층 훈련 옵션에 대한 자세한 내용은파라미터를 설정하고 컨벌루션 신경망 훈련시키기항목을하십시오。

계층개수

컨벌루션신경망은여러의컨벌루션계층이루어질있습니다있습니다있습니다。컨벌루션계층는의복잡도복잡도달라집니다달라집니다달라집니다。

배치 정규화 계층

batchnormalizationlayer를사용배치화을만듭니다만듭니다。

배치 정규화 계층은 각 채널에 대한 모든 관측값에서 데이터의 미니 배치를 독립적으로 정규화합니다. 컨벌루션 신경망의 훈련 속도를 높이고 신경망 초기화에 대한 민감도를 줄이려면 컨벌루션 계층과 비선형 계층(예: ReLU 계층) 사이에 배치 정규화 계층을 추가하십시오.

배치 정규화 계층은 먼저 각 채널에서 미니 배치의 평균을 뺀 값을 미니 배치의 표준편차로 나누어 각 채널의 활성화 결과를 정규화합니다. 그런 다음 입력값을 학습 가능한 오프셋 β만큼 이동하고 학습 가능한 스케일링 인자 γ만큼 스케일링합니다. β와 γ 또한 학습 가능한 파라미터로, 신경망 훈련 중에 업데이트됩니다.

배치정규은전체전파되는화과기울기값을정규화하여신경망훈련훈련을보다보다쉬운쉬운최적화화문제문제문제로로만들어줍니다。이를하려면학습률늘려볼있습니다있습니다있습니다。최적화적으로쉬우므로업데이트값더수있고신경망이더빠르게학습학습수수수。l2정규화와 드롭아웃 정규화를 줄여볼 수도 있습니다. 배치 정규화 계층에서 훈련 중 특정 영상의 활성화 결과는 동일한 미니 배치에 어떤 영상이 나타나는지에 의해 좌우됩니다. 이러한 정규화 효과를 십분 활용하려면 각 훈련 Epoch 전에 훈련 데이터를 섞어 보십시오. 훈련 중에 데이터를 섞는 빈도를 지정하려면训练“洗牌”이름-값값를하십시오하십시오。

ReLU 계층

reluLayer를사용하여계층계층만듭니다。

ReLU 계층은 입력값의 각 요소에 대해 0보다 작은 값은 모두 0으로 설정하는 임계값 연산을 수행합니다.

컨벌루션계층과 배치 정규화 계층 뒤에는 보통 ReLU(Rectified Linear Unit)와 같은 비선형 활성화 함수가 옵니다. 이 함수는 ReLU 계층으로 지정됩니다. ReLU 계층은 각 요소에 대해 입력값이 0보다 작으면 모두 0으로 설정하는 임계값 연산을 수행합니다. 이 연산은 다음과 동일합니다.

f ( x ) = { x , x 0 0 , x < 0

ReLU 계층은 입력값의 크기를 변경하지 않습니다.

이밖에응용에서와연산을해신경망정확도를개선할수있는있는또다른비선형비선형화화계층들계층들이있습니다있습니다。활성화계층은활성화 계층항목을하십시오。

교차채널화(국소응답화)계층

交叉渠道层层를사용채널정규계층만듭니다만듭니다만듭니다。

채널별(교차)정규정규계층를합니다합니다합니다합니다。

이 계층은 채널별 국소 응답 정규화를 수행합니다. 이 계층은 보통 ReLU 활성화 계층 뒤에 옵니다. 이 계층은 각 요소를 특정 개수의 이웃 채널에 있는 요소들(정규화 윈도우에 포함된 요소들)을 사용하여 얻은 정규화 값으로 바꿉니다. 즉,trainNetwork는입력값각요소 x 에대해식을하여정규화값 x ' 을계산합니다。

x ' = x ( K + α * s s w i n d o w C h a n n e l S i z e ) β ,

여기,k,α,β는화파라미터,ss는는화에포함입니다입니다입니다입니다입니다입니다[2]交叉渠道层层함수의windowChannelSize인수를정규윈도우의크기지정합니다합니다합니다。Α,beta,K이름-값값사용하이퍼파라미터도지정있습니다있습니다있습니다있습니다。

위 정규화 식은[2]에제시식과다릅니다다릅니다。alpha값에windowChannelSize를 곱하면 동일한 식을 얻을 수 있습니다.

최댓값및평균풀링계층

2차원 최댓값 풀링 계층은 입력값을 직사각형 풀링 영역으로 나누어 다운샘플링을 수행한 다음 각 영역의 최댓값 계산을 수행합니다.maxpooling2dlayer를 사용하여 최댓값 풀링 계층을 만듭니다.

2차원 평균값 풀링 계층은 입력값을 직사각형 풀링 영역으로 나누어 다운샘플링을 수행한 다음 각 영역의 평균값 계산을 수행합니다.averagePooling2dLayer를사용평균풀링을만듭니다만듭니다。

풀링 계층은 다운샘플링을 위해 컨벌루션 계층 뒤에 오므로, 뒤에 오는 계층으로의 연결 개수가 줄어듭니다. 풀링 계층은 스스로 학습을 수행하지는 않으나 뒤에 오는 계층에서 학습할 파라미터의 개수를 줄여줍니다. 과적합을 방지하는 데도 도움이 됩니다.

최댓값풀링입력의직사각형의을반환합니다합니다。직사각형영역크기는maxPoolingLayerpoolSize인수에 의해 결정됩니다. 예를 들어,poolSize(2、3)이면 이 계층은 높이가 2이고 너비가 3인 영역의 최댓값을 반환합니다.평균값은값의직사에대한평균출력합니다합니다합니다。직사각형영역크기는averagePoolingLayerpoolSize인수에 의해 결정됩니다. 예를 들어,poolSize가[2,3]이면이은높이가높이가높이가이고너비가가인인의평균을반환합니다합니다。

풀링계층값가로와세로으로크기만큼캔합니다합니다합니다。스텝크기는'Stride'이름-값 쌍 인수를 사용하여 지정할 수 있습니다. 풀 크기가 스트라이드보다 작거나 같은 경우, 풀링 영역은 중첩되지 않습니다.

비중첩 영역(Pool Size와 Stride가 같음)에서, 풀링 계층의 입력값이 n×n이고 풀링 영역 크기가 h×h인 경우, 풀링 계층은 h만큼 영역을 다운샘플링합니다[6]。즉, 컨벌루션 계층의 채널 1개에 대한 최댓값 풀링 계층 또는 평균값 풀링 계층의 출력값은 n/h×n/h이 됩니다. 중첩되는 영역에서, 풀링 계층의 출력값은 (Input Size – Pool Size + 2*Padding)/Stride + 1이 됩니다.

드롭아웃 계층

dropoutlayer를 사용하여 드롭아웃 계층을 만듭니다.

드롭아웃주어진에따라입력를무작위로로로로으로으로으로합니다합니다합니다합니다。

이 계층은 훈련 시점에 드롭아웃 마스크rand(size(X))로 주어진 확률에 따라(X는계층 입력) 입력 요소를 무작위로 0으로 설정한 후에 나머지 요소를1/(1-Probability)만큼 스케일링합니다. 이 연산을 수행하면 실제로 각 반복 사이에 기본 신경망 아키텍처가 변경되고 신경망의 과적합이 방지됩니다[7],[2]。수치가높을수록에제외요소많아집니다많아집니다많아집니다。예측시점의값이입력과합니다합니다합니다。

최댓값 또는 평균값 풀링 계층과 비슷하게 이 계층에서는 학습이 이루어지지 않습니다.

완전 연결 계층

fullyConnectedLayer를 사용하여 완전 연결 계층을 만듭니다.

완전연결입력에가중치곱한다음벡터를합니다합니다합니다。

컨벌루션계층플링뒤에는이상의연결계층옵니다옵니다옵니다。

이름에서있듯이연결계층의뉴런은계층의뉴런에연결됩니다됩니다。이계층계층영상학습학습(국소정보)들을들을하여보다큰패턴을합니다합니다합니다합니다。분류문제,마지막완전계층은조합영상을합니다합니다합니다합니다。이러한동작인신경망의완전연결계층의outputSize인수가의클래스와됩니다됩니다됩니다。회귀문제경우,출력크기응답의와합니다합니다합니다。

완전연결때관련-값-값인수를하여계층의학습률학습률과정규정규화파라미터파라미터를조정할수도수도있습니다있습니다있습니다있습니다있습니다있습니다이러한파라미터조정하지경우,trainNetwork训练함수로 정의된 전역 훈련 파라미터를 사용합니다. 전역 및 계층 훈련 옵션에 대한 자세한 내용은파라미터를 설정하고 컨벌루션 신경망 훈련시키기항목을하십시오。

완전 연결 계층은 입력값에 가중치 행렬 W를 곱한 다음 편향 벡터 b를 더합니다.

계층의 입력값이 시퀀스인 경우(예: LSTM 신경망), 완전 연결 계층은 각 시간 스텝에서 독립적으로 동작합니다. 예를 들어, 완전 연결 계층의 직전 계층이 크기가 D×N×S인 배열 X를 출력하는 경우, 완전 연결 계층은 크기가outputSize×N×S인 배열 Z를 출력합니다. 시간 스텝 t에서 Z의 대응되는 요소는 W X t + b 입니다。여기서 X t 는X의 시간 스텝 t를 나타냅니다.

출력계층

소프트맥스 및 분류 계층

소프트맥스입력에소프트맥스를합니다합니다합니다。softmaxLayer를 사용하여 소프트맥스 계층을 만듭니다.

분류 계층은 상호 배타적인 클래스로의 분류 및 가중 분류 작업에서 교차 엔트로피 손실을 계산합니다.分类器를사용하여분류계층을만듭니다。

분류문제계층과그의분류은적으로마지막완전연결계층계층에에에。

출력 유닛 활성화 함수는 다음과 같은 소프트맥스 함수입니다.

y r ( x ) = 经验 ( a r ( x ) ) j = 1 k 经验 ( a j ( x ) ) ,

여기서 0 y r 1 이고 j = 1 k y j = 1 입니다。

다중클래스에서맥스는마지막연결뒤에오는출력유닛활성화입니다입니다입니다。

P ( c r | x , θ ) = P ( x , θ | c r ) P ( c r ) j = 1 k P ( x , θ | c j ) P ( c j ) = 经验 ( a r ( x , θ ) ) j = 1 k 经验 ( a j ( x , θ ) ) ,

여기서 0 P ( c r | x , θ ) 1 이고 j = 1 k P ( c j | x , θ ) = 1 입니다。그리고, a r = Ln ( P ( x , θ | c r ) P ( c r ) ) , P ( x , θ | c r ) 은 주어진 샘플 클래스 r에 대한 조건부 확률이고, P ( c r ) 은 클래스 사전 확률입니다.

소프트맥스 함수는정규화된지수라고 알려져 있으며, 로지스틱 시그모이드 함수의 다중클래스 일반화로 간주되기도 합니다[8]

일반적인 분류 신경망에서 분류 계층은 대개 소프트맥스 계층 뒤에 옵니다. 분류 계층에서trainNetwork는다음과 같이 소프트맥스 함수에서 값을 가져와서 1-of-K 코딩 체계에 대한 교차 엔트로피 함수를 사용하여 각 입력값을 K개의 상호 배타적인 클래스 중 하나에 할당합니다[8]

loss = - 1 N n = 1 N i = 1 K w i t n i Ln y n i ,

여기서N은 샘플의 개수이고, K는 클래스의 개수이고, w i 는i의의이고, t n i 는n번째i번째번째에한다는표시자이고, y n i 는클래스 i의 샘플 n에 대한 출력값인데, 이 경우에는 소프트맥스 함수에서 가져온 값이 됩니다. 다시 말해서, y n i 는신경망이 n번째 입력값을 클래스 i에 연결할 확률입니다.

회귀계층

regressionLayer를 사용하여 회귀 계층을 만듭니다.

회귀계층은 회귀 작업의 손실을 평균 제곱 오차의 절반을 취한 값으로 계산합니다.일반적문제회귀계층은완전계층뒤와야합니다합니다합니다。

단일관측대해제곱오차는같이됩니다됩니다됩니다。

MSE = i = 1 R ( t i - y i ) 2 R ,

여기r r은은변수의이고이고,ti는목표출력이고,yi는i번째 응답 변수에 대한 신경망의 예측값입니다.

se semence-to-One to-One회귀신경망경우경우경우는는는는는에정규화화되지않은,예측않은않은않은않은않은예측예측응답변수변수변수의의의평균평균제곱제곱입니다입니다

loss = 1 2 i = 1 R ( t i - y i ) 2

图像到图像회귀경우경우,회귀회귀는는는에정규화되지않은,각각않은각픽셀에대해예측된응답응답변수변수의의제곱오차오차의의

loss = 1 2 p = 1 H W C ( t p - y p ) 2 ,

여기h,w,w,c는각각값높이,너비,채널채널나타내고,p는t와y의각(픽셀)를와를를를를

sequence-to-sequence 회귀 신경망의 경우, 회귀 계층의 손실 함수는 R에 의해 정규화되지 않은, 각 시간 스텝에 대해 예측된 응답 변수의 평균 제곱 오차의 절반입니다.

loss = 1 2 S i = 1 S j = 1 R ( t i j - y i j ) 2 ,

여기서는시퀀스입니다입니다。

훈련시는배치에있는에대해손실계산합니다합니다합니다。

참고문헌

[1] Murphy, K. P. Machine Learning: A Probabilistic Perspective. Cambridge, Massachusetts: The MIT Press, 2012.

[2]Krizhevsky, A., I. Sutskever, and G. E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." Advances in Neural Information Processing Systems. Vol 25, 2012.

[3] LeCun, Y., Boser, B., Denker, J.S., Henderson, D., Howard, R.E., Hubbard, W., Jackel, L.D., et al. ''Handwritten Digit Recognition with a Back-propagation Network.'' In Advances of Neural Information Processing Systems, 1990.

[4] LeCun, Y., L. Bottou, Y. Bengio, and P. Haffner. ''Gradient-based Learning Applied to Document Recognition.'' Proceedings of the IEEE. Vol 86, pp. 2278–2324, 1998.

[5] Nair,V。和G. E. Hinton。“整流的线性单元改善了受限的玻尔兹曼机器。”在Proc。第27届机器学习国际会议,2010年。

[6] Nagi, J., F. Ducatelle, G. A. Di Caro, D. Ciresan, U. Meier, A. Giusti, F. Nagi, J. Schmidhuber, L. M. Gambardella. ''Max-Pooling Convolutional Neural Networks for Vision-based Hand Gesture Recognition''. IEEE International Conference on Signal and Image Processing Applications (ICSIPA2011), 2011.

[7] Srivastava, N., G. Hinton, A. Krizhevsky, I. Sutskever, R. Salakhutdinov. "Dropout: A Simple Way to Prevent Neural Networks from Overfitting." Journal of Machine Learning Research. Vol. 15, pp. 1929-1958, 2014.

[8] Bishop,C。M.模式识别和机器学习。纽约州施普林格,纽约,2006年。

[9] Ioffe, Sergey, and Christian Szegedy. “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.” Preprint, submitted March 2, 2015. https://arxiv.org/abs/1502.03167.

참고항목

|||||||||||||||

관련 항목


1Image credit:卷积算术(license)