과학

딥러닝을 최대한 알기쉽게 써봄

이번 수업에서 딥러닝에 대해 배우기도 하고

딥러닝, 인공신경망 이런 용어들에 대해 많이들 오해하는 면도 있고, 또 과소평가 과대평가하는 경우가 많은것같아

한번 내가 수업 들은 내용을 최대한 간단하게 적어보려고해

늅늅 학부생이니까 많이 지적해줘 ㅜㅜ

 

1. 일단 딥러닝, 인공신경망 용어에 대해

 

딥러닝, 인공신경망이라는 용어를 언급하면서 이게 마치

인간의 뇌 구조나 동작원리에 맞닿아 있는 모델이라고 생각하는 사람들이 되게 많은거같아

어느정도 구조를 따온 건 맞고 신경세포에서 유래한 건 맞아

근데 이걸 넘어서 인간의 뇌에 유사하다느니, 뇌의 작동원리를 연구할 수 있다느니 하는 말들이 많은데

일단 정리하자면 뇌의 구조나 작동원리와는 거의 관계가 없고

또 딥러닝, 인공신경망은 그의 극히 일부만을 따왔을 뿐 인간의 사고과정을 베껴온 것이 절대 아니야.

 

그럼 딥러닝, 인공신경망은 뭘까?

직관적인 집합 관계로 보자면 이래

인공지능 > 기계학습 > 딥러닝

즉, 기계학습은 수많은 인공지능 기법들 중 하나이고, 딥러닝은 수많은 기계학습 기법들중 하나야.

그럼 딥러닝을 알기 위해 우선 기계학습이 뭔지부터 정확히 알아야겠지.

 

2. 기계학습이 뭘까

 

기계학습은 한마디로 "미래의 데이터를 잘 예측할 수 있도록 주어진 데이터의 패턴을 잘 파악하게" 하는 일이야

음...

우리가 초등학교 5,6학년 때 보면 일명 네모 수학문제를 많이들 봤을거야

아니면 아이큐 테스트 문제에서도 많이 나오고

 

예를 들어

1 1 2 3 5 8 ?

이런 수 패턴 문제가 있어.

아는 사람도 있고 모르는 사람도 있겠지만 저 문제의 답은 13이야.

이 때 이 문제의 답이 왜 나왔는지를 아는 게 중요하겠지? 답은 전 숫자와 현재 숫자를 더한 값이 다음 숫자에 나오는거야.

이 문제의 풀이과정을 정확하게 안다면, 동일한 방법으로 만들어진 문제를 똑같이 풀 수 있을거야.

2 2 4 6 10 16 ?

 

이 때 위의 문제를 주고, 답만을 알려준다음

답을 도출하는 방법을 컴퓨터 스스로 알아내게끔 하는 것이 바로 기계학습이야.

우리가 위 계산방법을 직접 컴퓨터에 프로그래밍해서 ?를 맞추게끔 하는것과는 정 반대인거지.

 

즉 우리가 중학생 때 함수에 대해 배웠던 것처럼

x -> f( ) -> y가 있을 때

컴퓨터에게 x, y만을 알려줘. 문제랑 답만을 계속 알려줘

그러다보면 컴퓨터가 어느새 f ( ) 가 뭘로 이루어져 있는지 알게 되는거야. 뭐 2x거나 3x+5x^2거나 뭐든 되겠지

그러면 거의 비슷한 문제가 다시 나왔을 때 그걸 정확히 맞추게끔 하는 게

기계학습의 제일 좋은 목표가 되는거야.

 

3. 그럼 딥러닝 / 인공신경망은 뭘까

 

그리고 이런 기계학습에는 정말 다양한 방법들이 있고

딥러닝 / 인공신경망은 그 중 하나를 지칭하는건데, 우선 이 '신경망'이라는걸 볼 필요가 있어

신경망은 인간의 신경세포를 본떠서 만든 모델이야.

그리고 이 세포 하나를 본뜬 걸 '퍼셉트론' 이라고 해

 

unnamed.png

 

어떻게 좀 비슷해 보이나??

원리는 정말 간단해!! 위에서 언급한 함수 모델하고 똑같아

우리가 중학생때 배운 그 입력 x를 넣으면 f ( ) 상자를 통해서 Y가 나온다는거

단지 여기서는 용어가 조금 다를 뿐인데, w 가중치라는 개념이 있어.

f ( ) = 2x, 3x+5x^2...같이 여러가지 함수 형태가 있지?

w는 여기에서 계수라고 생각하면 돼. y=2x라면 w=2, y=3.532342x라면 w= 3.532342...

