on
딥러닝 기초
딥러닝 기초
딥러닝은 머신러닝의 일부분이었다가 독립적인 분야가 되었는데, 크게 3가지 이유로 큰 틀을 잡게 되었다.
신경망 (Neural network)
1950년대 고양이 신경세포의 실험을 통해 얻어진 아이디어
오늘날 다층신경망(MLP, multilayer perceptron)의 발전으로 매우 강력한 머신러닝 기술 중 한 가지 >> 머신러닝에서 독립하여 딥러닝이라는 학문으로 발전
단순 계산만 잘 하던 컴퓨터를 사물인식, 분할기술, 자연어 처리 등은 컴퓨터가 잘 못하는 영역까지 사람보다 뛰어난 성과를 보이며 발전 중
Q. 왜 신경망이 다시 대두되었는가?
Keras, Tensorflow와 같은 딥러닝 라이브러리
CUDA (Gpu library, 연산속도 증가 >> 병렬 처리)
ImageNet과 같은 Dataset의 발전
알파고와 같은 인공지능 알고리즘의 출현
퍼셉트론 (Perceptron)
퍼셉트론은 1957년 로젠블라트에 의해 발표된 인공신경망입니다.
>> 퍼셉트론은 신경망의 기본단위 입니다.
Q1. 입력 값 = ? 개, 출력 값 = ? 개
>> 퍼셉트론은 여러 신호 를 받아서 하나 의 결과값 으로 출력한다.
Q2. 퍼셉트론의 학습과정을 통해서 학습되는 것은 000 이다.
(= 여러 신호 를 받아서 각 노드에 가중치 의 값을 계산해 하나의 결과값 으로 출력 하는 것)
위에서 언급했던 순전파 SUM(node*weight)식을 보고 활성화함수를 통과한 값이 임계치보다 크면 0, 작으면 -1을 반환하는 식으로 작동한다.
(각 뉴런에서의 연산값이 정해진 임계값(TLU; Threshold Logic Unit)을 넘을 경우에만 다음 노드들이 있는 층(layer)으로 신호를 전달)
가장 큰 단점으로는 진리표에 있는 XOR연산이 불가능하다는 것이었는데, multi-layer perceptron이 등장하면서 NAND, AND, OR을 섞어 연산하면 가능해지게 되었습니다. >> AND(NAND(x1, x2), OR(x1, x2))
위와 같이 초기 인공신경망 모델의 단점인 XOR연산을 보완할 수 있게 되었다.
오른쪽에 보이는 표는 딥러닝의 기초 원리가 되는 퍼셉트론의 논리게이트이다.
OUTPUT의 결과에 따라 아래와 같이 표현할 수 있다.
A B AND NAND OR XOR 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0
이전까지는 해결하지 못했던 퍼셉트론의 한계를 지적하며 나온 문제가 바로 XOR문제입니다. 정확한 뜻은 exclusive or 를 의미합니다.
이 문제는 AND, NAND, OR을 묶어서 풀게 되면서, 자연스럽게 딥러닝에 집중하게 되었다.
이렇게 MLP(다층 퍼셉트론)의 등장으로 층을 여러개 쌓을 수 있게 되면서, 계산이 일어나는 층이 둘 이상인 신경망을 다층(multilayer) 신경망 이라고 부른다.
>> 입력층을 제외하고 시작하여 3개 이상의 Layer를 갖는 신경망을 딥러닝이라고 부른다.
신경망의 장단점
장점
데이터가 많을 때에만 좋은 도구이자 가장 조악한 방법론이지만,
여러 기법들과 빅데이터를 만나 지금은 실로 엄청난 역할을 수행한다.
신경망 학습은 데이터에서 필요한 특성들을 신경망이 알아서 조합하여 찾아낸다
>> 우리는 최소한의 데이터에 대한 전처리는 해야 하지만 심화된 특성 공학(Feature Engineering)을 사용해 특성들을 찾아낼 필요는 없다는 장점
딥러닝 모델이 다른 머신러닝 모델보다 나을까?
>> 딥러닝은 이미지나 자연어 처리에 특화 되어 있다고 할 수 있다.
딥러닝은 단순한 문제를 풀 때는 쓸모가 없을 수도 있다
어려운 문제를 만났을 때 (사물인식, 음성인식 등에서) 사용할 수 있다.
단점
딥러닝은 단순한 문제를 풀 때는 쓸모가 없을 수도 있다
>> 최종 Boss를 만났을 때 (사물인식, 음성인식 등)" 사용할 수 있다.
신경망의 기본적인 구조
A. 입력층
input layer. 입력되는 값들을 나타내며, 노드의 개수를 조절할 수 없다. 입력값에 따라서 자동으로 정해지는 값이기 때문이다.
입력층은 어떤 계산도 수행하지 않고 그냥 값들을 전달하기만 하는 특징이 있다.
>> 신경망의 층수(깊이, depth)를 셀 때 입력층은 포함하지 않습니다
입력층 유닛의 수 = 특징(차원) 수
B. 은닉층
hidden layer( 계산의 결과를 사용자가 볼 수 없기(hidden) 때문에 이렇게 불림) 로, 노드의 연산이 이루어지는 구간
노드의 개수를 임의로 조절할 수 있다. (각 은닉층의 노드 수)
딥러닝이란 3개 이상의 Layer를 갖는 신경망을 의미
C. 노드
입력되는 벡터 중 하나를 나타내며, 각각 하나씩을 지칭할 때에는 Node(Neuron)라는 이름으로 불려질 수 있다.
D. 출력층
output layer로, 신경망 모델에서 출력값을 의미하고, 이 출력층의 노드개수, 모양에 따라서 모델의 정의가 달라질 수 있다.
출력층 유닛의 수 = 타겟 클래스 수
E. 편향(Bias)
가중합에 더해주는 상수
하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절하는 역할
& 임계점을 얼마나 쉽게 넘을지 말지를 조절해주는 값
F. 가중치 (Weight)
최저의 손실값을 가지는 매개변수
데이터를 각기 다른 비중으로 각각의 노드에 전달시키기 위해 웨이트(weight), 즉 비중(=가중치)을 다르게 한다
G. 활성화함수
풀고자 하는 문제에 따라 다른 여러 종류의 계산식.
가중합을 계산한 후, 어떻게 다음 노드로 보낼것인지를 결정한다.
회귀(linear as default) / 이진분류(sigmoid), 다중분류(softmax)
H. 노드 맵을 전체적으로 보여주고 있다.
batch_size
하나의 Mini-Batch를 몇개의 데이터로 구성할지에 대한 정보
100개의 이미지-라벨이 있는 상황에서 Batch Size를 5로 정했다면 우리의 모델은 한번에 하나의 데이터를 볼때마다 매번 가중치 값을 갱신하지 않고 5개 데이터에 대한 값을 한번에 계산한 뒤 가중치를 갱신해주게 되므로 총 20번의 갱신 과정만을 거치게 됩니다.
iteration
(계산·컴퓨터 처리 절차의) 반복
모델을 학습시키는 단위로, 모든 데이터셋을 전체적으로 이용했을 때를 기준
data # = 100
batch_size=5
iteration = 20
Batch Size가 커질수록 당연히 Iteration의 값은 줄어들고 Batch Size가 작아질수록 Iteration의 값은 늘어납니다.
epoch
모든 데이터값들이 각각 한번씩 예측 모델에 들어온 뒤 weight 값을 갱신하는 주기를 의미
epoch의 수를 변화시키며 더 많이 학습하거나 적게 학습할 수 있고, 하나의 Epoch에서 Local Minima에 갇히더라도 다른 epoch에서 더 낮을 지점을 발견할 가능성이 높다.
신경망의 동작원리
데이터 전처리 및 입력 모델 제작 및 가중치 초기화 모델에 데이터를 넣고 출력값을 얻음 출력값과 레이블(정답지)과 비교 후 Loss 계산 Loss를 반영하여 가중치 업데이트 -> 역전파(BackPropagation) + 경사하강법(Gradient Descent)
다음 시간에는 역전파와 예제 코드로 간단한 모델을 만들어보겠다.
퍼셉트론의 이해 : 입력 값 = ? 개, 출력 값 = ? 개
다층(Multi-Layer) 퍼셉트론의 개념과 딥러닝의 차이점을 설명할 수 있다.
신경망의 기본 구조에 대해서 설명할 수 있다. 뉴런(노드) 연결(가중치,엣지) 입력/은익/출력층
활성함수 : 비선형성을 만들어 주는 구조
퍼셉트론의 학습과정을 통해서 학습되는 것은 000이다.
분류/회귀 정의 리뷰, 결정경계
from http://chal.tistory.com/19 by ccl(A) rewrite - 2021-08-15 21:00:18