본문 바로가기
Computer Science/Deep Learning

딥러닝과 신경망 ①

by BaekDaBang 2024. 4. 11.

학습 목표

  • 퍼셉트론(perceptron)과 다층 퍼셉트론(multilayer perceptron, MLP) 이해하기
  • 여러가지 활성화 함수(activation function) 이해하기
  • 피드포워드(feedfoward), 오차함수(error function), 오차 최적화(error optimization)를 이용한 신경망 학습 과정 이해하기
  • 역전파 계산 과정 이해하기

 

1. 퍼셉트론

신경망은 많은 수의 뉴런으로 이루어져 있으며, 이들 뉴런은 층 모양으로 배열되어 출력(사람이 해결하고 싶은 문제의 결과)을 예측하기 위한 계산을 수행함

이러한 구조를 다층 퍼셉트론(multilayer perceptron, MLP)라고 부르며, 신경망 구조를 설명할 때 신경망과 다층 퍼셉트론은 같은 의미로 사용

 

(1) 퍼셉트론이란

 

퍼셉트론은 뉴런이 하나뿐인 가장 간단한 형태의 신경망

개념적으로 퍼셉트론은 생물학적 뉴런과 비슷하게 동작

 

생물학적 뉴런

여러 개의 수상돌기로부터 서로 다른 세기의 전기적인 신호를 받음

이 신호 세기의 합이 정해진 임계값을 넘으면 시냅스를 통해 출력 신호를 내보냄

이 출력은 또 다른 뉴런으로 연결되어 같은 과정을 반복

 

인공 뉴런

두 가지 함수를 이용해서 생물학적 뉴런에서 일어나는 현상을 모형화

  • 가중합(weighted sum) : 전체 입력 신호 세기의 합
  • 스텝 함수(step function) : 입력 신호 세기의 합이 임계값을 초과할 때만 출력 신호를 보냄

결합 가중치(connection weights)는 입력 특징이 모두 유용한 것은 아니므로, 각 노드에 부여되는 해당 특징의 중요도

 

퍼셉트론의 구성 요소

입력 벡터 : 뉴런에 입력된 특징 벡터, ($x_1, x_2, x_3, ... , x_n$)

가중치 벡터 : 각각의 입력 $x_n$에는 가중치 $w_n$이 부여되며, 이 가중치는 출력에 대한 해당 입력의 중요도

뉴런 함수 : 입력 신호를 변환하기 위해 가중합 함수와 활성화 함수가 사용됨

출력 : 신경망 설계 시 선택한 활성화 함수에 의해 결정되며, 0과 1의 이진수 혹은 확률 또는 실수 값이 출력 가능

 

(뉴런 함수 중) 가중합 함수

가중합은 선형 결합(linear combination)이라고도 하며, 이는 각 가중치를 곱한 입력값의 합에 편향을 더한 값으로 정의

 

활성화 함수

신경 세포의 뉴런과 신경망의 뉴런 모두 입력 받은 신호의 합을 그대로 출력하는 대신 활성화 함수를 거치며, 활성화 함수는 뇌에서 결정을 내리는 역할을 함

입력 신호의 가중합을 입력 받아 이 가중합이 미리 정해진 임계값보다 크면 뉴런을 활성화시키며, 이 활성화를 실제로 수행하는 것이 활성화 함수의 역할

 

예 : 스텝 활성화 함수

  • 스텝 함수는 가장 간단한 형태의 활성화 함수로, 0 또는 1의 두 가지 값먼 출력
  • 입력이 0 이상이면 발화하고(1을 출력), 그렇지 않으면 발화하지 않음(0을 출력)

 

퍼셉트론에서 편향은 무엇이며 왜 필요한가

퍼셉트론에서 편향이 필요한 이유

 → 편향(b)를 조정해서 데이터에 대한 예측이 더욱 정확하도록 직선의 위치를 조절할 수 있음

퍼셉트론에 편향 주기

 → 항상 값이 1인 입력 노드를 추가하는 방법으로 입력층에도 편향을 도입할 수 있음

신경망(MLP) 학습 과정에서의 편향

 → 편향은 가중치 하나가 추가된 것과 같이 취급하며 가중치와 마찬가지로 비용 함수가 최소가 되도록 최적화

 

(2) 퍼셉트론은 어떻게 학습을 할까?

퍼셉트론은 실수를 통해 배우는 시행착오 전략으로 학습

시행착오 전략은 손실함수(도달해야 하는 목표와 현재의 차이) 값이 최소가 되게 하도록 가중치를 조절하는 것

 

(3) 하나의 뉴런만으로도 복잡한 문제를 해결할 수 있을까?

