반응형
5.인공지능, 머신러닝, 딥러닝
- 딥러닝은 머신러닝의 한 종류로 인공신경망(ANN)에 기반을 둔 학습 방법
- 머신러닝은 정형데이터 학습에 딥러닝은 이미지, 소리, 텍스트와 같은 비정형 데이터 학습에 주로 사용
- 딥러닝 학습에넌 DNN, CNN, RNN, GAN, 전이학습 등의 다양한 종류 있음
- 전이학습 : 풍부한 데이터를 이용해서 학습된 pre-trained model을 가져와 부족한 사용자 데이터 환경에 맞도록 새롭게 모델을 학습시키는 일련의 과정
- 인공신경망(ANN) 모형
- 인공신경망을 이용하면 분류 및 예측을 할 수 있음
- 인공신경망은 입력층, 은닉층, 출력층 3개의 층으로 구성(SLP:은닉층 없음, MLP :1개 이상의 은닉층)
- 각 층에 뉴런(=Perceptron, Node)이 여러 개 포함되어 있음
- 학습: 입력에 대한 올바른 출력이 나오도록 가중치를 조절하는 것
- 파라미터(매개변수) : 가중치(weight)
- 하이퍼 파라미터 : 인공신경망의 학습률(learning rate), 배치크기, hidden unit, hidden layer
*SLP의 한계
- SLP는 단순한 문제 해결만 가능함
- 즉, 1개의 선으로 나눌 수 있는 AND, OR, NOR 등의 문제는 해결할 수 있지만, 두개의 선이 필요한 XOR는 해결할 수 없음 -> 복잡한 문제는 MLP 이용
*인공신경망(ANN)의 학습 방법
- FORWARD PROPAGATION
- 모든 weight(=parameter)의 임의 값 초기화
- 입력(X), weight를 사용하여 예측 값 구하기
- 손실/비용/에러 구하기
- 예측 값과 실제 값을 손실함수에 적용하여 구함
- BACKWARD PROPAGATION
- 손실을 반영하여 weight 값 갱신하기
- 이대, 손실함수에 대한 기울기 미분이 발생
W = W - $\alpha \frac{d}{dW}cost(W,b)$
- 경사하강법
- 비용 함수 기울기를 낮은 쪽에서 계속 이동시켜 극값에 이를 때까지 반복시키는 것
- 비용 함수의 기울기의 최소값을 찾아내는 머신러닝 알고리즘
- 비용 함수 기울기를 최소화 하기 위해 parameter(=Weight)를 반복적으로 조정하는 과정
- 경사 하강법 과정
- 다음의 과정을 n회 반복 수행, 비용 함수 기울기 최소값을 향해 수렴
- 임의의 Weight값으로 초기화
- Cost 계산(적절한 Cost Function 사용)
- Weight 값 갱신 : W = W -$\alpha \frac{d}{dW}cost(W,b)$
- n, learning rate(hyper-parameter) 가 적절해야 함
- 다음의 과정을 n회 반복 수행, 비용 함수 기울기 최소값을 향해 수렴
*퍼셉트론(Perceptron)
- 생물학적 뇌의 뉴런을 모방하여 만든 인공신경망(ANN)의 기본 단위
*기울기 소실
- 역전파 알고리즘은 출력층에서 입력층으로 오차 gradient를 흘려 보내면서, 각 뉴런의 입력 값에 대한 손실함수의 gradient를 계산 함
- 이렇게 계산된 gradient를 사용하여 각 가중치 매개변수를 업데이트 해 줌
- 다층신경망에서는 역전파 알고리즘이 입력층으로 갈 수록 Gradient가 점차적으로 작아져 0에 수렴하여, weight가 업데이트 되지 않는 현상
- activation function으로 sigmoid 함수를 사용할 때 발생 -> 해결을 위해 ReLU 등 다른 함수 사용
*신경망 활성화 함수
- 출력을 내보낼 때 사용하는 삼수로, 주로 비선형 함수를 사용 함
- 가중치 값을 학습할 때 에러가 적게 나도록 돕는 역할을 함
- 풀고자 하는 문제 종류에 따라 활성화 함수의 선택이 달라지며, Layer마다 다르게 사용할 수 있음
- 함수 종류 : 선형-항등, 비선형-계산, 부호, sigmoid, ReLU, Leaky ReLU, Maxout, tanh, softmax
*활성화 함수의 종류
- 항등함수 : X값 그대로
- 계단함수 : 0 또는 1
- 부호함수 : -1 또는 1
- sigmoid함수 :
- 연속형 0~1, Logistic 함수라 불리기도함
- 선형적인 멀티-퍼셉트론에서 비선형 값을 얻기 위해 사용
- $\frac{1}{1+e^{-x}}$
- softmax함수 :
- 각 클래스에 속할 확률 값을 출력함, 속할 확률이 가장 높은 클래스로 예측함
- 모든 logits(출력)의 합이 1이 되도록 output을 정규화 한 것
- sigmoid 함수의 일반화된 형태로 결과가 다 범주인 경우 각 범주에 속할 사후 확률을 제공하는 활성화 함수
(3개 이상)
- ReLU(Rectified Linear Unit)
- 학습이 빠르고 미분값이 0,1 두 개 중 하나이기 때문에 자원 소모가 적어 일반적으로 쓰는 함수 중 한가지
- x<0 인 경우 Dying ReLU 현상이 발생함
- Leaky ReLU
- 0보다 작은 입력에 대해 기울기를 주어 Dying ReLU 현상 보완
- ELU(Exponential Linear Unit)
- 입력이 음수일때 exponential을 활용한 함수를 사용하여 Dying ReLU 문제 해결
- X<0일때 지수함수 계산 비용 발생
- tanh(Hyperbolic Tangent)
- sigmoid의 중심 값을 0으로 이동한 것
- 학습시간 지연 해소, Vnishing Gradient 발생
*손실함수
- Loss/Cost : 실제 값과 예측 값의 차이로 '오차'를 의미함
- Loss Function의 예 : 분류 - Cross Entropy, 회구 - Mean Square Error
*Learning Rate(학습률)
- 학습의 속도를 나타내는 것, weight update 시 함께 곱해지는 값
- Learning Rate가 작을 경우 wieght 변경 속도가 느려 학습시간이 오래 걸릴 수 있음
- Learming Rate가 클 경우 곡선의 최저점을 이탈 할 수 있다
*Mini batch 학습
- 모든 학습 데이터에 대해 loss를 계산하는 것은 시간이 오래 걸리므로, 데이터의 일부를 사용해 학습한다.
- Epoch
- 모든 DataSet이 Netural Network 전체에 대한 학습을 1회 수행한 것
- 1Epoch만으로 학습은 충분하지 않음
- Batch Size
- Single Batch 내 학습용 Data Size
- Iterations
- 1 Epoch를 달성하기 위한 batch 개수
- Iterations = 전체 데이터수 / Batch_Size
*Normalization
- 학습을 더 빨리하고, local minima에 빠지는 가능성을 줄이기 위해 사용함
- MinMaxScaler : 0~1사이 값으로 변경, StandardScaler : 평균0, 분산 1의 값으로 변경
- Unnomalized
- 타원 모양
- 수평으로 이동할 때와 수직으로 이동할 때 변화량 불균형 발생으로 Gradient
Descnet 알고리즘을 적용하기 어려울 수 있음 - Learning rate를 작게 해야 함
- Normalized
- 구모양
- Gradient Descent를 적용하여 쉽고 빠르게 최적화 지점을 찾을 수 있음
- Learning rate에 민감하지 않음
- Unnomalized
*Optimization(경사하강법)
- Learning Rate 및 Gradient 부분 값을 적절하게 수정하여 학습 속도를 높이고 안정적인 결과를 얻고록 함
- Plateau(평지) 현상 해결
- ZigZag 현상 해결 : w 갱신 행렬의 부호가 동일하여 w 목표점을 지그재그로 찾아가는 현상
- 극소점을 찾은 뒤 더 이상 학습이 되지 않는 현상 해결
- Optimizer의 종류
- Gradient 수정 : Momentum, NAG
- Learning Rate 수정 : AdagRrad, AdaDelta, RMSProp
- Gradient, Learning Rate 모두 수정 : Adam, Nadam
- Optimizer의 종류
*다층신경망학습과 Layer, Node
- 다층신경망은 단층신경망에 비해 훈련이 어려움
- 레이어가 많아지면 기울기 소실 문제가 발생할 수 있음
- 은닉층 수와 은닉 층의 노드수 결정은 분석가가 분석 경험에 의해 설정
- 은닉 층 노드가 너무 적으면
- 네트워크가 복잡한 의사결정 경계를 만들 수 없음
- Underfitting 문제 발생
- 은닉 층 노드가 너무 많으면
- 복잡성을 잡아낼 수 있지만, 일반화가 어렵다
- 과적합(Overfitting)문제 발생
- Layer, Node를 사용한 과적합 해결
- 매개변수의 수를 줄인다
- 은닉층 수를 줄인다
- 노드 수를 줄인다
- 반복, 데이터, 규제를 사용한 과적합 해결
- epoch 수를 줄인다
- early stopping 기법을 사용한다
- 데이터의 양을 늘인다
- Regularization을 사용한다
- Regularization의 종류
- L1/L2 Regularization
- Dropout
- DropConnect
- 은닉 층 노드가 너무 적으면
*Regularization -Overfitting 해결법
- 데이터 양을 늘림
- Regularization 사용
- Batch Normalization : Mini-batch의 평균, 분산을 이용해 Normalization 실행
*인공 신경망 모형의 장/단점
- 장점
- 변수의 수가 많거나 입,출력변수 간에 복잡한 비선형 관계에 유용
- 이상치 잡음에 대해서도 민감하게 반응하지 않음
- 입력변수와 결과변수가 연속형이나 이산형인 경우 모두 처리 가능
- 단점
- 결과에 대한 해석이 쉽지 않음
- 최적의 모형을 도출하는 것이 상대적으로 어려움
- 모형이 복잡하면 훈련 과정에 시간이 많이 소요되고, 과적합되지 쉬움
- 데이터를 정규화 하지 않으면 지역해에 빠질 위험이 있음
DeepLearning
- 딥러닝 - DNN(Deep Neural Network)을 이용한 머신러닝 기법
- DNN은 hidden layer가 2개 이상인 Network을 의미함
- 다층의 layer를 통해 복잡한 데이터 학습이 가능하도록 함
- 알고리즘 및 GPU 발전이 딥러닝의 부흥을 이끔
- Input, Hidden, Ouput layer로 구성된 모형으로 각층을 연결하는 Node 가중치를 학습함
- Overfitting이 심하게 일어나고 학습시간이 오래 걸림
*CNN
- Convolution Neural Networks, 합성곱 신경망
- 이미지 데이터 사용
- classfication, localization, object detection, instance segmentation
- Convolution Layer, Fully Connected Layer로 구성
- 구조
- Input Image : 이미지를 하나 입력으로 취함
- Convolutional Layers : Feature Extraction을 수행하는 layer
- Convolution Layer + ReLU : Feature 추출, 의미 없는 특징을 zero화
- Pooling Layer : Feature 개수 축소, 중요한 Feature만 유지 (선택적 작업)
- Fully-Connected Layer : 비선형 조합 학습 및 분류 작업 수행
- Output Class: 작업의 결과
- 구조
*Convolution(합성곱)
- Filter(=Convolution Kernel Matrix)를 적용하여 입력에 대해 특정 성분에 대해서만 뽑아내는 작업
- 예) 사선 정보, 직선 정보, 동그란 정보, 각진 정보...
- 알고 싶은 특정 성분에 따라 필터의 모양이 다름
- CNN은 필터를 갱신하면서 학습하는 것임
- Image에 특정 필터를 Convolution한 결과를 Feature Map 이라고 함
- Feature Map은 Image에 적용된 Filter 개수 만큼의 Channel을 갖게됨
- n개의 Filter가 적용된 경우 n개 Channel
- Stride : Filter를 순회하는 간격, Stride가 2로 설종되면 2칸 씩 이동하면서 Convolution 하게 됨
*Padding
- Convolution Layer에서 Fiter를 사용하여 Feature Map을 생성할 때, 이미지 크기가 작어지는 것을 막기 위해 테두리에 Filter 크기를 고려하여 특정 값(일반적으로 0 )으로 채우는 작업
*Pooling
- Convolution Layer의 Output을 Input으로 받아 Feature Map의 크기를 줄이거나 특정 데이터를 강종하는 용도로 사용
- Max Pooling, Min Pooling, Average Pooling 등의 종류가 있음
- Pooling Size를 Stride로 지정하며, 이 크기에 따라 줄어드는 양이 결정됨
- 입력 데이터의 행, 열 크기는 Pooling 사이즈의 배수(나누어 떨어지는 수)이어야 함
*Fully Connected Layer
- Flatten Layer : CNN의 데이터를 Fully Connected Neural Network의 형태로 변경하는 layer
- 입력 데이터의 Shape 변경만 수행
- Softmax Layer : Flatten Layer의 출력을 입력으로 사용하며, 분류 클래스에 매칭 시키는 Layer
- 분류 작업을 실행해 결과를 얻게 됨
*RNN(Recurrent Neural Networks, 순환 신경망)
- 이전 상태가 다음 판단에 영향을 주는 경우 사용
- RNN, LSTM, GRU : 자연어, 음성신호, 주식과 같은 연속적인 데이터에 적합한 모델
- RNN Cell: 출력을 다시 입력으로 사용하여 기억 하도록 한 것
- LSTN Cell : 장기, 단기 기억을 구분하여 저장하는 방식
- GRU Cell : LSTM의 간소화된 버전
- Sequence Gneration : 책, 코딩, 음악, 춤, 영상 등을 학습하여 비슷하게 만들어 냄
- Image Captioning :Image -> Sequence of words
- Question Anserwing, Machine Translation
- 장기 의존성 문제
- 은닉층의 과거 정보가 마지막까지 전달되지 못하는 현상
- 시퀀스 데이터의 길이가 길어질수록 과거의 중요한 정보에 대한 학습이 어려워지는 문제
*LSTM
- RNN의 장기 의존성 문제를 해결한 문제
- 3개 Gate(Forget, Input, Output) 및 Cell state, Cell state Update, Hidden State로 구성
*GRU
- RNN의 장기 의존성 문제를 해결한 모델
- 2개 Gate(Reset, Update)
반응형
'Certificate > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사] [3-3] 빅데이터모델링 - 분석 기법(1/4) (0) | 2023.09.07 |
---|---|
[빅데이터분석기사] [3-2] 빅데이터모델링 - 데이터 분할 (0) | 2023.09.01 |
[빅데이터분석기사] [3-1] 빅데이터모델링 - 분석 모형 설계 (0) | 2023.09.01 |
[빅데이터분석기사] [2-3]빅데이터 탐색 통계기법 이해 (0) | 2023.08.29 |
[빅데이터 분석기사] [2-2] 빅데이터 탐색 데이터 탐색 (0) | 2023.08.29 |