함수랑 하등 다를게 없어

 

자 그러면 내가 위에서 냈던 문제를 이 퍼셉트론에 어떻게 적용할 수 있을까?

 

1 1 2 3 5 8 ?

 

음 문제에 제시된 수는 총 6개고, 정답 ?는 1칸이네? 그럼 입력 6개 출력 1개로 놓자

 

4.png

 

그럼 이런 퍼셉트론이 만들어지네

저기서 가중치 w를 뭘로 정해줘야 결과 13이 나올까?

음...

일단 내맘대로 13이 나오도록 만들어봤어!

 

1.png

 

이렇게 해볼까

그럼 수식은 1*5 + 1*0 + 2*1 + 3*2 + 5*0 + 8*0 = 5 + 2 + 6 = 13

결과가 13이 나왔어!

근데 너네 생각에는 이게 좋은 퍼셉트론같니?

완전히 똑같은 다른 문제를 보자

 

2 3 5 ?

 

3.png

 

다음과 같은 퍼셉트론에서는 2*2 = 4가 나와버렸네

우리가 원하는 답은 8인데말이야

(사실 입력 개수를 맞춰줘야 하는건 당연하지만 설명을 위해 조금 틀어봤어 ㅜ)

 

우리가 위의 문제를 풀 때 적용하는 원리는 뭘까?

바로 앞 숫자와 현재 숫자를 더해서 다음 숫자를 만들어 낸다는거야

그럼 그 이전에 쭉~ 나왔던 숫자들은 생각할 필요가 없지

그렇다면 우리가 생각하는 방식이랑 동일하게 계산하려면

다음과 같은 퍼셉트론이 제일 좋겠지

 

2.png

맨 뒤 두개 숫자인 5*1 + 8*1 = 13, 우리가 생각하는 풀이법이 그대로 적용됐지?

이걸로 문제없이 잘 작동할거야

이걸 바로 '단층 퍼셉트론' 이라고 해. 퍼셉트론이 딱 하나여서 그렇게 이름 붙여진거야

 

그런데 조금 문제가 있어

이런 퍼셉트론을 만들기 위해서는 위 4개의 가중치가 정확히 0이 되고, 밑 가중치가 1이 돼야 하는데

보통은 기계학습을 수행할 때 초기에 모든 가중치에 랜덤한 숫자를 할당하거든

그렇다면 내가 설정한 임의의 가중치보다 더 엄한 숫자가 할당될 수도 있어

막 1.2343 3. 43434 0.2322 -22.2323... 여기서 1, 0을 정확히, 빠르게 찾을 수 있을까?

 

그리고 또 다른 문제를 보면

이 퍼셉트론은 우리가 입력을 단 두개만 넣을 때 적당한 동작원리 (가중치) 를 찾기 쉽게 설계되어 있어

봐봐, 다른 가중치는 전부 0이고 맨 마지막 두개만 1이잖아?

이 말은 우리가 인위적으로 입력을 두개로 줄여야 금방 좋은 퍼셉트론을 만들 수 있다는 뜻이지.

우리가 문제를 풀기 위해 처리해야 하는 요소가 많다 이거야.

그래서 사람들이 생각한 것이 이 퍼셉트론을 여러개 쌓자는거야!

 

5.png

내가 위에서 만들었던 퍼셉트론을 똑같이 여러개 겹쳐봤어

계산해볼까?

1번 퍼셉트론 1*2 + 1*5 = 7

2번 퍼셉트론 2*8 + 3*(-2) = 10

3번 퍼셉트론 5*2 + 8*2 = 26

마지막 퍼셉트론 7*0 + 10*0 + 26*0.5 = 13

오 이러면 우리가 생각하던거랑 똑같이 작동하고, 모든 퍼셉트론의 가중치가 정확하지 않아도 돼

그럼 위에서 언급한 단층 퍼셉트론보다 더 빨리 정확하게 학습할 수 있을거야

게다가 이 퍼셉트론은 문제 전체를 받아도 그 다음 마지막 퍼셉트론이 알아서 보정해주기 때문에

굳이 막 입력개수를 줄이고 안 그래도 알아서 적당한 동작원리를 찾아줄거야.

즉 우리가 문제를 풀기 전에 손 댈 요소가 적어진다 이거지.

 

이걸 "다층 퍼셉트론" 이라고 하고

놀랍게도 퍼셉트론의 층수가 많아지면 '딥러닝'이자 '인공신경망'이 돼.

뭐어...?

놀랍지만 이게 딥러닝 기본원리의 거의 전부야

