1980년대에 깊은 신경망과 관련한 아이디어가 등장했었다. 그러나 그레이디언트 소멸 문제, 작은 훈련집합, 과다한 계산 시간이라는 한계점에 의해서 실현이 불가능했다. 이후, 지속적인 연구를 통해 성능이 더 좋은 활성함수, 다양한 규제 기법 등을 개발하고 값싼 GPU의 등장과 인터넷으로 인한 학습 데이터 증가에 의해서 딥러닝의 가능성을 열게 되었다.
4-1. 깊은 다층 퍼셉트론(DMLP)
깊은 다층 퍼셉트론(Deep Multi-Layer Perceptron, Deep MLP)은 기본적인 다층 퍼셉트론의 구조를 확장하여 더 많은 은닉 층을 포함시킨 인공신경망 모델이다. 이러한 구조는 더 복잡한 패턴과 데이터의 특징을 학습할 수 있도록 설계되었다.
4-1-2. 구조와 동작
[그림4-3]이 보여주는 바와 같이 깊은 MLP는 단순히 한두 개의 은닉층만 가진 MLP에 은닉층 여러 개를 추가한 구조이다. 이 그림은 L-1개의 은닉층을 가지며, 마치막에 출력층이 있어서 총 L개의 층을 가진다. 앞으로 깊은 MLP를 줄여서 DMLP라 부른다.
또한, DMLP는 MLP에 은닉층을 추가한 것 뿐이기 때문에, 전방 계산을 위한 식은 MLP가 사용했던 3장의 식을 식 (4.2)와 같이 단순히 확장만 해주면 된다. 이 식은 DMLP의 동작을 함수 f로 간결하게 표기한 것인데, f는 x를 o로 매핑하는 함수로 볼 수있다.
4-1-2. 학습
DMLP의 학습 알고리즘도 역시, MLP의 오류 역전파 알고리즘과 크게 다르지 않다. 단지 그레이디언트 계산과 가중치 갱신을 더 많은 단계에 걸쳐 수행한다는 점만 다르다. [알고리즘 4-1]을 보면 이를 확인할 수 있다. 출력층에서 은닉층으로, 은닉층에서 입력층으로 두 단계 역전파하던 과정이 출력층에서 은닉층으로, 은닉층에서 이전 은닉층으로 여러 단계를 거쳐 입력층까지 역전파하는 더 긴과정으로 바뀐 것뿐이다.
4-2. 컨볼루션 신경망(CNN)
앞 절에서 등장한 DMLP는 완전연결 구조여서 가중치가 너무 많아 복잡도가 높다. 따라서 학습이 매우 더디고 과잉적합에 빠질 가능성도 크다. 이 절에서 학습할 컨볼루션 신경망(Convolution Neural network)은 부분연결 구조여서 모델의 복잡도를 획기적으로 낮춘다. 그런데 낮은 복잡도에서도 모든 층은 좋은 특징을 추출해야 한다는 본연의 임무에 충실해야 한다. CNN은 영상처리나 신호처리 분야에서 일반적으로 사용하는 컨볼루션 연산을 적용함으로써 모델 복잡도를 낮추고 좋은 특징을 추출하는 두 가지 목적을 충실히 달성한다.
4-2-1. CNN의 구조
[그림 4-5]는 DMLP와 CNN에서 이웃한 두 층을 떼어내 그들 사이의 연결 구조를 비교한다. (a)의 DMLP는 왼쪽 층의 모든 노드와 오른쪽 층의 모든 노드가 연결된 완전연결(fully connected) 구조를 가진다. 반면, (b)의 CNN은 오른쪽 층 j번째 노드에 대하여 i-1, i, i+1 위치에 있는 노드 3개에만 연결된 부분연결(partially connected) 구조를 가진다. 이처럼 CNN이 DMLP의 구조와 비교하였을 때 모델 복잡도가 낮음을 확인할 수 있다.
또한, CNN (Convolutional Neural Network)은 핵심 구성 요소로 컨볼루션(합성곱)층과 풀링(서브샘플링 또는 다운샘플링)층을 갖는다. 이는 이미지 인식, 분류 등의 과제에서 매우 중요한 역할을 한다. 이 두 층은 각각 입력 이미지에서 유용한 특성을 추출하고, 이를 통해 네트워크가 복잡한 패턴을 학습할 수 있도록 돕는다. 다음 절에서 이 두 층에 대한 학습을 하고자 한다. 컨볼루션층과 풀링층을 포함한 CNN의 전체 구조는 아래와 같다.
4-2-2. 컨볼루션층
컨볼루션 층은 입력 이미지에 여러 개의 필터(또는 커널)를 적용하여 이미지의 특징을 추출한다. 이 과정은 다음과 같이 이루어진다:
1. 필터(커널) 정의 : 필터는 작은 크기의 윈도우(예: 3x3, 5x5)로, 각각의 필터는 특정 종류의 특징(예: 가장자리, 질감 등)을 감지하는데 사용된다.
2. 슬라이딩 윈도우 : 필터를 이미지 전체에 걸쳐서 이동시키면서 각 위치에서 필터와 해당 부분의 이미지 간의 요소별 곱(element-wise multiplication)을 계산하고, 그 결과를 합산한다.
3. 특성맵 생성 : 이 과정을 통해 생성된 출력을 특성 맵(Feature Map)이라고 하며, 원본 이미지에서 필터가 감지한 특징을 표현한다.
4. 비선형 활성 함수 적용 : 대부분의 경우 ReLU (Rectified Linear Unit) 활성화 함수가 적용되어 음수 값을 제거하고 비선형성을 추가한다.
4-2-3. 풀링층
풀링 층은 특성 맵의 크기를 줄이면서 중요한 정보는 유지하는 역할을 한다. 이 층의 주요 목적은 컨볼루션 층으로부터 생성된 특성 맵의 차원을 축소하여 계산량을 감소시키고, 과적합을 방지하는 것이다. 풀링 층은 다음과 같이 동작한다:
1. 윈도우 크기 선택 : 풀링은 보통 2x2 또는 3x3 크기의 윈도우를 사용한다.
2. 최대 풀링 또는 평균 풀링 적용
A. 최대 풀링(Max Pooling) : 윈도우 내에서 가장 큰 값을 선택하여 대표 값으로 사용한다. 이 방법은 특성 맵에서 가장 두드러진 특징을 강조한다.
B. 평균 풀링(Average Pooling) : 윈도우 내의 모든 값의 평균을 계산하여 대표 값으로 사용한다. 이 방법은 특성들을 더 평활화하는 효과가 있다.
3. 슬라이딩 윈도우 : 선택된 윈도우를 특성 맵 위에서 겹치지 않게 이동시키면서 각 위치에서 풀링을 수행한다.
4-3. CNN 발전 과정
합성곱 신경망(CNN, Convolutional Neural Network)의 발전은 컴퓨터 비전과 딥러닝 분야에서 혁신적인 진보를 이끌었다. 특히, 이미지 인식과 분류에서 중요한 역할을 하는 몇 가지 주요 모델들이 등장하였다. 여기에는 AlexNet, VGGNet, GoogleNet, ResNet 등이 포함되며, 각각의 모델은 성능 향상과 아키텍처 개선에 중요한 기여를 하였다.
1. AlexNet(2012) :
AlexNet은 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 우승하였다. 이 모델은 8개의 학습 층(5개의 합성곱 층과 3개의 완전 연결 층)으로 구성되어 있었으며, ReLU 활성화 함수, 오버랩이 있는 맥스 풀링, 드롭아웃, 데이터 증강 등을 사용하여 과적합을 감소시키고 성능을 향상시켰다. AlexNet의 성공은 깊은 CNN이 대규모 이미지 데이터셋에서 뛰어난 결과를 달성할 수 있음을 입증하였다.
2. VGGNet(2014) :
VGGNet은 AlexNet에 이어 2014년에 등장하였다. 이 네트워크는 합성곱과 풀링 층의 구조를 더 단순화하여 동일한 크기의 필터(3x3)를 사용한 여러 층을 쌓는 방식을 채택하였다. VGGNet은 16층 또는 19층 버전으로 구현되었으며, 더 깊은 네트워크 구조가 더 좋은 성능을 낼 수 있음을 보여주었다. 하지만, VGGNet은 매우 많은 파라미터를 가지고 있어 계산 비용이 큰 단점이 있었다.
3. GoogleNet(2014) :
GoogleNet(또는 Inception v1)은 동시에 등장한 VGGNet과 함께 주목을 받았다. 이 모델은 인셉션 모듈이라는 개념을 도입하였는데, 이는 다양한 크기의 필터를 하나의 모듈 안에서 병렬로 처리하여 더 효과적인 특징을 추출할 수 있도록 설계되었다. GoogleNet은 깊으면서도 계산 효율성을 개선하여, 성능을 유지하면서도 파라미터의 수를 크게 줄였다.
4. ResNet(2015) :
ResNet은 Microsoft Research 팀에 의해 개발되었으며, 152층이라는 깊은 네트워크 구조를 가능하게 한 주요 혁신은 잔차 연결(residual connection)이었다. 이 구조는 각 층의 입력을 몇 층 뒤의 출력에 직접 더하는 방식을 통해 신경망의 학습을 용이하게 하였다. ResNet은 심층 신경망에서 발생할 수 있는 소실된 기울기 문제를 효과적으로 해결하였으며, 이후의 많은 네트워크 설계에 영감을 주었다.
4-4. 생성모델 GAN
생성적 적대 신경망(Generative Adversarial Network, GAN)은 2014년 이안 굿펠로우(Ian Goodfellow)에 의해 처음 제안되었다. GAN은 머신러닝에서 매우 혁신적인 접근 방식이며, 두 개의 신경망, 즉 생성자(Generator)와 판별자(Discriminator)가 서로 경쟁하면서 학습하는 구조이다.
- GAN의 구성
1. 생성자(Generator) : 임의의 노이즈로부터 데이터를 생성하는 역할을 한다. 생성자는 실제 데이터와 유사한 데이터를 생성하려고 시도하며, 그 성능은 판별자가 얼마나 그것을 진짜로 인식하는지에 따라 결정된다.
2. 판별자(Discriminator) : 입력된 데이터가 실제 데이터인지 생성자가 만들어낸 가짜 데이터인지를 구분하는 역할을 한다. 판별자는 가능한 한 정확하게 진짜 데이터와 가짜 데이터를 구별하려고 노력한다.
- GAN 학습 과정
GAN의 학습은 두 네트워크가 서로의 성능을 향상시키는 방식으로 진행된다. 생성자는 점점 더 현실적인 데이터를 생성하도록 학습하고, 판별자는 더 정교하게 진짜와 가짜를 구분하도록 학습한다. 이러한 과정은 적대적 학습이라고 불리며, 이는 두 네트워크가 서로를 '속이려고' 하면서 발전하는 동적인 과정이다.
GAN은 이미지 생성, 음성 합성, 비디오 생성 등 다양한 분야에서 활용된다. 특히, 사진의 스타일을 변환하거나, 고해상도 이미지를 생성하는 데 탁월한 성능을 보인다. 또한, 데이터 증강, 의학적 이미지 분석, 심지어 예술 작품 생성에 이르기까지 그 활용 범위는 계속 확장되고 있다
'AI > Study Note' 카테고리의 다른 글
[기계학습 - 오일석] 6장. 비지도 학습 (1) | 2024.06.18 |
---|---|
[기계학습 - 오일석] 5장. 딥러닝 최적화 (2) | 2024.05.02 |
[기계학습 - 오일석] 3장. 다층 퍼셉트론 (0) | 2024.02.22 |
[기계학습 - 오일석] 2장. 기계학습과 수학 : 최적화 (1) | 2024.02.21 |
[기계학습 - 오일석] 1장. 소개(2) (0) | 2024.02.21 |