본문 바로가기
전공/딥러닝

딥러닝(Deep learning)이란? 초보를 위한 딥러닝 Structure

by 항순 2019. 6. 23.
반응형

Abstract

 

딥러닝을 말씀드리기전에 머신러닝이 무엇인지 대략적으로 확인해보죠.

 

예를 들어 나무와 꽃 사진이 있다고 생각을 해보면 머신러닝은 직접 나무의 특징, 꽃의 특징을 입력시켜 학습을 시킵니다.

 

하지만 딥러닝은 특징을 직접 입력할 필요없이 이미지를 넣으면 저절로 학습한다고 생각하시면 됩니다.

 

딥러닝은 머신러닝의 하위 개념이며 이미지를 직접 처리할 수 있고 더 복잡할 수 있습니다.

 

따라서 딥러닝을 사용하기위해선 고성능의 GPU많은 량의 Dataset이 필요합니다.

 

딥러닝이 머신러닝보다 복잡하고 정확한 결과값을 얻기위해선 많은 량의 데이터가 필요하기 때문입니다. 또한 이러한 데이터를 빠르게 처리하기위해선 고성능의 GPU가 있어야합니다.

 

만약 이 둘이 없다면 머신러닝을 사용해야겠죠.

 


딥러닝 Structure

직접 쓴 숫자 0~9까지 낮은 해상도로 있는 이미지를 판단한다고 생각합시다.

이미지를 input값으로 넣는데 픽셀 하나하나 쪼개서 넣습니다. 만약 784픽셀 흑백 숫자사진이 있다고 생각하면 위와 같이 input으로 들어갑니다. 이러한 input들을 나열한 것이 input layer가 됩니다.

 

작은 원 하나를 뉴런이라고 하고 뉴런안에 담겨있는 수를 그 뉴런의 활성치(Activation)이라고 합니다. 따라서 흰색에 가까워지면 활성치 숫자가 높아지겠죠.

마지막 output값의 뉴런은 0~9까지이고 이 안에 활성치값은 주어진 이미지가 각 숫자일 확률을 나타냅니다.

또한 input layer와 output layer 사이엔 hidden layer라고 합니다.

 

이러한 hidden layer는 위의 사진과 같은 역할을 한다고 생각하시면 되겠습니다.

 

그럼 도대체 이전 layer에서의 활성이 다음 layer에서 활성을 어떻게 이끌까요?

 

우리는 첫 층의 뉴런과 현재 뉴런을 잇는 신경에 가중치(weight)를 부여할 것입니다.

 

첫 층의 각각의 뉴런의 값들을 a1, a2 ,a3 ..., an 으로 생각해봅시다. 두번째 층에서의 뉴런과 첫 층의 뉴런은 연결이 되어있죠.

 

따라서 연결된 선들에는 가중치라고 생각하시면 됩니다.

 

즉 두번째 층의 각각의 뉴런의 값들을 b1, b2, b3, ..., bn 으로 생각한다면 다음과 같이 됩니다.

 

만약 우리가 어떤 특정 부분에 선이 있나를 판별할 땐 특정 부분을 제외한 나머지 부분의 가중치는 0으로 만들어버리고 판단을 하겠죠. 가중치는 이런 역할을 합니다.

 

여기서 b1의 값은 모든 숫자가 될 수 있겠죠? 하지만 이 신경 네트워크는 0부터 1까지의 값을 원합니다.

 

따라서 가중치의 합을 0~1까지 나타내주는 함수에 넣을 것입니다.

 

대표적인 함수로 sigmoid함수가 있습니다.

sigmoid
sigmoid

음수면 0에 가까워지고 양수면 1에 가까워집니다.

이러한 함수들은 여기에 정리가 잘 되어있더군요. 참고하시면 될 거같습니다.

https://ratsgo.github.io/deep%20learning/2017/04/22/NNtricks/

 

딥러닝 학습 기술들 · ratsgo's blog

이번 글은 딥러닝 관련 다양한 학습기술들을 살펴보고자 합니다. 이번 글은 미국 스탠포드 대학의 CS231n과 역시 같은 대학의 CS224d 강좌를 정리했음을 먼저 밝힙니다. 따로 정리할 예정인 배치정규화(batch-regularization)를 제외하고 전반적인 내용을 요약하였습니다. 그럼 시작하겠습니다. 딥러닝의 일반적 절차는 다음과 같습니다. 뉴럴네트워크의 개별 뉴런에 들어오는 입력신호의 총합을 출력신호로 변환하는 함수를 활성화함수(activation

ratsgo.github.io

결론적으로 우리는 가중치와 뉴런의 활성치 곱들의 합을 sigmoid함수에 넣는 것입니다.

하지만 여기서 문제가 있습니다. 가중치와 뉴런 활성치 곱들의 합이 0보다 클 때 다음 layer에서의 뉴런 하나를 활성시키고 싶은 것이 아니라 10보다 클 때 활성을 시키고 싶다고 가정해봅시다.

 

이럴 때 더해주는 값을 bias라고 합니다. 즉 inactive를 위한 bias입니다. 그러므로 아래와 같이 -10을 해준 뒤 sigmoid 함수에 넣어줍니다.

그래서 bias는 의미있는 active를 얻기위해 얼마의 수를 더해야되는지 알려줍니다.

 

결국 첫번째 layer와 두번째 layer를 잇는 선 하나하나의 수만큼 가중치가 존재하고 두번째 layer 뉴런의 수만큼 bias가 존재합니다.

 

이를 matrix로 표현하면 다음과 같습니다.

결국 Network는 변수가 매우 많은 복잡한 함수입니다.  [y1, y2, ..., y9]=f(a1,a2,a3, ..., an)

 

 

 

일단 쓴거라 난잡하네요.. 차근차근 다듬고 보기 쉽고 알기 쉽게 바꿔가도록하겠습니다.

반응형