Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

cb

[혼공머신] Chapter 07, 08, 09 딥러닝 본문

ai - study

[혼공머신] Chapter 07, 08, 09 딥러닝

10011001101 2024. 3. 13. 10:41

본 게시물은 <혼자서 공부하는 머신러닝+딥러닝>을 보고 정리한 글입니다. 원본 코드는 책의 저자인 박해선님의 깃허브 코드를 참고하시길 바랍니다.

 

GitHub - rickiepark/hg-mldl: <혼자 공부하는 머신러닝+딥러닝>의 코드 저장소입니다.

<혼자 공부하는 머신러닝+딥러닝>의 코드 저장소입니다. Contribute to rickiepark/hg-mldl development by creating an account on GitHub.

github.com

 


인공신경망(artificial neural network)

먼저, 인공 신경망은 생물학적 뉴런을 본따 만든 머신러닝 알고리즘이다. 인공 신경망 알고리즘을 종종 딥러닝이라고 부르기도 한다.

 

이는 여러 계층으로 이루어진 노드(뉴런)들이 연결된 네트워크이다. 각 노드는 입력을 받아들이고, 이를 처리하여 출력을 생성한다. 인공 신경망은 주어진 입력과 출력 데이터 사이의 관계를 학습하고, 새로운 입력에 대한 출력을 생성할 수 있다.

 

인공 신경망은 보통 세 가지 유형의 계층으로 구성된다.

  1. 입력층: 데이터를 입력받는 계층이다
  2. 은닉층: 입력 데이터로부터 패턴을 학습하는 계층이다. 은닉층은 여러 개가 될 수 있고, 층이 깊어질수록 모델은 더 복잡한 특징을 학습할 수 있다.
  3. 출력층: 최종 결과를 생성하는 계층이다.

인공 신경망에는 여러 종류의 층이 있다. 먼저 밀집층은 가장 간단한 인공 신경망층이다. 밀집층은 뉴런들이 모두 연결되어 있기 때문에 완전 연결 층이라고도 부른다. 밀집층을 사용할 때는 분류하려는 클래스와 동일한 개수의 뉴런을 사용한다.

 

 

원-핫 인코딩은 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두 0으로 변환하는 인코딩 방법이다. 이는 다중 분류에서 출력층에서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해 변환을 시행한다.

 


심층신경망(deep neural network)

심층 신경망은 2개 이상의 층을 포함한 신경망이다. 이는 보통 세 개 이상의 은닉층을 갖는 인공신경망을 지칭한다. 딥러닝에서 "깊게" 쌓인 네트워크라는 의미에서 "깊은 신경망"이라고도 부른다.

 

**활성화 함수(Activation function)**는 입력 신호의 총합을 출력 신호로 변환하는 함수를 의미한다.

 

렐루(ReLU) 함수는 이미지 분류 모델의 은닉층에 많이 사용하는 활성화 함수이다.

  • 함수 형태: f(x) = max(0, x)
  • 미분 형태: f'(x) = 1 if x > 0, 0 if x <= 0

음수 입력에 대해 0을 출력하기 때문에, 학습이 빠르고 경제적이다. 또한 gradient vanishing 문제도 발생하지 않는다. 그러나 출력값이 항상 0 이상이기 때문에, 신경망이 학습하는 동안 가중치들이 업데이트되지 않는 죽은 뉴런(dead neuron) 문제가 발생할 수 있다.

 

 

시그모이드(Sigmoid) 함수는 주로 이진 분류 문제의 활성화 함수로 사용된다.

  • 함수 형태: f(x) = 1 / (1 + exp(-x))
  • 미분 형태: f'(x) = f(x) * (1 - f(x))

시그모이드 함수는 출력값이 0과 1 사이이므로 이진 분류 문제에서 사용된다. 층이 많을수록 활성화 함수의 양쪽 끝에서 변화가 작아 gradient vanishing 문제가 발생한다. 그렇기 때문에 깊은 신경망에서는 성능이 저하될 수 있다는 단점이 존재한다.

이외에도 ELU, LeakyReLU, Hardtanh 등의 활성화 함수가 존재한다.

 

**옵티마이저(Optimizer)**는 신경망의 가중치와 절편을 학습하기 위한 알고리즘 또는 방법을 말한다. 대표적으로 SGD, RMSprop, Adam 등이 있다.

 

 

SGD는 기본 경사 하강법 옵티마이저 클래스 각 배치에서 gradient를 계산하고 이를 이용해 파라미터를 업데이트한다.

 

RMSprop은 매개변수마다 각각의 학습률을 적용하는 방식을 사용하지만, 학습률이 급격하게 작아지는 것을 방지한다.

 

Adam은 RMSprop과 momentum을 합친 것으로, 더 빠른 수렴이 가능하며 기본적으로 모멘텀과 L2 정규화를 적용한다.

 

