pytorch & 심층 신경망
pytorch
인공신경망 구축
딥러닝 모델(AI)을 만들고 학습시키는 데 필요한 모든 수학적 연산과 신경망 레이어를 제공합니다.
텐서(Tensor) 연산
파이썬의 넘파이(NumPy)처럼 다차원 행렬 연산을 수행하지만, 핵심은 GPU 가속을 지원하여 엄청나게 빠른 연산이 가능하다는 점입니다.
자동 미분(Autograd)
AI가 스스로 학습할 수 있도록 역전파(Backpropagation) 미분 계산을 자동으로 처리합니다.
단층 퍼셉트론 & 다층 퍼셉트론
단층 퍼셉트론 ( 은닉층 X )
- 입력 신호(X)에 가중치(W)를 곱하고 편향(b)을 더하여 곧바로 최종 출력 점수를 산출하는 구조
- 직선 형태의 판별선만 그릴수 있어서, 곡선형태나 복잡한 실제 데이터를 분류하는데 한계가 있음
다층 퍼셉트론 ( 은닉층 O )
- 입력 정보가 출력층으로 바로 전달되는 것이 아닌, 중간에 정보를 다각도로 연산하는 은닉 뉴련 (Hidden Neuron)층을 거치는 구조
- 첫 번째 층이 저차원의 특징(선,면)을 감지하면, 은닉층은 이 특징들을 조합하여 사물의 형태, 질감과 같은 고차원 정보를 활성화 함수를 통해 학습
모델 파라미터
- 은닉층을 추가하면서 가중치의 개수가 폭증하게 되고, 이를 통해 늘어난 파라미터만큼 모델은 더 복잡한 데이터의 패턴을 포착할 수 있는 잠재력을 갖게 된다
은닉층 증가에 따른 단점
- 단점
- 과적합의 위험
- 모델의 표현력인 파라미터 수가 과도해지면, 데이터의 본질적인 규칙을 찾는 것이 아니라 훈련 데이터의 학습할 필요 없는 지엽적인 특징까지 학습하게 된다.
- 학습에는 정확도가 100% 가까이 나오지만, 한 번도 보지못한 새로운 데이터를 받게 되면 엉뚱한 답을 내놓으며 예측 성능이 떨어지게 된다
- 연산 비용 및 시간의 급격한 증가
- 은닉층을 하나씩 추가할 때마다 조율해야 하는 가중치와 편향의 개수가 기하급수적으로 늘어남
- 파라미터가 많아질수록 모델을 학습시키는데 더 많은 컴퓨터의 메모리와 더 긴 학습시간이 소요되게 된다
- 기울기 소실
- 층이 깊어지면 출력층에서 계산된 오차가 입력층 쪽으로 역전파 되는 과정에서 점차 희미해지는 현상이 발생한다.
- 앞쪽 층에 있는 파라미터들이 제대로 업데이트 되지 않아서, 층을 많이 쌓았음에도 불구하고 학습이 이루어지지 않는 역효과가 발생할 수 있다.
신경망 학습의 4단계 순환 구조
순방향 예측 Forward Pass
- 입력 데이터가 신경망의 각 층을 통과하며 최종 예측값을 산출하는 과정
손실 계산 Loss Calculation
- 실제 정답과 모델의 예측값을 비교하여 오차의 크기를 하나의 Loss로 산출 한다
역방향 오차 전파 Backpropagation
- 출력층에서 발생한 오차를 입력층 방향으로 거꾸로 전파하면서, 미분의 연쇄법칙을 통해 각 가중치가 오차에 미친 영향도(기울기)를 계산
가중치 조정 Optimizer
- 계산된 기울기를 바탕으로 오차가 최소화되는 방향으로 가중치를 업데이트
역전파의 한계선
- 수식에서 기울기를 계산하는 것만 관여한다
- 학습률, 에포크 등은 전혀 모른채, 현재 상태의 미분값만 컴퓨터 메모리에 기록하고 자기 역할을 끝냄
옵티마이저의 시작점
- 역전파가 전달한 기울기를 받으며 작동을 시작한다
- 하이퍼 파라미터로 설정된 학습률을 이 편미분 값 앞에 곱해주는 주체
- 실제 가중치에서 이 값을 빼 새로운 값으로 업데이트 하는 최종 행위자
옵티마이저 종류
SGD (확률적 경사하강법)
- 현재 위치에서 계산된 경사도가 가장 가파른 내리막 방향으로 일정 보폭만큼 이동
- 구조가 단순하지만, 국소 최적점이나 고윈 현상을 만나면 학습이 정체되거나 진행 방향이 불안정하게 흔들릴 수 있다
Momentum
- 경사하강법에 관성의 개념을 도입하여 이전에 이동하던 방향과 속도를 유지하려는 성질을 더함
- 완만한 경사나 국소 최적점을 관성의 힘으로 통과하여 더 빠르게 최적점에 도달 할 수 있음
Adam (Adaptive Moment Estimation)
- 관성을 고려하는 Momentum과 파라미터별 보폭을 조절하는 RMSprop의 장점을 결합한 하이브리드 알고리즘
- 딥러닝 태스크에서 안정적이고 우수한 성능을 보여주어 기본 옵티마이저로 사용됨
활성화 함수 & 비선형성 주입, ReLU
은닉층 활성화 함수(비선형성 주입)
- 은닉층 선형 연산(W * X + b) 결과에 비선형 특성을 부여하는 역할
출력층 활성화 함수 (결과 해석 및 확률 변환)
- 모델이 최종 계산한 점수(Logits)를 문제의 목적에 맞는 형태로 변환
- 다중 분류에서는 점수들을 0과 1 사이의 값으로 만들고 전체 합이 1이 되도록 확률 분포로 압축하기 위해 Softmax 사용
은닉층에 비선형 활성화 함수가 필수인 이유
- 활성화 함수 없이 선형층을 깊게 쌓아도, 수학적으로는 결국 하나의 단층 선형 모델과 동일해진다
- 모델이 선형 분리가 불가능한 복잡한 현실의 패턴을 학습하기 위해서는, 레이터 사이에 선형 결합을 구부리는 비선형 활성화 함수가 필요
시그모이드의 한계 : 기울기 소실
- 초기 딥러닝에는 은닉층에도 시그모이드 사용
- 시그모이드는 입력 값이 양방향 극단(-5 이하 또는 +5 이상)으로 치우치면 그래프의 경사도(미분값)가 0에 가깝게 평평해지는 특성이 있음