CS/Advanced Machine Learning

[기계학습 심화] Neural Network2

grammiboii 2025. 6. 6. 01:51

History

AlexNet에 사용된 Layer들을 보면

크게 4가지가 있고 가장 기초가 되며 중요한 Layer들이다.
하나씩 알아보자

Fully Connected Layer

이름 그대로 모든 Input과 Output이 연결되어 있는 Layer이다.

Fully Connected Layer에 들어가기 전 input값들은 1차원으로 변환하는 작업을 거친다.




W(Weight)가 학습 대상이며
200 * 200 이미지로 예시를 들면 output이 200 * 200 이라 했을때
200 * 200 * 200 * 200 = 1,600,000,000 의 파라미터가 필요하다.
(16억) (1.6 billion)

이는 현대 컴퓨터 성능으로는 사실상 불가능한 학습 파라미터 개수이다.
이를 개선하기 위해 Convolutional Layer가 등장했는데, 그전에 Locally Connected Layer를 알아보자

Locally Connected Layer

Locally Connected Layer는 Fully Connected Layer와 비슷하지만
Filter를 사용해 파라미터를 줄여보자는 아이디어이다.

200 * 200 이미지에 10 * 10 filter, stride = 10으로 사용한다고 하면
output : 20 * 20
parameter : 200 * 200 * 10 * 10 = 4,000,000
(400만) (4 million)

많이 줄이기는 했는데, 조금 부족하다.
이제 Convolutional Layer를 알아보자

Convolutional Layer

Convolutional Layer는 Locally Connected Layer에서 Weight를 공유하자는 아이디어이다.
그러니깐 parameter는 필터 사이즈만큼만 필요하다.
같은 예시로 200 * 200 이미지에 10 * 10 filter, stride = 10으로 사용한다고 하면
output : 20 * 20
parameter : 10 * 10 = 100

엄청나다!

이제 다른 예시를 보면
32 * 32 * 3 RGB 이미지 input에
5 * 5 * 3 filter, stride = 1로 사용한다고 하면 (padding = 0 padding은 나중에 나옴)
output : 28 * 28 * 1
parameter : 5 * 5 * 3 = 75

참고로 RGB여서 추가된 하나의 차원은 depth라고 하기도 하고 channel이라고도 한다.




이런식으로 되는거다.

Padding

패딩은 간단한데 필터떄문에 데이터가 너무 작아지는 것을 방지하기 위해
주변에 0을 추가하는 것이다.
예시는 padding = 2인데 주변에 2줄을 추가한다

Output size

Padding, stride를 고려해 output size를 직접 구해도 되지만
귀찮으니 공식을 외우면 참 좋다

Transposed Convolution

Transposed Convolution은 Convolution의 반대 개념이다.
너무 작아진 사이즈를 복구하는 방법이다.

수학적으로 convolution의 완전 역연산은 아니지만
개념적으로 역연산이라고 생각하면 좋다.
output size 구하는 공식도 input, output 위치를 바꿔주면 유도 가능

Pooling Layer

Pooling Layer도 별거 없다. 데이터를 더 작게 만들어주는 역할이고, convolutional layer

Max Pooling

Softmax Layer

Softmax Layer는 분류 문제에서 사용되는 Layer이다.
마지막에 붙여주는 Layer
Output을 확률로 바꿔주는 역할을 한다.

Neural Network 구성 (AlexNet)

전체적인 뉴럴 넷 구성은 이런식으로 구성한다.
초반에 Conv layer로 feature를 추출하면서 크기를 줄여주고
그 다음에 Fully Connected Layer로 분류
마지막에 Softmax Layer를 거치며 확률로 바꿔준다.

이때 linear layer만 사용하면 layer를 쌓는게 의미가 없어지므로
ReLU, Sigmoid, Tanh 같은 activation function을 (non-linear function)을 뒤에 붙여준다.