티스토리 뷰
머신러닝과 딥러닝의 차이점?
- 공통점 : 데이터를 분석하고 패턴을 찾아내는 것을 목표로 한다.
- 차이점 : 목적과 방법 (인간 개입의 여부❗)
- 머신러닝
- 목적 : 컴퓨터가 데이터를 이용하여 학습하고, 이를 기반으로 새로운 데이터를 분석하거나 예측하는 알고리즘을 개발
- 방법 : 인간이 직접 특징을 도출할 수 있도록 설계한다. (= 예측값 출력)
- 딥러닝
- 목적 : 인공신경망을 사용하여 데이터를 분석하고, 보다 더 복잡하고 정교한 모델을 만들어 패턴을 찾아낸다.
- 방법 : 인공지능이 스스로 일정 범주의 데이터를 바탕으로 공통된 특징을 도출하고, 그 특징으로 예측값을 출력한다.
(사람보다 빠른 학습 속도를 보이며, 원하는 빅데이터를 학습 후 활용이 가능하다) - 인공신경망(ANN : Artificial Neural Network)이란?
: 인공지능 분야에서 가장 중요한 알고리즘 중 하나로, 인간 뇌의 신경망을 모방하여 만들어졌다.
데이터에서 패턴을 학습하고 이를 바탕으로 새로운 데이터를 예측하거나 분류하는 등의 작업을 수행한다.
- 여러 개의 노드(node)로 구성되어 있으며, 이를 뉴런(neuron)이라고 한다.
- 각 뉴런은 여러 개의 입력값을 받아들이고, 이를 가중치(weight)와 함께 계산한 후, 출력값을 내보낸다.
- 이렇게 계산된 출력값은 다시 다른 뉴련의 입력값이 된다.
- 이 과정을 여러 층(layer)으로 구성된 신경망에서 반복하여, 입력값으로부터 출력값을 예측하는 모델을 만든다.
퍼셉트론(Perceptron), 초기의 인공신경망
- 가장 단순한 형태의 순방향 신경망(Feedfoward) 네트워크 "선형분류기"로도 볼 수 있다.
- 입력값과 가중치의 곲을 더한 후, 이를 임계치와 비교하여 출력값(0 또는 1)을 결정하는 모델.
이를 통해, 입력값에 대한 이진분류를 수행할 수 있다. - 단순형태이기 때문에 딥러닝과 같은 복잡한 모델을 만들 수는 없지만 여러 개의 퍼셉트론을 결합하여 다층 퍼셉트론(Multi-Layer Perceptron)을 만들어, 비선형적 문제를 해결하는데 활용이 된다.
인공신경망(ANN)의 문제점?
문제점 1. 학습데이터에 따른 과적합 문제가 있다.
: 데이터양이 많지 않은 경우, 학습이 학습데이터에만 특화되어 새로운 데이터를 받았을 때 성능이 떨어질 수 있다.
❗해결방안
: 사전훈련(제한 볼츠만 머신, RBM : Restricted Boltzmann Machine)을 통해 과적합을 방지할 수 있다.
- RBM : 층간 연결을 없앤 형태로, 순방향 신경망의 각 층을 효과적으로 사전훈련 한다.
- 이 과정을 통해 과적합을 방지할 수 있는 수준으로 초기화 지점을 잡고, 이를 다시 감독된 역전파를 통해 학습한다.
문제점 2. 학습 시간이 너무 느리다.
❗해결방안
: 그래픽 카드의 발전으로(GPU, CUDA) 학습시간이 빠르게 개선되었다.
딥러닝의 연산 : 순전파와 역전파
- 순전파(Forward Propagation)
- 인공신경망에서 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정이다.
- 입력값은 입력층, 은닉층을 지나며 각 층에서의 가중치와 함께 연산된다.
- 출력층에서 모든 연산을 마친 예측값이 도출된다.
- 역전파(Back Propagation)
- 순전파와 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 한다.
- 역전파를 통해 가중치 비율을 조정하여 오차감소를 진행하고 다시 순전파 진행으로 오차감소를 확인할 수 있다.
- 역전파의 과정
- 1. 출력층의 오차 계산 : 실제값과 예측값 간의 오차 계산
- 2. 이전 층으로 오차 역전파 : 이 때 전파되는 오차는 해당 뉴런의 출력값과 가중치의 곱
- 3. 가중치 업데이트 : 학습률(learning rate)이라는 하이퍼 파라미터를 사용하여 가중치 업데이트의 정도 조절
- 4. 1~3 과정(순전파와 역전파의 과정)을 반복하며 모델을 학습
활성화 함수(Activation Function)란?
- 활성화 함수는 인공신경망에서 입력값을 출력값으로 변환하는 함수이다.
- 입력값과 가중치의 곱과 편향(bias)을 더한 값을 활성화 함수에 입력하면, 해당 함수가 적용된 출력값이 생성된다.
- 인공신경망의 비선형을 담당한다.
선형함수만을 사용하면 인공신경만은 단순한 선형 변환이 되어버리기 때문에 비선형적인 패턴을 학습할 수 없다. - 대표적인 활성화 함수
- 시그모이드 함수 : 구간 [0,1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화 한다.
- ReLU(Rectified Linear Unit) : 입력값이 0 이상이면 그대로 출력, 0 이하면 0으로 출력한다.
- 하이퍼볼릭 탄젠트(Tanh) : 구간 [-1, 1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화 한다.
- 딥러닝에서는 주로 ReLU 함수가 사용된다. 계산이 간단하고 학습이 빠르게 이루어지기 때문이다.
그러나 입력값이 음수인 경우 출력값이 0이 되어 일부 뉴런이 죽어버리는 현상이 발생할 수 있다.
❗해결방안 : Leaky ReLU, ELU 등의 변형함수 사용 !
활성화 함수 1. 시그모이드(Sigmoid)
: 구간 [0,1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화 한다.
- 장점 : 모델 제작에 필요한 시간을 줄인다. tanh과 비교하였을 때 상대적으로 느리지만 세심하게 학습한다.
- 단점 : 미분 범위가 짧아 정보가 손실될 수 있다. (Gradient Vanishing = 기울기 소실 현상)
- 활용 : 로지스틱 회귀, 이진분류(Binary Classification) 등
활성화 함수 2. 하이퍼볼릭 탄젠트(tanh)
: 구간 [-1, 1] 내에서 S자 모양의 곡선을 그리며 출력값을 정규화하는 쌍곡선 함수 중 하나.
- 장점 : 데이터 중심을 0으로 위치시키는 효과가 있기 때문에, 다음 층의 학습이 더 쉽게 이루어진다.
시그모이드보다 출력 범위가 넓고, 경사면이 큰 범위가 더 크기 때문에 더 빠르게 수렴하여 학습 성능이 올라간다. - 단점 : 미분 범위가 짧아 정보가 손실될 수 있다. (Gradient Vanishing = 기울기 소실 현상)
기울기 소실(Gradient Vanishing)이란?
: 깊은 인공신경망을 학습할 때 역전파 과정에서 입력층으로 갈수록 기울기가 점차 작아지는 현상 (ANN 신경망의 문제점으로 대두)
- 역전파 알고리즘은 출력값과 정답(label) 간의 오차를 최소화하기 위해 가중치를 조절한다.
- 이 때, 입력층과 가까운 층들은 오차를 전파할 때 미분값이 곱해지는데, 이 과정에서 미분값이 0에 수렴하여 문제가 발생한다.
- 입력층에 가까운 층들에서 가중치 업데이트가 제대로 되지 않으면 결국 최적의 모델을 찾을 수 없게 된다.
- 학습과정에서 기울기 소실로 인해 최적값의 도출이 어려워진다.
- 기울기 폭주(Gradient Exploding)
: 반대의 경우로, 기울기가 점차 커지더니 가중치들이 비정상적으로 큰 값이 되며 발산되는 것. (RNN에서 쉽게 발생)
활성화 함수 3. 렐루(ReLU)
: 입력값이 0 이상이면 그대로 출력, 0 이하면 0으로 출력한다.
- 장점 : 기울기 소실 문제를 해결한다. 미분 계산이 훨씬 간편해져서 학습 속도가 빨라진다.
- 단점 : Dying Relu (x가 0보다 작거나 같으면 항상 동일한 값인 0을 출력한다)
- 활용 : 기울기 소실을 완화하는 간단한 방법으로 은닉층의 활성화 함수로 ReLU나 Leaky ReLU를 사용할 수 있다.
활성화 함수 4. 리키렐루(Leaky ReLU)
: 렐루의 Dying ReLu 현상을 해결하기 위해 나온 ReLU 변형함수
입력값이 음수일 경우 0이 아닌 0.001과 같은 매우 작은 수를 반환한다. (x가 0보다 작아도 정보가 손실되지 않는다)
딥러닝의 학습과정
: 출력값과 실제값을 비교하여 그 차이를 최소화하는 가중치(weight)와 편향(bias)의 조합을 찾는 것.
- 가중치는 오차를 최소화하는 방향으로 모델이 스스로 탐색한다. (= 역전파)
- 오차계산은 실제 데이터를 비교하며 손실함수를 최소화하는 값을 탐색한다. (알맞은 손실함수의 선정은 매우 중요함)
- 알맞은 손실함수를 찾아 최소화하기 위해 고안된 방법이 경사하강법이며, 옵티마이저로 경사하강법의 원리를 이용한다.
손실함수 (Loss Function)
- 손실함수는 실제값과 예측값의 차이를 수치화해주는 함수이다.
- 손실함수 J(W)가 2차 함수와 같이 볼록 함수의 형태라면 미분으로 손실이 가장 작은 가중치(W*)을 찾을 수 있다.
- 2차 함수는 "아래로 볼록한 형태의 2차 함수 그래프에서 기울기(미분)가 0인 지점에서 최솟값을 갖는다."
- 손실함수의 종류
경사하강법(Gradient Descent)이란?
- 경사하강법은 손실함수의 현재 위치에서 조금씩 손실이 낮아지는 쪽으로 가중치를 움직이며 최솟값을 찾는 방법이다.
- 딥러닝에서는 손실함수의 형태가 복잡하기 때문에 계산량이 매우 증가하며, 미분이 0이 되는 값이 여러 개 존재한다.
그렇기 때문에 미분만으로는 최솟값을 찾기 어렵고, 경사하강법과 같은 최적화 방법을 이용하는 것이다. - 전제
- 해당 함수의 경사를 쉽게 구할 수 있다.
- 함수가 거의 모든 구간에서 연속적이고, 미분이 가능하다.
확률적 경사하강법(Stochastic Gradient Descent)
- 경사하강법과 다르게 한 번 학습할 때 모든 데이터에 대해 가중치를 조절하는 것이 아닌,
랜덤하게 추출한 일부 데이터에 대해 가중치를 조절하며 최적이 해를 찾는다. - 장점 : 속도 개선
- 단점 : 극소(local minima) 문제 = 최적 해의 정확도가 낮다.
극소(local miniam) 문제
- 함수 내의 극값 정의
- 극소점(local minimum point) : 주위의 모든 점의 함수값 이하의 함수값을 갖는 점.
- 최소점(global minimum point) : 정의역의 모든 점의 함수값 중에서 최솟값을 갖는 점.
- 옵티마이저는 손실함수에서 최소점이 최소가 되는 부분을 찾아야하지만, 수많은 극소점 중 최소점에 해당하지 않는 극소점을 찾는 문제가 발생한다.
최적화 함수, 옵티마이저(Optimizer)
: 데이터와 손실함수를 기반으로 모델이 업데이트되는 방식.
- 손실함수를 최소화하는 방향으로 가중치를 갱신하는 알고리즘
- 경사하강법에 기반을 둔 옵티마이저 : SGD, RMSProp, Adagrad, Adam 등
- 옵티마이저의 종류
Modules | Functions | ||
schedules | tf.keras.optimizers.schedules 네임스페이스용 공개 API | deserialize(...) | serialize함수의 역함수 |
Classes | get(...) | Keras Optimizer 인스턴스를 검색 | |
Adadelta | 두 가지 단점을 해결하기 위해 차원당 적응 학습률을 기반으로 하는 확률적 경사하강법 | serialize(...) | 옵티마이저 구성을 JSON 호환 python dict로 직렬화 |
Adagrad | 훈련 중 매개변수가 업데이트되는 빈도에 따라 조정되는 매개변수별 학습률이 있는 옵티마이저 | ||
Adam | 1차 및 2차 모멘트의 적응적 추정을 기반으로 하는 확률적 경사하강법 | ||
Adamax | Adam의 변형으로, 임베딩이 있는 모델에서는 Adam보다 성능이 우수 | ||
Ftrl | FTRL 알고리즘을 구현하는 옵티마이저 | ||
Nadam | Nesterov 모멘텀이 있는 Adam | ||
Optimizer | Keras 옵티마이저의 기본 클래스 | ||
RMSprop | Adagrad의 개선 방식으로 AdaGrad의 Root Square에 가중평균 Mean이라는 개념을 추가하여 그라디언트 제곱의 이동(할인된) 평균 유지 | ||
SGD | 경사하강법(운동량 포함) 옵티마이저 |
딥러닝의 과정
'TIL & WIL > Deep Learning' 카테고리의 다른 글
CNN 간단히 알아보기 (0) | 2023.04.17 |
---|---|
✨ 딥러닝 : 인공신경망 및 과정 (0) | 2023.04.11 |
TensorFlow - Regression 실습 (1) 선형회귀 (0) | 2023.04.11 |
TensorFlow - Classification 실습 (0) | 2023.04.11 |
TensorFlow - beginner 실습 (0) | 2023.04.11 |