신경망이란 무엇인가? (딥러닝 기초)

오늘은 신경망(Neural Network)에 대해 알아보려고 한다. 인공지능 공부를 시작한 이후로 ‘신경망’이라는 단어를 정말 많이 들어봤기 때문에 도대체 신경망이 뭔지(!!) 그 기초는 좀 알아둬야할 것 같아서 오늘 글의 주제는 ‘신.경.망.’으로 정했다. (유튜버 3Blue1Brown님의 영상을 공부한 것을 정리해서 올립니다. 영상 링크는 맨 아래에 걸어놨어요!)

오늘은 너로 정했다! 가랏!

신경망이란?

글자 그대로 해석하면 신경망은 뉴런들의 집합체인데 딥러닝/인공지능에서의 뉴런은 ‘0~1 사이의 숫자를 지니는 무엇’으로 보면 된다.

이 숫자는 grayscale value로 숫자가 0이면 검은색, 1이면 하얀색을 뜻한다. 이 숫자는 activation이라고도 부른다. 뉴런이 지니고 있는 숫자의 크기가 크면(1에 가까운 어느 숫자이면) 뉴런이 활성화(activate)된다. 말만 계속하면 이해가 어려우니 그림으로 한번 봐보자.

아래는 28 x 28 픽셀의 이미지다(왼쪽). 이 이미지는 숫자 9를 나타내고 있다. 이 이미지를 컴퓨터에게 주어서 컴퓨터보고 ‘어이, 이 숫자가 뭔지 알아맞혀봐~’라고 말하기 위해 컴퓨터에게 지능을 부여한 것이 신경망이고 오른쪽 그림이다.

오른쪽 그림의 784는 28 x 28픽셀(전체 픽셀 수를 센 것)이고 맨 오른쪽의 0~9는 컴퓨터에게 저 이미지가 어떤 숫자에 해당할지 알아맞히라고 선택지를 준 것이다. 컴퓨터가 만약 올바르게 학습해서 올바른 답을 낸다면 9의 숫자(activation 또는 grayscale value)가 1에 가까이 나올 것이다(그 결과로 숫자 9를 represent하는 뉴런의 색이 하얀색에 가까워질 것).

사람의 뇌를 본따 만든 인공 지능, 딥러닝 모델인 Neural Network

레이어(Layer)란?

Layer는 뉴런들의 세로 집합인데 왼쪽 Layer부터 오른쪽 Layer로 차례대로 활성화된다. (Activation of one layer determines the activation of the next layer).

아래 그림을 보자 왼쪽은 숫자 1을 컴퓨터에게 준 거고 오른쪽은 숫자 4의 이미지를 컴퓨터에게 준 건데 Layer마다 활성화되는 뉴런들이 다르다(흰색 부분이 다르잖아용~ㅎㅎ). 이렇게 활성화되는 뉴런들이 다르다보니 컴퓨터는 결국 다른 결과 값을 도출해내게 된다(마지막에 숫자 1 그림은 결과 값으로 1을 도출했고 숫자 4 그림은 결과 값으로 4를 도출).

컴퓨터에 넣어주는 데이터가 다르니(input 값, 숫자 1, 4 그림) 레이어마다 활성화되는 뉴런들이 다르다.

결국 저 가운데 두 Layer(최외곽에 있는 레이어가 아니어서 hidden layers라 부름)의 어떤 로직으로 컴퓨터가 결과를 도출한다는 건데 궁금하지 않은가? 이 hidden layers들이 뭘하는지, 어떻게 기능하는지?

지금부터 그럼 알아보겠다.




히든 레이어(Hidden Layer)의 기능

일단 저 맨 오른쪽 바로 옆 Layer의 뉴런들은 바로 결과 값을 도출할 수 있도록 가장 굵직 굵직한 특징들을 각각의 뉴런들이 represent한다. (아래 참조)

맨 오른쪽 바로 옆 레이어

그리고 맨 오른쪽 바로 옆 Layer의 왼쪽 Layer은 각각의 뉴런들이 다양한 Edge들을 represent한다(아래 그림에는 안 나와있는데 각각의 뉴런들이 저 점 같이 생긴 edge들을 represent하고 있어요).

이 Edge들을 종합해야 동그라미와 작대기가 나오고 그 다음 Layer(맨 오른쪽 바로 옆 Layer)의 뉴런이 활성화되며 결국 결과 값이 나온다.

왼쪽에서 오른쪽으로 활성화됩니다

하나의 뉴런은 그 전 Layer의 뉴런들의 activation 값 x 그 뉴런들의 비중을 곱한 값들의 집합을 activation/grayscale value로 가지는데 그 값이 반드시 0~1 사이여야 하므로 시그모이드 함수를 사용하거나 bias(편향)를 사용해 값을 떨어뜨려서 값이 항상 0~1 사이에 있도록 한다. 

인공 지능을 결국 올바른 비중과 편향 값을 찾는 것이라고 한다. 오늘 예시로 든 신경망 모델에는 만 삼천 두개의 비중과 편향의 수가 사용되었는데 이렇게 많은 숫자들을 최대한 정확하게 찾도록 하는 게 컴퓨터를 학습시키는 과정이고 인공 지능이라고 말할 수 있다.

마지막엔 인공 지능을 공부하다보면 정말 자주보는 저 방정식인 a1 = σ(W*a0+ b)를 만나볼 수 있다.

여기서 a1은 두번째 layer에 속한 뉴런들의 activation 값들의 집합(n x 1 행렬, 여기서 n은 뉴런 수)이고 a0는 첫번째 layer에 속한 뉴런들의 activation 값들의 집합(n x 1 행렬, 여기서 n은 뉴런 수)이고 W는 비중들의 집합(k x n 행렬, 여기서 k는 첫번째 layer의 뉴런 수, n은 두번째 layer의 뉴런 수)이고 b는 bias, 편향들의 집합(n x 1 행렬, 여기서 n은 뉴런 수)을 나타낸다.

인공 지능을 공부하다보면 자주 접하게 될 수식입니당, 어떻게 아냐고요? 예전에 엄마가 많이 보여줬어요 ㅎㅎ
줄 친 부분이 그 수식입니다 (a1 = σ(W*a0+ b)), 코드로는 이런 식으로 표현하나봐요.



어제와 오늘은 신경망에 대해 알아봤다(이 글을 이틀에 걸쳐서 썼어요~). 저 유튜버 분 정말 대단한 것 같다. 정말 알기 쉽게 나에게 신경망이 무엇인지 어떤 구조인지 설명해줬다.

공짜로 이런 강의를 인터넷에서 들을 수 있다니 우린 정말 지식을 향유하기 쉬운 세상에 살고 있다고 새삼 느낀다. 정말 감사합니다 3Blue1Brown님! (뜬금 없지만 이 유튜버 팀이 3 명이 파란 눈을 가졌고 한 명이 갈색 눈을 가져서 이런 이름을 지은 걸까? 궁금해진다,,) 그럼 글 다 썼고 오늘 공부도 마쳤으니 저는 이만 자러 갈게요~

Leave a Comment