딥러닝이란 무엇인가?
머신러닝에 인간의 뇌를 모방한 신경망 네트워크를 더한것이다.
머신러닝이 축적된 데이터를 토대로 상관관계와 특성을 찾아내고 여기에 나타난 패턴을 통해 결론을 내리는 기술인 데 반해 딥러닝은 축적된 데이터를 분석만 하지 않고 이 데이터를 통해 학습까지 하는 기계학습 능력을 활용해 최적의 결론을 내린다.
딥러닝의 구성요소
-
인공신경망 입력층, 은닉층, 출력층 등으로 구성되며, 각 층에 여러 개의 뉴런이 있어 데이터를 처리한다.
-
층구조 다양한 층의 구성으로 데이터를 학습하고 인식한다.
Perception
그림에서 표현된 작은 “원”들을 뉴런 or 노드 라 함
노드에서 뻗어진 가지들에서 고유한 가중치(wieght) 가 곱해지고 더해진다.
가중치란?
전체에서 가지는 중요성을 높이기 위해 특정부분이나 요소에 일정한 수치를 더하는 것을 말한다.
뉴런에서 시냅스의 연결강도(두께, 개수) 역할 임계값을 넘을 경우에만 다음 층(Layer) 로 신호가 전달됨
입력층(Input Layer)
시스템 외부로 부터 입력자료를 받아블여 시스템으로 전송
은닉층(Hiddne Layer)
시스템 안쪽에 존재하며 입력값(선형 결합의 형태)을 처리(비선형 함수 사용)한뒤 결과를 또 다른 은닉층이나 출력층에 전달
딥러닝(deep learning)은 사실 두 개 이상의 (이때 부터 깊다(deep)라고 한다) 은닉층들을 가진 신경망
은닉층에는 대부분 활성함수(activation function)가 존재하는데 활성화함수는 풀고자 하는 문제에 따라 다른 종류를 사용
활성함수란?
인공신경망에서 활성화 함수는 다음 층으로 신호를 얼마만큼 전달할지를 결정
활성함수로 인해 바뀐 값에대해 우리가 원하는 예측값을 구하기위해
Back Propagation
인공 신경망에서 학습하는 동안 가중치와 편향을 조정하기 위한 알고리즘. 이 알고리즘은 오차를 신경망의 뒤로 전파하여 각 계층의 가중치와 편향을 조정하며, 신경망이 입력과 출력 사이의 관계를 학습할 수 있도록 도와준다.
(편향(bias): 상수, 최종적으로 출력되는 값을 조절하는 역할)
-
입력 데이터를 신경망에 주입하여 출력을 계산한다.
-
출력 값과 실제 값 간의 오차를 계산한다. (Loss Fuction 사용)
-
오차를 출력층에서 입력층으로 거꾸로 전파한다. 이때, 각 계층의 가중치에 따라 오차를 분배한다.
-
전파된 오차를 사용하여 가중치와 편향을 조정하기 위해 경사 하강법(Gradient Descent)을 사용한다.
(경사 하강법은 오차를 최소화하기 위해 가중치를 조금씩 업데이트하는 방법.)
위의 과정을 반복하여 오차를 최소화하고 신경망의 성능을 향상시킨다.
Loss Function
신경망 학습의 목적함수로 출력값(예측값)과 실제값의차이를 계산하는. 오차를 구하는 방법이며 계산하는 방법.
Gradient Descent
손실함수의 현 가중치에서 기울기(Gradient)를 구해서 Loss를 줄이는 방향으로 업데이트해 나가는 것. (Chain Rule 사용)
출력층(Output Layer)
시스템 출력 값을 산출
딥러닝의 장단점
장점
높은 정확도, 자동화 가능, 다양한 분야에 활용 가능
단점
대량의 데이터에 의존, 학습 시간이 오래 걸림, 불투명성 높음
딥러닝을 위한 필수 도구와 프레임워크
-
텐서플로우 (tensorflow) Google에서 제공하는 오픈소스 라이브러리로, 인공신경망 구성 및 학습을 위한 도구
-
Keras 초보자 친화적인 인터페이스를 제공하며 TensorFlow 등 다양한 백엔드 엔진과 호환 가능
-
Pytorch Facebook에서 제공하는 오픈소스 딥러닝 프레임워크로, 쉬운 구조 생성, 배치 학습 등의 특징
https://gamma.app/public/--wcp8974h8255jjg?mode=doc