[Tensorflow]12.DeepLearning


DeepLearning


지금까지 머신러닝(기계학습)에 대해 배웠었는데요~~

이제부터는 딥러닝을 이용해서 학습을 시켜보도록 하겠습니다

그러려면 딥러닝이 무엇인지 어느정도 알아야하는데요!

지금부터 간단하게 알아보겠습니다!!!



딥러닝이란??



딥러닝은 쉽게 말하면 머신러닝(기계학습)을 여러 층에 적용시키는 기술입니다.
머신러닝(기계학습)은 입력(데이터 속성)이 주어지면 바로 출력(예측 값)을 내보내는데,
딥러닝은 입력이 주어졌을 때 나오는 출력 값을 다시 입력 값으로 이용하고 또 출력 값이 나오면 다시 입력 값으로 이용하여 정확도를 높이는 기술입니다.

image



위의 그림과 같이 처음에 입력을 받는 input layer 마지막에 출력 값을 내보내는 output layer 뿐만 아니라,
hidden layer가 존재합니다~~

꼭 그 모습이 인간의 신경 같은데요~ 그래서인지 인공 신경망 또는 Neural network라고 불립니다.

층이 많기 때문에 학습이 컴퓨터 스스로 이루어집니다. 컴퓨터가 스스로 학습하다니….
놀라울 따름입니다. 인공지능이란 인간처럼 행동하는 시스템인데,
딥러닝이 그래서인지 인공지능분야에 많이 사용되고 있습니다.

하지만!!!! 이론 처럼 그렇게 딥러닝 연구가 순조롭지만은 않았습니다.

많은 문제들이 있었는데요~ 그 덕에 제 1의 겨울, 제 2의 겨울이라고 불리우는 암흑 시기가 있었습니다.

심지어 딥러닝(Neural network)이 빛을 보게 된 것은 얼마되지 않습니다.

딥러닝의 문제와 해결책



딥러닝의 대표적인 문제가 hidden 층이 많아지고 복잡해지면 데이터가 손실되어 학습이 제대로 되지 않는 것입니다!!
자세한 것은 생략하기로 하고~~ 문제가 있었다면 해결책이 있겠죠?? 저희는 그것에 집중하도록 할게요!!

딥러닝을 제대로 이용하기 위해서는 대표적으로 두 가지 해결책이 있습니다!!!

1. sigmoid 대신 다른 함수를 사용한다.



hypothesis의 값을 0과 1사이의 수로 나타내기 위해 sigmoid 함수를 썼던 것을 기억하시나요?
hidden 층에서는 그 sigmoid 함수 대신에 relu라는 함수나 다른 함수를 이용하는 것입니다.

2. 좋은 초기값을 사용한다.



항상 저희가 W,b 값을 선언할 때 random 함수를 사용해 초기 값을 아무거나 사용했는데,
Xavier 초기값 등 다른 초기값을 사용하는 것입니다.



이 덕분에 저희는 이론대로 머신러닝을 여러 층에 적용시켜 보다 더 훌륭한 프로그램을 만들 수 있습니다!!

다음 장부터는 딥러닝을 이용하여 tensorflow로 학습하는 방법을 배워보도록 하겠습니다~~