단일 퍼트론은 선형 함수로 표현 가능하며, 이는 학습된 뉴런이 데이터를 나누는 경계가 직선이라는 의미

데이터가 선형 데이터라면, 하나의 뉴런만으로 문제 해결 가능

데이터가 비선형 데이터라면, 하나의 뉴런만으로 문제 해결 불가능

 

2. 다층 퍼셉트론

선형과 비선형 문제

선형 데이터셋 : 하나의 직선으로 데이터를 분류할 수 있음

비선형 데이터셋 : 하나의 직선으로는 데이터를 분류할 수 없고, 제대로 분류하려면 2개 이상의 직선이 필요 (현존하는 대부분의 데이터셋)

 → 경우에 따라서 수십, 수백 개의 뉴런으로 구성된 신경망 설계가 필요

 

비선형 데이터 모델링한 작은 신경망의 예

  • 삼각형 모양의 경계를 가지는 데이터셋을 분류하려면 3개의 퍼셉트론 필요
  • 은닉층(hidden layer) 하나를 구성하는 3개의 뉴런(퍼셉트론)을 모아 만든 것
  • 은닉층이라는 이름은 학습과정에서 이 층의 출력이 직접 노출되지 않기 때문에 붙은 이름

 

(1) 다층 퍼셉트론의 구조

다층 퍼셉트론 (MLP)

은닉층이 여러 층 구조를 이루도록 뉴런을 쌓은 신경망 구조

각 층은 뉴런 N개로 이루어져 있음

층끼리는 가중치 결합을 통해 서로 연결되어 있음

 

다층 퍼셉트론(신경망)을 구성하는 주요 구성 요소

1) 입력층

  • 이 층에 특징 벡터가 담김

2) 은닉층

  • 층 모양으로 쌓은 뉴런으로 구성됨
  • 입력층과 출력층 사이에 위치하며 학습 과정에서 이층의 입력을 제어하거나 출력을 볼 수 없음

3) 결합 가중치

  • 노드 간의 연결에는 출력에 해당하는 입력의 영향력을 나타내는 가중치가 부여됨
  • 다이어그램에서 노드를 연결하는 그래프의 에지에 해당

4) 출력층

  • 모델의 예측 결과가 출력되는 층
  • 신경망 설계에 따라 출력값은 실수값(회귀문제)이 되거나 일련의 확률(분류문제)이 될 수 있음
  • 출력값의 종류는 뉴런에서 사용하는 활성화 함수의 종류에 따라 결정됨

 

(2) 은닉층이란?

은닉층의 특징

학습 과정을 통해 실제로 학습(최적의 파라미터(가중치)값을 찾는 것)되는 곳

일반적으로 복잡한 데이터에 부합하는 모델을 학습하기 위해서는 은닉층을 늘림

은닉층 노드를 보면 앞쪽 층의 노드는 비교적 간단한 구상적인 특징(직선)을 학습한데 비해 뒤로 갈수록 도형 같은 점점 복잡한 특징(패턴의 패턴의 패턴)을 학습

 

3. 층수와 층을 이루는 노드 수

신경망 설계 (가장 단순한 설계 단계)

신경망의 층수와 층을 이루는 노드 수를 결정하는 것

신경망 설계와 하이퍼파라미터 튜닝에는 정답이 없고 사람의 직관에 의존

최근 신경망을 자동으로 설계하는 연구들이 진행되고 있음

 

심층 신경망

은닉층이 2개 이상인 신경망

신경망의 층수가 깊을수록 복잡한 학습 데이터에 부합

심층 신경망 설계 시 신경망 층수(은닉층)를 무작정 늘리는 것이 반드시 좋은 것은 아님

  • 층수가 많을수록 계산 비용이 많이 소요됨
  • 심층 신경망 모델의 층수가 많아져 학습데이터에 지나치게 부합(overfitting)해버리면 (데이터를 암기해 버리면) 새로운 데이터에 대한 예측이 오히려 부정확해짐

 

신경망 설계 팁

신경망 학습 데이터에 비해 너무 단순해도 안되고 너무 복잡해도 안됨

다른 사람이 구현에 성공한 신경망 설계(baseline)을 참고하여 출발점을 잡는 게 좋음 (논문 특허, 책 등과 같은 문헌을 참고)

베이스라인 모델을 기준으로 학습 및 테스트 데이터의 성능이 너무 낮으면 층수를 늘리고, 학습데이터에 대한 과적합의 징조가 나타나면 층수를 줄여 모델을 튜닝하는 것이 일반적

 

전결합층 (fully connected layer, FC)

전결합층은 고전적인 다층 퍼셉트론에서 중요시

