데이터과학 유망주의 매일 글쓰기 — 61일차

배우는 자(Learner Of Life)
5 min readDec 21, 2020

--

깊게 배운다는 것

#딥러닝, #신경망

신경망(Neural Network)의 모습

오늘 한일:

오늘은 대망의 딥러닝을 처음으로 배우는 날이었다. 그동안 딥러닝에 대해 많은 협박(?)을 받았지만, 선생님의 배려 때문인지 오늘은 그렇게 어려운 시간을 보내진 않은 것 같다.

딥러닝의 기본적인 개념인 신경망의 구조를 제대로 이해하는 일이 오늘의 가장 중점적인 학습 내용이었던 것 같다. 그래서, 이 개념을 다시 한번 리뷰하는 뜻에서 딥러닝의 가장 기본적인 개념들에 대해 리뷰를 해 보려한다.

딥러닝(Deep Learning)

일단 딥러닝은 인공지능(AI)로 대표되는 분야 중에서도, 머신러닝(Machine Learning) 분야에 속한 영역으로써, 사람의 뇌를 모사한 신경망을 통해 모델을 학습시켜 예측을 하는 것을 말한다. 신경망의 은닉층(Hidden Layer)가 많을수록 더 깊은(deep) 신경망이라고 한다. 신경망은 뇌과학에서 뇌를 구성하는 가장 기본적인 단위의 세포(Neuron)들로 이루어져있으며, 딥러닝에서는 이를 모방하여 Perceptron이라는 것을 통해 신경망을 구성한다. 보통 신경망은 하나의 입력층(Input Layer), 하나 이상의 은닉층(Hidden Layer), 하나의 출력층(Output Layer)로 구분된다. 모두 하나만을 가지고 있는 가장 단순한 형태의 신경망은 Perceptron이라고 부른다.

가장 단순한 형태의 신경망 (Perceptron)의 Node Map (1)

입력값들은 weight라는 가중치를 가지며, 이 가중치들은 딥러닝을 통해 최적화 시켜야할 파라미터이다. 또한 입력 값에 대해 bias = 1의 값이 입력된다. 활성화함수(activation function)은 만약 이 가중치의 결합들이 정해진 값보다 클 경우, 1을 리턴하고, 그렇지 않으면 0을 리턴할 수 있다. 이는 활성화함수를 어느 것을 사용하느냐에 따라(예: ReLU, Sigmoid 등) 달라진다. 활성화함수는 특정한 임계치(threshold) 이상을 달성하는 값에 한해, fire를 하는 것(1값 리턴)으로 응답하며, 분류 문제에서는 신경망의 최종 출력을 결정하는 선택자같은 역할을 한다.

신경망에서 활성화함수를 통해 입력값과 가중치들의 합에 대한 최종 출력을 결정한다.

마지막으로, 무엇보다 신경망도 데이터가 얼마나 좋으냐에 따라 성능이 좌우된다. 그러므로, 최적의 데이터 셋을 찾기위한 Cross Validation과정이 필요하다. Cross Validation을 통해 가장 최적의 학습 데이터와 테스트 데이터가 어떤 묶음(batches)인지 찾는다. 이후 이렇게 해서 정해진 훈련 데이터를 신경망 모델에 입력하면, 정해진 테스트 데이터를 사용하여 최적의 성능을 낼 수 있다. 결국, 머신러닝 모델의 최적화 방법도 딥러닝에서 적용될 수 있다.

앞으로 할일:

딥러닝 엔지니어가 되려면, 무엇보다도 위 기본적인 용어들과 개념들을 잘 이해하고 있다는 것을 면접에서 보여줄 수 있어야한다고 한다. 사실 모든 직업들이 가장 중요하게 보는 것은 기본 중에 기본이다. 즉, 해당 분야에서 많이 사용되는 기본적인 개념들과 용어들의 의미를 정확하게 이해하는 것이 그 무엇보다도 중요하다는 것이다.

그래서 딥러닝의 그 어떤 진보한 기술을 배우기 전에, 이 개념들을 정확하게 숙지하지 못한다면, 아무소용이 없을 것이라는 생각이 들었다. 기본기가 없으면 밑바닥은 적나라하게 빨리 드러나게 마련이다. 화려한 모래성도 진흙탕 위에 세워졌다면, 약한 파도 한방에 무너질 것이다. 그러므로, 시간이 좀 걸리더라도, 이 개념들을 누군가 내게 물어보았을 때 바로 논리적으로 간결하게 답할 수 있도록 해야겠다고 생각했다.

결국, 깊게 배운다는 것은, 스쿠버다이빙에 비할 수 있을 것 같다. 먼저 간단한 호흡법과 필수적인 장비나 도구들의 사용법을 충분히 숙지한 이후, 조금씩 점점 더 깊은 곳으로 들어가는 것이다. 만약 너무 답답하거나 힘에 부치면 바로 수면 밖으로 나와 무엇이 잘못되었고, 어떤 문제가 있었는지 분석하고, 다음에 좀 더 깊게 들어갈 수 있도록 준비하는 것이다. 그렇게 조금씩 조금 더 깊게 들어가는 것이다. 기본적인 개념을 익히고, 도구들을 충분히 사용한다음, 조금씩 자신이 가진 지식을 응용하여 더 어려운 것에 도전하는 것이다. 중간에 막히면 어디서 잘 못 되었는지 찾아 보고, 너무 복잡해 지면 다시 처음부터 다시 해 보는 것이다. 그렇게 조금씩, 시간이 조금 걸리더라도 확실하게 모든 것을 짚고 넘어가며 점점 더 어려운 문제에 도전하는 것이다.

내일 배울 것들이 기대된다. 이번 섹션을 통해 최소한 딥러닝의 기본적인 개념은 내가 충분히 숙지해서, 이후 딥러닝 관련 면접시에 큰 문제 없이 답할 수 있도록 준비해야겠다. 내가 결국 하고 싶은 일이 딥러닝의 지식과 관련이 깊다는 직감이 들었기 때문이다.

참조:

(1) https://databricks.com/wp-content/uploads/2019/02/neural1.jpg

--

--

배우는 자(Learner Of Life)
배우는 자(Learner Of Life)

Written by 배우는 자(Learner Of Life)

배움은 죽을 때까지 끝이 없다. 어쩌면 그게 우리가 살아있다는 증거일지도 모른다. 배움을 멈추는 순간, 혹은 배움의 기회가 더 이상 존재하지 않는 순간, 우리의 삶은 어쩌면 거기서 끝나는 것은 아닐까? 나는 배운다 그러므로 나는 존재한다. 배울 수 있음에, 그래서 살아 있음에 감사한다.

No responses yet