Tech

Deep Learning 완전 쉽게 이해하기 for nonprogrammer

Deep Learning (딥러닝) 을 Machine Learning (머신 러닝)을 다 공부하고 이해하면 좋겠지만 언제 또 이걸 다 공부하고 이해하겠습니까.

그래서 앞서 AI에 대한 이해에 대한 글에 이어 Deep Learning을 최대한 쉽게 이해할 수 있도록 설명하는 글을 작성해봅니다.

인간의 뇌세포을 본따서 만든 Deep Learning

Deep Learning 학습을 도입부에 항상 듣는 말입니다.

근데 중요한 건 제가 인간의 뇌세포에 대한 생물학적 지식이 없다는 것입니다.

그러면서 맨 처음 보는게 시냅스 사진인데 저는 더 거부감을 가졌습니다.

저한테는 이 접근은 너무 추상적입니다.

그래서 시냅스는 잊어버리겠습니다.

Deep Learning Model은 조그 다이얼 박스

Deep Learning 은 조그 다이얼의 집합

저는 Deep Learning을 조그 다이얼 박스로 이해를 하니 쉽게 이해할 수 있었습니다.

여러 input을 저 조그 다이얼의 집합을 통과하면 원하는 output이 나오는 박스가 딥러닝으로 만든 Model입니다.

예를 들면 input이 0과 1을 제공하구요.

output으로 XOR 를 계산해내는 박스를 만든다고 가정해보겠습니다.

x1x2y
000
101
011
110

그럼 그림상으로 12개 있는 조그 다이얼을 잘 맞추면 늘 XOR를 계산해네는 박스를 만들수 있게 됩니다.

실제로 딥러닝으로 해보면 만들 수 있습니다.

대신 조그다이얼 값은 엄청 세밀하게 설정할 수 있어야 합니다.

조그 다이얼 풀어보기

조그 다이얼을 풀어봤습니다.

딥러닝에서는 이것을 Cell이라고 부릅니다.

  • x로 표현된 input data
  • 각 x line에 대해서 가중치를 부여한 W (Weight)
  • 입력값이 모두 0일때 기본값 b (Bias)
  • 각 x와 w을 곱한 값의 합
  • 각 x와 w를 곱한 값의 합을 처리하는 Function (Activation Function)
  • 그리고 마지막으로 Output

앞서 w는 가중치라고 했습니다.

그 말은 x와 곱한다는 말입니다.

이걸 풀어써보면 다음과 같이 됩니다.

Activation Function은 저 합의 값을 그대로 내보내는게 아니고 값에 따라서 어떻게 처리해서 내보낼지 계산해주는 Function입니다.

아래 그림은 가장 흔히 쓰이는 sigmoid function을 사용한 경우를 그려봤습니다.

합의 값을 그대로 Output으로 사용하지 않고 Sigmoid function을 통하면 값이 0이나 1에 가까운 값으로 나오게 되고 이 값을 통해서 0이나 1로 구분하여 Output으로 사용하도록 해주는 역할을 합니다.

그림에서 W는 하나의 w가 아니고 w의 집합이라고 명시적으로 표현한걸로 봐주시면 됩니다.

이러한 Function들은 이미 많은 수학자들께서 만들어주셨기 때문에 그때 그때 맞는 Function만 사용하면 됩니다.

조그 다이얼 하나가 설정값이 하나가 아니라 입력 값의 갯수에다가 bias와 Activation Function까지 좀 다양하죠?

Deep Learning Layer

다시 말하면 Deep Learning Model은 조그 다이얼들을 첫번째 그림에서 12개의 조그 다이얼을 연결한것처럼 다수의 조그 다이얼을 연결한 것과 같습니다.

3개씩 4개의 단계로 연결을 해놓은것을 그림에서 알수 있습니다.

자세히 보시면 회색으로 각각 조그다이얼마다 연결을 해놨습니다.

이것을 딥러닝에서는 Layer라고 합니다.

Deep Learning은 Machine Learning

딥러닝은 컴퓨터가 스스로 저 조그 다이얼을 돌려가며 설정값을 다 맞추었을때 가장 정답을 내놓을 확률을 높게 하는 과정을 말합니다.

100%의 정답을 맞출 수 없을 수도 있습니다.

서로 연관성에 의해서 이 값을 바꾸면 다른 설정값들에게 영향을 주게 되어 100% 정답을 맞추는 설정값을 찾지 못할 수도 있기 때문입니다.

그래서 주로 딥러닝은 학습할 Input Data (x) 와 Output Data (y) 를 가지고 모든 조그 다이얼의 설정값을 하나 하나 바꿔가면서 조그 다이얼 박스를 통과했을때 현재의 답이 실제 답과 맞는지 비교해가는 과정을 수없이 반복하는것입니다.

앞서 AI 이해하기 글에서 컴퓨터가 스스로 학습하는게 머신러닝이라고 했습니다.

즉, 딥러닝은 머신러닝의 한 종류입니다.

Deep Learning이 Machine Learning이어야 하는 이유

실제 딥러닝의 Cell은 아주 많이 연결하여 사용합니다.

위 코드는 Tensorflow homepage 에 초보자 가이드에 있는 가장 기본적인 딥러닝 Cell Layer의 예제입니다.

숫자 인식 예제인데 input data가 28×28 = 784개 이고 Layer는 1 Depth지만 Cell이 128개입니다.

output은 10개이구요.

조절해야 하는 값들이 당췌 몇개인가요?

((784+1)*128+1)*10 = 1004810

그럼 음성인식, 이미지인식등과 같은 방대한 Data를 학습하고 고난이도의 역할을 수행해야 하는 모델은 얼마나 많은 큰 규모의 Cell Layer가 필요할까요.

그 많은 Cell들을 인간이 일일히 조그 다이얼을 돌려가며 맞춰가는 것은 불가능합니다.

그래서 반복적인 일을 제일 잘하는 컴퓨터에게 이 일을 시키면 가능하기 때문에 딥러닝의 원조격인 퍼셉트론 (perceptron)이 1958년에 나왔음에도 이제서야 실용화되고 있는 이유입니다.

저 성능 컴퓨터에게는 이조차 버거운 일이었기때문입니다.

요즘 컴퓨터 성능이 워낙 좋아졌으니 말입니다.

마치며

이 글이 딥러닝에 대해서 조금이라도 이해에 도움이 되었으면 감사하겠습니다.

혹시 오류나 추가적인 조언이 있으시면 말씀해주시면 감사드리겠습니다.

2 thoughts on “Deep Learning 완전 쉽게 이해하기 for nonprogrammer

Leave a Reply