perceptron : 신경망(딥러닝)의 기원이 되는 알고리즘
다수의 신호를 입력으로 받아 하나의 신호를 출력
입력을 컴퓨터가 논리적으로 인식하는 방식 : 논리 게이트
• AND 게이트
모든 입력이 1일때 작동(=1)
• OR 게이트
모든 입력이 0일때 0
• XOR 게이트
입력 두 개 중 하나만 '1'일때 작동(=1)
AND, OR 게이트는 하나의 decision boundary로 두 클래스를 나눌 수 있지만, XOR은 직선 하나로 1과 0을 정확히 분리할 수 없음.
ex. (0,1)과 (1,0)은 1이지만, (0,0)과 (1,1)은 0이므로, 가운데가 비어있는 형태
→ XOR 게이트는 비선형적으로 분포된 데이터,
선형(직선) 하나로는 두 클래스를 나눌 수 없음.
단층 퍼셉트론(하나의 선형 분류기)로는 XOR 문제 학습 불가,
다층 퍼셉트론(은닉층이 있는 신경망)에서 해결해야함.
• DNN(딥러닝)
입력층과 출력층 사이에 은닉층이 여러 개 있는 신경망
뉴런을 여러 층 쌓아 비선형 분리가 가능
입력 값이 연산 결과에 미치는 영향력을 조잘하는 요소
각 노드에서 들어오는 신호에 가중치를 곱해서 모두 더한 합계
w : 가중치, b: bias
가중합에 더해 주는 상수.
모델이 입력이 0이어도 출력을 내도록 하거나, 결정 경계를 원점에서 떨어뜨려
데이터 분포에 더 잘 맞는 형태로 학습하도록 함.
전달 함수에서 전달받은 값을 출력할 때 일정 기준에 따라 출력 값을 변화시키는 비선형 함수
리키 렐루(Leaky ReLU) 함수
입력 값이 음수이면 0이 아닌 매우 작은 수를 반환(ex. 0.001)
![]()
음수 영역에서도 조금이라도 출력(기울기)을 내보내므로, 뉴런이 완전히 죽는 상황을 해결
소프트맥스(softmax) 함수
입력 값을 0~1 사이에 출력되도록 정규화하여 출력 값들이 총합이 항상 1이 되도록 함
주로 은닉층에는 ReLU, Leaky ReLU, tanh 등을 사용하고,
출력층에는 소프트맥스, 시그모이드 등의 활성화 함수를 적용함.
학습을 통해 얻은 데이터의 추정치가 실제 데이터와 얼마나 차이가 나는지 평가하는 지표
: 두 단계(순전파, 역전파)로 진행
입력층·은닉층·출력층 각각이 하나의 층이고, 그 안에는 여러 뉴런이 있을 수 있음
입력층에서부터 은닉층, 출력층으로 순차적으로 신호(값)를 전달
은닉층과 출력층의 뉴런들은 가중치(weight), 편향(bias), 활성화 함수를 사용해 출력을 생성.
이후 모델의 출력과 실제 정답(레이블)을 비교해, 오차를 구함
계산된 손실(오차)을 기준으로, 출력층 → 은닉층 → 입력층 방향으로 거슬러 올라가며, 각 가중치와 편향이 오차에 얼마나 기여했는지(=기울기)를 Chain Rule로 계산
활성화 함수가 적용된 은닉층 개수가 많을수록 데이터 분류가 잘됨.
훈련 데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가하는 현상
→ 해결 방법 : dropout
모델이 과적합되는 것을 피하기 위해
Backpropagation 과정에서 출력층에서 은닉층 방향으로 오차가 거슬러 올라갈 때, 기울기가 점점 작아져 0에 가까워지는 현상
→ 학습이 거의 되지 않는 상태.
sigmoid , tanh 대신 ReLU 활성화 함수 사용
• 경사 하강법(Gradient Descent)
손실 함수(cost function)가 최소가 되는 지점을 찾기 위해
기울기(Gradient)가 양수면 w를 감소시키고, 음수면 w를 증가시켜,
Cost(w)가 최소화되는 방향으로 가중치(w)를 이동
• 성능 관련 문제
• 배치 경사 하강법 (Batch Gradient Descent, BGD)
모든 샘플의 오차를 계산해 그 평균 또는 합을 바탕으로 Gradient를 구하는 방법
W←W−η∇J(W)
W: 가중치
η: 학습률(learning rate)
∇J(W): 전체 데이터를 이용해 계산된 손실 함수 J(W)의 기울기
BGD에서는 한 에포크(전체 데이터를 1회 학습)마다 한 번 가중치를 업데이트전역 최솟값을 향해 비교적 안정적으로 이동(노이즈가 적음).
but, 매번 전체 데이터를 로드해 기울기를 계산하므로, 계산량이 많고 학습 속도가 느림
• 확률적 경사 하강법 (Stochastic Gradient Descent, SGD)
전체 데이터가 아니라, 개별 데이터(혹은 작은 배치)를 사용하여 기울기를 계산하고 즉시 업데이트하는 방법
개별 데이터 포인트를 이용해 기울기를 계산하므로, 업데이트마다 변화가 큼.
수렴 과정에서 진동(불안정한 움직임)이 발생.
but, 더 빠르게 최적점에 도달할 가능성이 있음.
• 미니 배치 경사 하강법 (Mini-Batch Gradient Descent)
전체 데이터셋을 여러 개의 작은 배치(mini-batch)로 나눈 뒤,
각 미니배치에 대해 Gradient를 구해 평균을 내어 모델 파라미터를 업데이트하는 방법
여러 샘플(mini batch)을 묶어 평균 기울기를 사용하므로,
진동은 적당히 완화되면서도, 업데이트가 빠르고 빈번하게 일어남.
BGD처럼 노이즈가 적고 안정적이면서,
SGD처럼 계산이 빠르고 대규모 데이터에도 효율적
머신러닝·딥러닝 모델이 데이터를 더 잘 이해하고 학습할 수 있도록 원본 데이터에서 의미 있고 유용한 특징(Feature)을 골라내는 과정
과거에는 SVM, 나이브 베이즈(Naive Bayes), 로지스틱 회귀 등 전통 머신러닝 알고리즘을 사용하여 도메인 전문가가 직접 데이터에서 유의미한 특징을 추출.
→ 딥러닝에서는 자동으로 특징을 학습
모두 심층 신경망을 사용
입력층과 출력층 사이에 여러개의 은닉층을 포함하는 인공 신경망
은닉층이 깊어지면, 단순 선형 분류로는 처리하기 어려운 비선형적 패턴을 학습 가능
합성곱(convolution) 연산과 풀링(pooling) 연산을 사용해, 이미지나 영상 같은 2차원 데이터를 효율적으로 처리하는 신경망 구조.
입력 이미지를 합성곱 레이어에 전달.
합성곱 레이어는 여러 개의 필터를 이용해 로컬 패턴을 감지 → 특징 맵을 생성.
풀링 레이어로 특징 맵 크기를 줄여, 중요한 특징만 유지하면서 계산 효율을 높임.
시계열(time series) 데이터나 순서가 중요한 데이터(자연어, 음성 등)를 학습하기 위한 인공 신경망
이전 시점의 상태(hidden state)를 현재 시점에 재사용하여, 시간적(순서) 의존성을 학습할 수 있음
시계열 길이가 길어질수록, 역전파가 반복되어 기울기가 0에 가까워지는 기울기 소멸 현상이 발생. 이로 인해 먼 과거 정보가 제대로 학습되지 않음
→ LSTM(Long Short-Term Memory), GRU(Gated Recurrent Unit) 등 게이트 구조를 추가한 변형 RNN을 사용하여 극복
가시층(visible layer)과 은닉층(hidden layer) 두 층으로 구성된 모델
은닉 뉴런들 간, 가시 뉴런들 간에는 연결이 없음
제한된 볼츠만 머신을 블록처럼 여러 층으로 쌓은 형태로 연결된 신경망