Convolution networks

ganadara·2023년 6월 7일
0

DL

목록 보기
1/5

Convolution

연속함수를 곱해서 합하기 위해서 사용
행렬의 합성곱( 행렬, 이미지 * 필터, 가중치)

현재 위치의 출력 데이터는 인접한 pixel에 convolution filter를 곱해서 얻어진 값이다. 인접한 pixel값의 영향력이 출력데이터이다.

두 함수의 합성곱을 통해 행렬, 이미지를 우리가 원하는 함수로 만들 수 있다.
필터로 이미지를 convolution하면서 그 부분의 특징값들을 뽑아낸다.

입력 이미지의 feature들을 감지하는 kernel, filter이고, 일반적으로 33, 55이다.
모든 영역을 훑으면서 특정 feature을 뽑아서 입력에 대한 feature map을 그리게 된다.

input image의 pixel과 각 kernel이 곱한 결과를 합하게 되고 그 결과가 feature map의 하나를 채우게 된다.
이로 인해 이미지 비교시 속도의 이점을 가질 수 있다.
속도가 빠른 만큼 정보가 소실될 수 있지만 이미지의 feature을 뽑아내는 것에 주안점을 두는 것이기 이런 과정이 필요하다.

다수의 채널을 가진 입력 데이터를 가지고 합성곱 연산을 한다고 하면 커널의 채널 수도 입력의 채널 수만큼 존재해야 한다. 다시 말해 입력 데이터의 채널 수와 커널의 채널 수는 같아야 합니다.
채널 수가 같으므로 합성곱 연산을 채널마다 수행한다. 그리고 그 결과를 모두 더하여 최종 특성 맵을 얻는다.

stride: 커널의 이동 범위
padding: 합성곱 연산 이후에도 특성 맵의 크기와 입력의 크기와 동일하게 유지하기 위해서 padding 사용, 입력의 가장자리에 지정된 개수의 폭만큼 행과 열을 추가, 주로 0값을 채우는 제로 패딩을 사용한다.
weight: 커널 행렬의 원소
bias: 편향, 커널을 적용한 후 뒤에 적용된다. 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절하는 역할, 하나의 값만 존재하며, 커널이 적용된 결과의 모든 원소에 더해진다.

Convolution layer

각 필터당 하나의 feature map이 형성되고, 그 feature map을 스택처럼 쌓아둔 것이다.
다층 퍼셉트론의 은닉층에서는 가중치 연산 후에 비선형성을 추가하기 위해서 활성화 함수를 통과시켰습니다. 비선형성 추가를 위해서 활성화 함수를 지나게 된다.
CONV는 합성곱 연산을 의미하고, 합성곱 연산의 결과가 활성화 함수 ReLU를 지난다. 이 두 과정을 합성곱층이라고 합니다.

Pooling layer

Convolution layer을 input으로 받아들인다.
Convolution을 거쳐서 나온 activation maps이 있을 때, 이를 이루는 convolution layer을 resizing하여 새로운 layer를 얻는 것이다.
POOL이라는 구간을 지나는데 이는 풀링 연산을 의미하며 풀링층이라고 한다.
pooling은 데이터의 세로 및 가로 방향의 공간을 줄이는 연산이다.

sliding window

Localization network의 입력으로 만들기 위해 원본 이미지에서 잘라내는 크기를 window 크기로 하여 동일한 window 사이즈의 영역을 이동시키며(sliding) 수행하는 방식입니다.마치 Convolution의 kernel이 sliding하는 것처럼 이해할 수 있습니다.

kernel window

height and width of the kernel

feed-forward network

feed-forward network(also known as a multilayer perceptron)

Neural Network

linear transformation + non-linear transformation
input layter를 포함하지 않는다.

Weight sharing

같은 커널로 인식하려면 weight가 같아야 한다?
각각의 출력값들이 동일한 가중치를 함께 공유하고 있다. 가중치가 공유(weight sharing)된다는 것은 하나의 커널이 뉴런의 볼륨을 stride하며 모든 커널이 동일한 가중치를 갖는다는 것을 의미합니다. 이는 또한 이러한 가중치(weight), 즉 볼륨을 지나며 모든 커널이 학습하는(training) 동안에도 동일하게 유지된다는 것을 의미합니다.

Activation Function

weight와 bias를 update하기 위해 사용되는 함수.

ReLu

gradient vanishing 문제가 발생하지 않는다.

back propagation

역전파
학습을 완료한 신경망은 고도의 인지, 판단능력을 발휘한다. 역전파는 신경망을 학습시킬 때 이용하는 알고리즘으로서 출력값과 정답의 오차를 네트워크에서 역전파시켜 네트워크의 가중치와 편향을 최적화시킨다.
손실함수(Loss function)의 극소값을 만드는 매개 변수의 값을 찾기 위해 경사 하강법(gradient descent)을 이용하는데, 경사 하강법을 하려면 손실 함수를 매개 변수들에 대해 미분(편미분)을 해야 한다. 인공 신경망(Neural network)에서 이러한 미분의 계산량을 줄여주고 효율적으로 계산할 수 있도록 만들어 주는 것이 바로 역전파 알고리즘이다.

gradient descent

학습 데이터 전부를 넣어서 gradient를 다 구하고 그 모든 gradient를 평균해서 한번에 모델 업데이트한다.
이런 방식으로 하면 대용량의 데이터를 한번에 처리하지 못하기 때문에 데이터를 batch 단위로 나눠서 학습을 하는 방법을 사용하는 것이 일반적이다

gradient 중요성

vanishing grandient

인공 신경망 학습 과정
인공 신경망은 입력에 대해서 순전파(forward propagation) 연산을 하고, 그리고 순전파 연산을 통해 나온 예측값과 실제값의 오차를 손실 함수(loss function)을 통해 계산하고, 그리고 이 손실(loss)을 미분을 통해서 기울기(gradient)를 구하고, 이를 통해 역전파(back propagation)를 수행합니다.
시그모이드 함수를 사용하는 은닉층의 개수가 다수가 될 경우에는 0에 가까운 기울기가 계속 곱해지면 앞단에서는 거의 기울기를 전파받을 수 없게 됩니다. 다시 말해 매개변수
가 업데이트 되지 않아 학습이 되지를 않습니다.
앞단으로 갈수록 기울기가 제대로 전파되지 않는 모습을 보여줍니다. 결론적으로 시그모이드 함수를 은닉층에서 사용하는 것은 지양됩니다.

Batch Normalization

학습 과정에서 각 배치 단위 별로 데이터가 다양한 분포를 가지더라도 각 배치별로 평균과 분산을 이용해 정규화하는 것이다.
batch normalization은 activation function 앞에 적용된다.
batch normalization을 적용하면 weight의 값이 평균이 0, 분산이 1인 상태로 분포가 되어지는데, 이 상태에서 ReLU가 activation으로 적용되면 전체 분포에서 음수에 해당하는 (1/2 비율) 부분이 0이 되어버립니다. 기껏 정규화를 했는데 의미가 없어져 버리게 됩니다.
따라서 γ,β가 정규화 값에 곱해지고 더해져서 ReLU가 적용되더라도 기존의 음수 부분이 모두 0으로 되지 않도록 방지해 주고 있습니다. 물론 이 값은 학습을 통해서 효율적인 결과를 내기 위한 값으로 찾아갑니다.
각 layer를 normalization하는 것이다.
weight에 대한 범위를 규제하여 overfiting을 방지하는 것이다.

notation, index 차이

notation: 표기법
index: 색인

profile
DL 공부중

0개의 댓글