전결합 신경망은 이전 층의 모든 노드가 각기 다른 층의 모든 층의 모든 노드와 연결된 구조

노드와 노드를 연결하는 에지는 해당 노드의 출력에 대한 중요돌르 나타내는 가중치

전결합 신경망은 ANN, MLP, 피드포워드 신경망(feedfoward network)이라 불리기도 함

 

노드 간의 결합 수 계산 과정 예

 → 은닉층이 2개, 각 층은 5개의 뉴런으로 구성된 신경망 모델

 

(4) 내용 정리

생물학적 뉴런과 신경망 뉴런의 공통점은 1) 입력이 있고 2) 내부적으로 입력에 대한 연산을 통해 출력을 만들어낸다는 점

신경망 뉴런의 계산 과정에는 가중합과 활성화 함수가 사용됨

노드 간의 가중치(해당 특징의 출력에 대한 중요도)는 무작위 값으로 초기화되며, 학습 과정을 통해 점점 특정 값으로 수렴

퍼셉트론은 단일 뉴런으로 구성된 신경망이며, 데이터를 경계로 데이터를 분리하는 선형 함수

비선형 데이터를 분리하려면 여러 개의 뉴런을 묶어 다층 퍼셉트론을 구성해야 함

다층 퍼셉트론 구조는 입력 특징, 결합 가중치, 은닉층, 출력층으로 구성

퍼셉트론의 학습과정 (1) 순방향 계산(가중합과 활성화 함수), (2) 오차 계산, (3) 가중치 업데이트(오차 역전파 계산) 세 단계 반복

 

신경망의 하이퍼파라미터에 대한 몇 가지 중요한 사항

은닉층

  • 은닉층의 수와 은닉층 뉴런 수는 AI모델 설계자 마음대로 늘릴 수 있음
  • 뉴런 수가 많을수록 학습데이터를 잘 학습할 수 있음
  • 하지만. 뉴런이 너무 많으면 학습 데이터에는 높은 성능을 보이지만 새로운 데이터에는 정확도가 떨어지는 과적합이 발생함 (과적합 현상)
  • 즉, 적절한 층수를 결정하려면 작은 규모의 신경망으로 시작해서 성능을 관찰하며 차츰 층을 늘려가는 방법이 좋음 (가장 간단한 신경망 설계법)

 

3. 활성화 함수

단일 퍼셉트론 연산인 선형 결합을 비선형 모델로 만드는 역할을 수행

활성화 함수는 전이 함수(transfer function)라 부르며, 비선형성(nonlinearity)을 갖는다고 함

출력값을 특정 구간 안으로 제약하는 효과도 있음

 

(1) 선형 전달 함수 (linear transfer function)

항등 함수(identity function)

입력을 그대로 출력하는 함수로, 활성화 함수가 없는 효과를 냄

여러 층을 쌓아도 가중 평균의 배율을 조정하는 효과만 있고, 비선형성 도입 불가

선형 함수의 도함수는 상수이기 때문에 입력과 아무런 상관이 없고, 역전파 계상할 때 기울기도 항상 동일한 값이 되며, 이는 오차를 줄일 수 없어 좋은 학습 모델이 될 수 없음

 

(2) 스텝 함수 (step function)

헤비사이드 스텝함수

0과 1 두 가지 값만 출력함

입력이 x>0이면 발화(1 출력), x<=0이면 발화하지 않음(0 출력)

주로 이진 분류 문제에 사용됨

예시) 참 또는 거짓, 스팸 메일 또는 스팸 메일 아님, 합격 또는 불합격 등

 

(3) 시그모이드(sigmoid) / 로지스틱(logistic) 함수

Sigmoid 함수는 모든 입력 값 (-~)을 특정 구간(0~1)으로 바꿔주므로 출력값에 극단적인 값이나 예외 값이 존재하지 않음

Sigmoid 함수는 함수의 그래프가 매끄러운 S가 곡선을 그리기 때문에 S형 커브라고도 부름

주로 이진 분류에서 두 클래스의 확률을 구할 때 사용됨

 

(4) 소프트맥스(softmax) 함수

Sigmoid 함수의 일반형

3개 이상의 클래스를 대상으로 각 클래스의 확률을 구할 때 사용

출력값은 0에서 1 사이이며, 각 클래스 확률의 총합은 항상 1

주로 다중 분류 문제(multiclass classification)에 사용됨

 

(5) 하이퍼볼릭 탄젠트(tanh) 함수

tanh 함수는 sigmoid 함수를 변형시킨 버전

→ -1부터 1 사이의 값을 출력 (sigmoid 함수는 0부터 1 사이의 값을 출력)

 

