Deep-learning

딥러닝 간단 정리(1)

멜론이즈 2021. 7. 20. 17:44

1.텐서플로우. Tensorflow 

   

딥러닝에 대해 공부를 하다보면 텐서플로우를 접하고 사용하게 된다.

 

먼저 텐서플로우란 무엇일까?

 

텐서플로우(Tensorflow)는 구글(Google)에서 공개한 라이브러리(사람들이 미리 짜 놓은 코드들)이다.

텐서플로우는 여러 언어를 지원하지만 파이썬(Python)을 최우선으로 지원하고 대부분의 편한 기능들이 파이썬 라이브러리로

구현되어 있어서 파이썬에서 개발하는 것이 편하다.

 

텐서플로우는 보통 산업계나 학계에서 주로 쓰이며 텐서플로우 2.0이 출시되면서 CPU버전과 GPU버전이 통합되었다.

 

2.케라스. Keras

또 텐서플로우를 활용해 학습하다 보면 케라스라는 것, 또한 접하게 되는데

먼저 케라스(Keras)는 쉽게 말해 텐서플로우(Tensorflow) 위에서 수행하는 것이고,

파이썬으로 작성된 오픈 소스 신경망 라이브러리이다.

 

원래는 케라스가 없이도 동작할 수 있는(먼저 모델을 만들고 session을 만들어 동작하는)구조 였지만

텐서플로우 2.0 stable 버전부터는 사실상 전부 케라스를 통해 작동하도록 바뀌었다.

 

또한 텐서플로우, CNTK, Theano,MXNet등을 백엔드로 하여 각 라이브러리를 쉽게 사용할 수 있으며 안정화도 시켜주는 역할도

한다.

 

3.학습률. Learning rate

딥러닝을 통해 프로그램을 만들 때 학습률(Learning rate)라는 파라미터를 쓰게 된다.

먼저 신경망의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것인데,

이는 곧 매개변수의 최적값을 찾는 문제이며, 이런 문제를 최적화(Optimization)이라 한다.

 

결국 최적화를 할 때 미분을 이용하여 가장 낮은 값을 구하는 것이 목적인데

이때 만약 학습률이라는 매개변수 값 없이 기울기만 빼면 실제의 최저점을 찾지 못하는 경우가 발생하는데

그 이유는 기울기가 0이라 해서 반드시 그 지점이 최저점이라고 할 수 없기 때문이다.

위의 그림처럼 Plateau 지점에서 기울기가 0이 되어 Local minimum(실제 최솟값)이 아님에도 최솟값이라고 인식하고 학습을 중단하는 경우가 발생한다.