드롭아웃 (dropout), 조기종료 (early stopping)

 

드롭아웃은 은닉층에 있는 뉴런의 출력을 랜덤하게 꺼서 과대적합을 막는 기법이다. 이는 훈련 중에 적용되며, 평가나 예측에서는 적용하지 않는다 뉴런의 출력을 끄는 비율은 사용자가 임의로 설정할 수 있으며, 일반적으로 0.5의 비율을 사용한다.

 

조기종료는 검증 점수가 더 이상 감소하지 않고 상승하여 과대적합이 일어났을 때, 훈련을 계속 진행하지 않고 멈추는 기법이다. 이렇게 하면 계산 비용과 시간을 절감할 수 있다는 장점이 있다.

 


합성곱 신경망(Convolution network)

합성곱은 입력 데이터에서 유용한 특성만 드러나게 하는 방식이다. 이는 밀집층과 비슷하게 입력과 가중치를 곱하고 절편을 더하는 선형 계산으로 이루어져 있다. 하지만 밀집층과 달리 각 합성곱은 입력 전체가 아닌, 일부만 사용하여 선형 계산을 수행한다.

 

합성곱 신경망 관련 용어

 

필터는 밀집층의 뉴런과 같은 역할을 한다. 필터의 가중치와 절편을 종종 커널이라고 부른다.

 

특성 맵은 합성공 층이나 풀링 층의 출력 배열을 의미한다. 필터 하나 하나가 특성 맵을 만든다. 합성곱 층에서 5개의 필터를 적용하면 5개의 특성 맵이 만들어진다.

 

패딩은 합성곱 층의 입력 주위에 추가한 0으로 채워진 픽셀이다. 패딩을 사용하지 않는 것을 밸리드 패딩이라고 하고, 합성곱 츠으이 출력 크기를 입력과 동일하게 만들기 위해 입력에 패딩을 추가하는 것을 세임 패딩이라고 한다.

 

스트라이드는 합성곱 층에서 필터가 입력 위를 이동하는 크기이다. 일반적으로는 1 픽셀을 사용하여

 

풀링은 가중치가 없고 특성 맵의 가로세로 크기를 줄이는 역할을 수행한다. 대표적으로 최대 풀링/평균 풀링이 있으며 (2,2) 풀링으로 입력을 절반으로 줄인다.

 


순환 신경망(sequential network)

순환 신경망은 순차 데이터를 위한 인공 신경망의 한 종류이다.

 

여기서 순차 데이터는 텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터를 의미한다. 대표적인 순차 데이터로는 글, 대화, 일자별 날씨, 일자별 판매 실적 등이 있다.

 

순환 신경망 관련 용어

 

순환 신경망에서는 층을 이라고 부른다. 일반적인 인공 신경망과 마찬가지로 하나의 셀은 여러 개의 뉴런으로 구성된다.

 

순환 신경망에서는 셀의 출력을 은닉 상태라고 부른다. 은닉 상태는 다음 층으로 전달될 뿐만 아니라 셀이 다음 타임스텝의 데이터를 처리할 때 재사용된다.

 

말뭉치는 자연어 처리에서 사용하는 텍스트 데이터의 모음, 즉 훈련 데이터셋을 일컫는다.

 

토큰은 텍스트에서 공백으로 구분되는 문자열을 말한다. 종종 소문자로 변환하고 구둣점을 삭제한다.

 

단어 임베딩은 정수로 변환된 토큰을 비교적 작은 크기의 실수 밀집 벡터로 변환한다. 이런 밀집 벡터는 단어 사이의 관계를 표현할 수 있기 때문에 자연어처리에서 좋은 성능을 발휘한다.


LSTM(Long Short-Term Memory)

 

기존의 RNN은 긴 시퀀스 데이터에서 장기 의존성(Long-term dependencies)을 잘 학습하기 어려운 한계가 있었기 때문에, LSTM은 이러한 한계를 극복하기 위해 제안되었다.

 

주요 아이디어는 기억 셀(Memory Cell)과 여러 개의 게이트(Gates)를 사용하여 정보를 제어하고 전달하는 것이다. LSTM은 기억 셀을 통해 정보를 추가하거나 삭제하고, 게이트를 통해 이전 정보를 유지하거나 잊어버리는 능력을 갖추고 있다. 이를 통해 장기적인 의존성을 갖는 데이터를 효과적으로 처리할 수 있다.

 

LSTM셀은 은닉 상태 외에 셀 상태를 출력한다. 셀 상태는 다음 층으로 전달되지 않으며 현재 셀에서만 순환된다.

 

 

  • GRU 셀은 LSTM 셀의 간소화 버전으로 생각할 수 있지만 ISTM 셀에 못지않은 성능을 낸다.