막 알파고, CNN, RNN, LSTM 이런거? 모두 퍼셉트론을 어떻게 짜느냐 문제야

대표적으로 CNN 초기모델을 볼까?

 

6.png

(https://brunch.co.kr/@linecard/323)

 

와!

내가 설명한거 그대로 적용시키면 돼

그렇게 보면 여태까지 보던거랑 똑같지?

가중치가 어떻게 변할지는... 우리가 원하는 내부 작동원리가 뭔지에 달렸겠지

 

사실 답을 잘 찾아가기 위해 가중치를 변화시키는 방법도 여러가지가 있고

가중치와 입력을 곱하고 더한 뒤의 결과값이 정답이랑 어느정도 일치하는지 체크하는 방법도 여러가지가 있고

저 퍼셉트론을 어떻게 연결할지, 층을 얼마나 쌓을지

여러가지 다양한 문제들이 남아있어

수많은 머신러닝 방법중 딥러닝은 이런 미세한 조정이 엄청나게 중요한 방법이야.

여태까지 나온 다른 방법들은 이렇게 미세하게 여러 요소들을 조정할 필요가 없었거든

하지만 딥러닝은 이런 요소들을 조정하는 방법에 따라 성능이 좌지우지되고 점점 좋아지기 때문에

어떻게 보면 이런 요소도 딥러닝의 인기에 한몫 더하는데 기인하는것 같기도 해

 

모르는거나 태클걸고 싶은거 질문 받을게

70개의 댓글

2020.05.28
@자 이내여야 합니다

케라스, 텐서플로를 쓰면 되긴 해

0
2020.05.28
@자 이내여야 합니다

컴공을 가

0
2020.05.28

최근엔 생체 신경망 구조를 모방한 구조나 사고과정을 모방한 연구가 활발함. 실제로 성능도 뛰어나서 SOTA를 찍기도 하구

0
2020.05.28

다음편두올려줘!

0

기계학습/데이터과학 종사자들이 반드시 가지고 있어야할 소양중 하나는 커뮤니케이션 능력이라고 생각함. 기계학습의 근본은 다른 분야의 전통적인 방법론을 머신러닝 방법론으로 연구하고 대체할수 있으면 대체하는거기 때문에 학제간 연구가 필연적임 (그래서 자기분야 오염시킨다고 싫어하는 학자들 있음). 그리고 학제간 연구에서 중요한건 뭐다? 상대방의 분야를 이해하고 자기의 분야를 상대에게 이해시키는 능력이 반드시 필요함. 그래서 기본적으로 비전공자에게 5분 내외로 기계학습을 설명할수 있어야 말이통하더라고

 

일단 function approximation을 설명하기 위해서 너가 쓴 예시는 좋은데 5분이내로 설명하기에는 너무 빌드업이 많음. 나는 이 예시 쓰거든?

 

1#3 = 12

3#5 = 75

4#2 = 12

1#1 = ?

 

A: x#y = (x+y)*z, Thus (1+1)*1 = 2

 

이러면 직관적으로도 초딩때 이런 퍼즐 풀어본 경험 많으니까 좋고, 수학적으로도 f: x,y -> z 다변수함수의 가능성을 암시하기 때문에 유용하게 써먹을수 있음

 

그리고 바람직한 교육방침은 딥러닝/인공지능 이란 말 자체를 아예 안쓰고 머신러닝/데이터과학을 쓰는게 좋다고 생각함. 딥러닝은 개념적으로 ML에서 분리할 유의미한 차이가 없기 떄문에 혼선만 일으키고 AI는 너무 많은 분야를 포괄해서 안좋음

0
2020.05.28
@대머리머대리머머리대대리

굿굿 나도 너랑 똑같은 생각임 나는 언어학 분야로 공부하고자 해서 특히 문과쪽 언어학 하는 사람들과 다리를 놓고싶다는 생각을 하고있음s, yk 대학원 급에서는 국어국문과에서도 전반적인 머신러닝, 벡터화 등에 대한 이해는 하고있긴 한데 그정도까지 올라가지 않으면 문과쪽에선 알 일이 없더라

나도 딥러닝 용어는 쓰지 말아야 한다는 쪽에 찬성함

0
2020.05.28
@일뽕사냥꾼

너 연세대지ㅋㅋ

0
2020.05.28
@모쏠탈출

ㄴㄴ 학부생임

0
@일뽕사냥꾼

NLP 재밌지

Computer vision보다 더 재밌는건 확실함

0
2020.05.28
@일뽕사냥꾼

너 연세대지 sky를 누가 s, yk 라고 써~

0
2020.05.28
@키이읍

서울대일수도...s를 따로 떼어냈잖어 ㅎㅎ

0
2020.05.28
@키이읍

대학원레벨은 spk ky로 나눔 yk는 그냥써봄ㅋㅋ

0
2020.05.29
@대머리머대리머머리대대리

난 기계공학이 전공인데 요즘 딥러닝 스까서 뭐좀 해보려는 중임. 타전공에서도 은근히 많이 배우는거 같다.

0
2020.05.28

구시렁구시렁구시렁... 디버깅이 안돼...

0

로직으로 하는 기존 방식하고 많이 다른거잖어.

 

기존 방식으로는 설명이 안되는거야?

0
2020.05.28
@에틸렌999불가즈아

응? 무슨말이야

0
@일뽕사냥꾼

F(x)를 컴퓨터가 얘기해주냐는 뜻

0
2020.05.29
@에틸렌999불가즈아

인공신경망 설명한 영상.. 한글자막 있음~

https://youtu.be/v_4KWmkwmsU

0
2020.05.29

인공신경망 테서플로 시뮬레이션 돌려 볼수 있는곳.. 사용법은 알아서...

https://playground.tensorflow.org/

0
2020.05.29

딥러닝이든 뭐든 결국 ML중 하나다 이마리야~

0
번호 제목 글쓴이 추천 수 날짜
공지 [게임] 게임 연재, 게임 정보는 게임 연재 판을 이용 해주시기 바랍니다 89 overflow 5 2017.04.18
공지 [기타 지식] 후기, 리뷰, 감상문은 허용 하지 않습니다 overflow 2 2016.07.29
공지 [기타 지식] 글 작성 금지 항목들 overflow 2 2014.04.06
공지 [기타 지식] 연속적인 글과 제목에 대하여 28 overflow 2 2013.08.11
공지 [기타 지식] 읽을 거리 판 입니다. 44 애드립 2 2012.07.25
10212 [역사] 피에 굶주린 마야인들의 잔혹한 제사들 <3> 아기 학살 15 포치테카 5 8 시간 전
10211 [역사] 피에 굶주린 마야인들의 잔혹한 제사들 <2> 심장 적출 8 포치테카 9 11 시간 전
10210 [역사] 피에 굶주린 마야인들의 잔혹한 제사들 <1> 11 포치테카 12 12 시간 전
10209 [기타 지식] [운동후기] 41일간 식단 및 운동으로 인한 체중변화 후기 7 년차개발자 2 13 시간 전
10208 [호러 괴담] 실종됐다는 연인이 그녀의 차 트렁크 속에 들어있었다. 그그그그 1 17 시간 전
10207 [역사] 이릉, 한나라 장군, 흉노의 왕 (2) 6 3대20헬린이 4 1 일 전
10206 [역사] 명나라 황제가 지은 이슬람 찬양 시 14 미역빵 2 1 일 전
10205 [기타 지식] 운전자를위한 자동차 상식/꿀팁 35 리오토마치다 5 1 일 전
10204 [기타 지식] MBTI 정확한 유형 탐색하기 ver.2 21 이뭠마 6 1 일 전
10203 [역사] 타이타닉 충돌부터 침몰까지의 실시간 시뮬레이션 1 장성규 9 1 일 전
10202 [기묘한 이야기] [번역 SF단편]그냥 또다른 하루 by Shannon Fay 아르타니스 1 1 일 전
10201 [호러 괴담] 고양이 나무 7 수수 8 2 일 전
10200 [기묘한 이야기] [번역 SF단편] 유령들 by EA Levin 5 아르타니스 0 2 일 전
10199 [역사] 이릉, 한나라 장군, 흉노의 왕 (1) 20 3대20헬린이 8 2 일 전
10198 [호러 괴담] 완전 범죄의 조건 6 그그그그 7 2 일 전
10197 [역사] 사마천이 궁형을 당하면서 느낀 심경 16 멀라 9 3 일 전
10196 [기타 지식] [투자] 매매를 쉬기 좋은 때 37 작은투자자 8 3 일 전
10195 [기타 지식] [신입의 면접 전략] 면접의 시작은 자기소개서부터 5 슴내 6 3 일 전
10194 [기묘한 이야기] [번역 SF단편] 불빛은 항상 빛나죠 by Tracy S. Morris 5 아르타니스 0 3 일 전
10193 [호러 괴담] [레딧괴담] 자장가 [유툽주의] 10 년차ASMR 2 3 일 전
서버에 요청 중입니다. 잠시만 기다려 주십시오...