tanh 함수는 sigmoid 함수에 비해 은닉층에서 더 좋은 성능을 보임

→ 학습 데이터의 평균이 sigmoid 함수에서는 0.5에 가까워지는 데 비해 tanh 함수는 0에 가까워지므로, 데이터를 중앙에 모으는 효과가 있어 다음 층의 학습에 유리함

 

입력값이 매우 크거나 입력값이 매우 작을 때 함수의 기울기가 매우 작아지며(거의 0에 가까워짐), 이는 경사 하강법을 이용한 학습을 느려지게 하는 원인이 됨

sigmoid 함수도 동일한 문제를 가지고 있음

이런 학습이 느려지는 문제는 ReLU 활성화 함수를 사용하여 해결 가능

 

(7) 누설 전류 선형(Leaky RELU) 유닛

ReLU 함수의 단점을 보완한 활성화 함수

  • ReLU 함수는 입력이 음수일때 기울기가 0 (기울기 포화 문제)
  • Leaky ReLU 함수 위의 문제를 해결하기 위해 제안

Leaky ReLU 함수는 입력이 음수인 구간에서 함수 값이 0이 되지 않도록 작은 기울기로 함수 값을 음수로 만듦

드물게 사용되지만 대부분의 ReLU 보다 높은 성능을 보임

 

x<0인 구간에서 기기가 0이 되지 않도록 간의 기기(0.01)를 도입

0.01은 하이퍼파라미터로 사용 가능 하지만 장하지 않음

 

(8) 내용정리

어떤 활성화 함수를 골라야 할것인가
일단 정해진 원칙대로 결정한 다음모델을 튜닝하는 과정에서 필요에 따라 수정해 나가면 됨

 

은닉층

은닉층에는 대부분의 경우ReLU함수(LeakyReLU)를 사용하면됨 

ReLU가 널리 사용되는 이유는 다른활 성화함 수에 비해 계산적으로 유리하기 때문 

또한 큰 입력값에서 sigmoid함수 나tanh함수처럼 함수 값이 포화되지 않아 기울기
소실 문제를 일으킬 가능성이 낮음

 

출력층
상호 배타적인 분류 문제(다중분류문제)라면 softmax함수가 적합

이진분류의 경우 sigmoid 함수도 좋은 선택
회귀문제라면 활성화 함수를 사용하지 않아도
가중합을 그대로 출력하는 노드를 통해 우리가 원하는 연속값을 얻을수  있음 

 

4. 순방향 계산

특징의 선형 결합을 활성화 함수에 통과시키는 계산 과정

순방향 계산 과정은 가중합과 활성화 함수를 연이어 계산하는 과정을 반복하는 형태로 신경망의 각 층을 지나 예측에 이르는 과정

순방향 계산이라는 용어는 정보가 입력층에서 출력층 방향으로 흘러가기 때문에 붙은 이름

 

(1) 순방향 계산 과정

은닉층 2개 짜리 신경망 : 작은 신경망임에도 불구하고 계산이 복잡

행렬을 이용한 계산 : 큰 규모의 계산을 빠르게 수행할 수 있음

 

(2) 특징 학습

은닉층의 노드($a_i$)는 각 층에서 학습된 새로운 특징(feature)을 의미

은닉층의 노드는 볼 수도 없고 제어할 수도 없고 이해할 수도 없음

최종 출려된 예측 결과를 보고 만족스러운 정확도가 나올 때까지 파라미터를 조정하여 학습하는 것이 인공지능의 원리

 

<방 수, 면적, 지역> 특징으로 주택 가격을 예측하는 신경망의 예

3, 2000, 1이라는 입력값을 가지고 새로운 특징(a_1, ..., a_4)을 계산한 뒤, 이 특징을 이용해 예측 결과 $\hat{y}$를 변환

신경망 학습(${w_{11}}^{(1)}, {w_{12}}^{(1)}, {w_{13}}^{(1)}, ..., {w_{34}}^{(1)}$) 과정은 예측 결과($\hat{y}$)를 실제 주택($y$)의 가격에 비교해 그 오차($$)가 최소한으로 작아질 떄까지 이 과정을 반복하는 것

'Computer Science > Deep Learning' 카테고리의 다른 글

CNN(합성곱 신경망) ③ [CIFAR-10]  (0) 2024.04.14
CNN(합성곱 신경망) ② [MNIST]  (0) 2024.04.14
CNN(합성곱 신경망) ①  (1) 2024.04.13
딥러닝과 신경망 ②  (0) 2024.04.12
컴퓨터 비전 입문  (0) 2024.04.10