“뉴럴네트워크라는걸 들어 보셨다면 보셔야 할 영상. - DL1”의 전체 스크립트입니다. 타임스탬프를 클릭하면 해당 장면부터 영상이 열려요. 다른 영상이 필요하다면 유튜브 스크립트 추출기를 이용하세요.
0:04 이건 3입니다. 로봇이 아닙니다. 테스트 이미지 같은 28바 28픽셀의 저화질이지만 우린 이걸 3이라고 쉽게 인식하죠. 자, 우리의 얼마나 뛰어난지 한번 볼까요?이 사진도 이것도 이것도 모두 다 3으로 보이시죠? 그런데이 사진들, 픽셀 값들은 다 다릅니다. 보시는 대로요. 분명히이 이미지들을 볼 때 우리의 눈속 시신경 반응이 서로 다를 겁니다. 보시는 것처럼 사진이 완전 다르니깐요. 그런데 이걸 어떻게 구별할까요? 우리 뇌에 있는 시각 피질이 이미지들을 같은 숫자로 해석하는 겁니다. 다른 숫자도 구별할 수 있죠. 이게 얼마나 어려운 일인지
0:50 설명드리겠습니다. 픽셀 값들만 가지고 숫자가 몇인지 맞추는 프로그램을 만든다고 해보죠. 0에서 9 중에 몇인지만 맞추면 되는 사람에게는 아주 간단한 일입니다. 이걸 어떻게 만들까요? 우리에게는 기계 학습 즉 머신 러닝이라는 방법으로 신경망 즉 뉴럴 네트워크를 사용하면이 문제를 쉽게 해결할 수도 있습니다. 이런 단어들을 들어 보신 적 있으시죠? 오늘 영상은이 뉴럴 네트워크가 대체 뭔지 알려 드릴 겁니다. 기초부터 천천히 갈 건데 수학도 좀 섞여 있죠. 신경망이 뭐고 어떻게 만들어져 있고 왜 그렇게 만들었는지 알 수 있을 겁니다. 뉴럴 네트워크 영상 시리즈는 훈련을 어떻게 하는지 그리고 구조는
1:38 어떻게 되는지 두 파트로 나눠집니다.이 영상은 구조를 좀 더 다룰 겁니다. 자, 아까 말한 숫자 사진을 인식하는 뉴럴 네트워크를 한번 만들어 볼까요?이 이 숫자 사진들은 실제로 인공지능의 근본 중에 근본 훈련 예시입니다. 원하시면 설명란에 있는 링크를 통해 직접 훈련을 해 보실 수도 있을 겁니다. 코드도 하실 수 있습니다. 뉴럴 네트워크는 정말 정말 연구가 많이 되어 있고 다를 것도 참 많지만이 영상에서는 설명을 위해서 제일 단순한 형태 네트워크만 집중해서 볼 겁니다. 기초 중에 기초인이 레이어의 이름은 멀티레이어 펄셉트론 줄여서 MLP라고 부릅니다.
2:24 인공지능을 공부하면 가장 처음 배우는 레이어이기도 하죠. 하지만이 간단한 레이어조차도 숫자가 몇인지 알아낼 수 있습니다. 컴퓨터가 이걸 알아낸다니 진짜 신기하지 않나요? 어떻게 하는 걸까요? 생각보다 진짜 별거 없을지도 모릅니다. 뉴럴 네트워크에서 뉴럴은 신경이라는 뜻입니다. 하지만 정확하게이 뉴럴이 뭔지 그리고 왜 네트워크란 이름이 붙었는지 알아보죠. 먼저 뉴론의 존재를 알아야 되는데요. 뉴론은 일단은 숫자를 가지고 있는 것 정도로 알아두시죠. 생물에선 신경 세포란 뜻입니다. 여기 숫자 사진이 하나 있습니다.이 사진은 어떻게 이루어져 있을까요? 우선 사진의 크기는 28/
3:11 28 즉 784개의 픽셀들로 이루어져 있습니다. 각 뉴런은 픽셀의 밝기를 나타내는 값을 가지고 있는 상태이죠.이 이 값은 0에서 1까지 검정에서 하얀색으로 표현됩니다. 우리는이 뉴런 안에 있는 값을 액티베이션이라고 부릅니다.이 액티베이션이라는 값 그 자체가 픽셀이 얼마나 밝은지 나타내고 있다고 볼 수도 있는 거죠.이 이 784개의 뉴련이 첫 번째 레이어의 인풋으로 들어갑니다.이 네트워크의 마지막 레이어 값들은 열개의 뉴런으로 이루어져 있는데요.이 뉴런들이 지니고 있는 값은 0에서 1 사이의 값을
3:56 지니고이 값 그 자체가 인풋 사진이 해당 숫자일 확률을 의미합니다. 화면상에 두 개의 히든 레이어 은닉층이 있는데 그건 좀 나중에 다뤄 보도록 하죠. 우선은 인풋과 아웃풋만 이해해 두시면 될 거 같습니다.이 영상에서 진행한 실험은 두 개의 히든 레이어가 있는데요. 각각 16개의 뉴런들을 가지고 있습니다. 왜 두 레이어냐고요? 원래 분석할 때는 투레이어를 많이 사용합니다. 그럼 왜 16개의 뉴론일까요? 그거는 그냥 화면에 잘 보이거든요. 모델의 인풋 액티베이션이 네트워크를 통과하면 다음 히든 레이어의 액티베이션이 정해지고 그다음 액티베이션도 정해지고 그다음
4:42 액티베이션도 정해지는 형태입니다. 모델의 인풋이 바뀌면 액티베이션이 바뀌고 최종 결과물도 바뀌게 되는 구조인 거죠. 이러한 형태는 실제로 인간의 시각 청각 피지를 본떠서 만든 알고리즘입니다.이 네트워크는 숫자가 몇인지 알아내도록 훈련되었습니다. 이게 무슨 말이냐고요? 아까 말했듯이 이미지는 28바 28 즉 784개의 픽셀로 이루어져 있는 어떠한 액티베이션 값들입니다. 네트워크는 그 인풋에서 특정한 패턴을 찾아 다음 히든 레이어의 액티베이션을 만들고 거기서 또 패턴을 찾아 다음 액티베이션을 만들고 그걸로 최종 결과물을 예측하는 겁니다. 최종 아웃풋의 값이 가장 큰 그 값이
5:29 네트워크가 예상하는 숫자인 거죠. 여기서이 레이어에 전달된다는게 무슨 개념인지 훈련을 어떻게 하는 건지 알아보기 전에 먼저이 레이어라는게 대체 뭔지 그것부터 짚고 넘어가도록 하죠.이 히든 레이어라는 은층들은 대체 뭘 하는 걸까요? 그걸 알아보기 위해서 사람이 숫자를 어떻게 인식하는지 생각해 보겠습니다. 숫자 9를 우리는 위에 동그라미와 짝대기의 합으로 숫자 8을 위에 동그라미와 아래 동그라미의 합으로 그리고 4는 짝대기 세 개의 합으로 생각할 수 있죠. 우리가 숫자를 생각할 때이 조합을 가지고 숫자가 몇인지 알아내는 거죠. 만약에 네트워크가 숫자가 몇인지 알 수 있다면 그 네트워크의
6:15 히든 레이어 은닉층은 인풋 이미지가 주어졌을 때 그 이미지의 패턴을 분석하여 그 패턴이 있는지 없는지 액티베이션 값으로 가지고 있기를 바라는 겁니다. 물론 하나의 이미지뿐만 아니라 다양한 숫자 이미지에서 패턴을 찾을 수 있기를 바라는 거죠. 이렇게만 훈련됐다면 마지막 레이어는이 동그라미가 어디에 있는지, 짝대기는 어디에 있는지 이런 정보들의 조합을 가지고 숫자가 몇인지 맞추기만 하면 되는 거죠. 물론 패턴을 알아내는게 굉장히 어려운 일입니다. 특히 동그라미 같은 경우에는 직선에 비해서 그 패턴을 찾기가 더더욱 어렵습니다. 한번 보실까요? 우리는 동그라미 패턴을 여러 개의 조각들로 나눌 수 있을 겁니다. 한 직선 다섯 개 정도로
7:01 나눠 보면 어떨까요? 그런데 동그라미 말고도 직선도 있죠. 1, 4, 7 이런 숫자들도 여러 개의 작은 조각들로 나눌 수 있을 텐데요. 어쩌면 우리가 훈련한이 네트워크의 첫 번째 액티베이션들은 이런 작은 조각들의 정보를 가지고 있는 걸지도 모릅니다. 숫자 9가 인풋으로 들어갔을 때 숫자 9에 모든 픽셀값들을 가지고 작은 조각들을 만들고 그 작은 조각들을 다시 조합해서 우리가 생각하는 동그라미나 직선 같은 패턴으로 만들고 그 패턴을 가지고 구하는 걸 알아낼 수 있는 거겠죠. 정말로 이러냐고요? 그건 다음 훈련 영상에서 보시면 될 것
7:48 같습니다. 중요한 건 지금 우리가 훈련시킨이 모델이 이런 식으로 패턴을 파악하기를 바라고 있다는 사실입니다. 이런 조각들의 패턴을 찾는 것은 거의 모든 이미지 분석에 있어서 굉장히 중요한 일이죠. 이러한 개념은 여러 다른 AI 모델들에서도 동일하게 적용됩니다. 예를 들면 오디오 인식을 볼까요? 개념적으로 설명해 보자면 날것 그대로의 오디오가 글자가 되고 다음 레이어를 통과하며 발음이 되고 그다음 레이어가 통과되며 어떤 단어인지 알아내게 되는 거죠. 자, 다시 돌아와서이 모델 그림을 보면 하얀색 선들이 잔뜩 그려져 있습니다. 이게 대체 뭘까요? 이건 액티베이션 값들이 어떻게 조합될지를 정해주는
8:33 이름하여 가중치라고 불리는 것입니다. 작은 조각들을 가지고 패턴을 찾아내고 어떤 숫자인지 알아내기까지 해주는 그 값들이죠. 한번 예시를 들어서 살펴볼까요? 786개의 픽셀 중에서 지금 화면에 표시된 부분에 작은 조각이 있는지 없는지 알아내고 싶다고 해봅시다. 그러면 저 픽셀 값들을 어떻게 조합해야 할까요? 그게 바로 파라미터 또는 웨이트라고 불리는 저 값들의 조합으로 이루어집니다. 우리가 알고 싶은 그 패턴이 있는지 없는지 그걸 찾아내 주는 값들이죠.이 웨이트라는 값들이 어떻게 액티베이션들 간의 연결을 의미하는 걸까요? 여기서 웨이트는 사실 그냥 숫자입니다. 첫
9:19 번째 레이어의 784개의 모든 액티베이션들을 다 가지고 와서 웨이트와 곱한 뒤 더하면 두 번째 레이어의 하나의 액티베이션이 되죠. 여기서 웨이트가 초록색이면 양수를 빨간색이면 음수를 의미하고 있습니다. 저 하얀색 네모 영역에 있는 패턴을 가지고 있는지 안 가지고 있는지 알고 싶다고 한번 해보죠. 저기에 픽셀값들이 있는지 알고 싶기 때문에 저 영역 부분만 가중치를 양수로 설정하고 나머지를 다 0으로 만들면 딱 저 해당 부분에 픽셀값이 있는지 없는지에 대한 그 정보를 알 수 있게 될 겁니다. 조금 더 나아가서 테두리 부분 즉 여기서 빨간색으로 칠한 부분을 음수로 만들면 가운데 픽셀은
10:07 밝은 값을 가지고 있고 주변 픽셀은 어두울 때 그 값이 더욱 커지게 될 겁니다. 이렇게 곱하고 더한 값들의 연산 결과는 어떤 값이든 가질 수 있지만 지금이 네트워크에서이 액티베이션이라는 값은 0에서 1 사이의 값을 가져야 합니다. 그래서 저희는 시그모이드 함수라는 액티베이션 펑션을 통해 모든 값을 0에서 1 사이의 값으로 바꿔 주죠.이 이 시그모이드 함수라는 거는 로지스틱 곡선으로도 알려져 있습니다. 아주 작은 값이 인풋으로 들어가면 0에 가까워지고 큰 값이 들어가면은 1에 가까워지고 0에서는 0값을 가지는 그런 함수입니다. 그러니까 여기서이 액티베이션이란 값은 특정 패턴과
10:55 얼마나 잘 맞는지 그 정도를 나타낸다고 할 수 있죠. 근데 이게 꼭 0보다 크다고 해서 강한게 아닐 수 있습니다. 한 10 이상은 돼야 어떤 유의미한 패턴과 맞는 값이라고 할 때 이걸 나타내기 위해서 우리는이 10을 액티베이션 값에 빼줌으로써 임값을 조정할 수 있습니다. 우린 이걸 바이어스라고 부릅니다. 액티베이션에 더해지는 값이죠. 즉 웨이트는 어떤 픽셀의 패턴들이 다음 레이어로 넘어갈 유의미한 패턴인지를 알아내고 바이어스는이 액티베이션 값이 어느 정도 되었을 때 의미가 있는지를 정해 주는 겁니다. 이게 뉴런 하나의 이야기였습니다. 모든 뉴런 하나하나를
11:41 구하기 위해서 784개의 모든 웨이트들을 곱하고 더해서 우리는 액티베이션을 구합니다. 다 연결되어 있죠. 그리고 모든 뉴런들이 바이어스를 각각 지니고 있어서 어느 정도값이 되었을 때 유의한지 그 기준가 다르죠. 우리가 훈련시킨 모델은 784개의 인풋에 대해서 16개의 히든 레이어 은닉층을 가지고 있습니다. 바이어스도 16개가 있죠. 그리고 나서 그다음 레이어도 있습니다. 16개의 액티베이션들이 16개로 가는 그리고 나서 최종적으로 열개의 숫자를 예측하는 레이어가 존재하죠. 이 모든 네트워크는 13,2개의 파라미터들을 가지고 있습니다.이 파라미터들을 올리고
12:29 내리고 조금조금씩 바꿔 가면서 네트워크를 훈련시켜서 결국에는 숫자가 몇인지 알아낼 수 있는 모델을 훈련시키는 겁니다. 즉 훈련은 적절한 웨이트와 바이오스 값을 찾는 거죠. 만약에이 값들을 하나하나 손으로 계산해서 채워 넣어야 한다면 너무나도 끔찍하겠지만 정말 다행히도 우리에게는 훌륭한 훈련을 할 수 있는 이론과 방식이 있기 때문에 컴퓨터가 자동으로 계산해 줍니다. 그래도 이러한 원리를 아는 건 굉장히 중요한게 AI 모델의 작동 원리를 블랙바스처럼 여기는 것보다 웨이트와 바이어스가 뭘 의미하는지 알고 있는 것이 앞으로이 네트워크들의 구조가 어떻게 그리고 왜
13:14 그렇게 발전됐는지 이해할 수 있고 모델이 제대로 동작하지 않는다면이 웨이트와 바이어스를 어떻게 살펴봐야 하는지 그 방식을 깨달을 수 있을 겁니다. 그나저나 여기이 수학 표현들 으, 좀 복잡하지 않나요? 그래서 좀 더 쉽게 표현할 수 있는 좋은 노테이션이 있습니다. 이곳저곳 많은 곳에서 사용되는 표현 방식이기 때문에 알아두시면 좋습니다. 영상에서 말한 모든 액티베이션 값들을 벡터로 만듭니다. 그리고 모든 레이어와 뉴련을 연결하는 가중치를 행렬로 표현합니다. 한 레이어에서 다음 레이어로 갈 때 수행되는이 웨이티드
14:00 곱하고 더하기를 생각해 보면이 행렬과 벡터 간의 곱셈과 [음악] 동일합니다. 여기에는 선형 대수학이라는 아주 중요한 개념이 사용되는데요. 선형 대수학을 시각화하여서 아주 쉽고 재미있게 풀어낸 영상들이 있으니 조금만 기다려 주시면이어서 번역해 보도록 하겠습니다. 뉴런을 다시 한번 살펴볼까요? 행렬과 벡터의 곱에서는 아직 바이어스 텀에 대해서는 고려되지 않았는데요.이 바이어스는 하나의 벡터처럼 생각해서 행렬 벡터 곱셈에다가 더하는 방식으로 처리합니다. 그러고 나서 마지막으로
14:46 시그모이드를 통과시키죠. 이 시그모이드는 최종 결과물의 각 컴포넌트들에 대해서 각각 씌워 주는 것과 동일합니다. 자, 이제 수식을 조금 간단하게 써 볼까요? 웨이트랑 액티베이터랑 곱한 뒤 바이어스를 더하고 시그모이드를 통과시키면 되는데요. 이게 바로 다음 레이어가 되는 겁니다. 이건 심지어 코드로 만들기도 훨씬 쉽습니다. 왜냐면은 수많은 코드들이 행렬에 대해서 최적화가 되어 있기 때문이죠. 혹시 영상 초반에 뉴련이 단순히 숫자를 가지고 있는 것이라고 말씀드린 거 기억하시나요? 사실 인풋이 바뀌에 따라서이 누련이 보관하는 숫자가 바뀝니다. 그래서 우리는이 누련을 함수로 생각하는 것이 더 정확합니다.
15:33 이전층의 모든 누련의 출력을 받아서 0과 1 사이의 숫자를 출력하는 함수로 말이죠. 사실 전체 신경망도 하나의 함수입니다. 784개의 숫자를 입력으로 받아서 10개의 숫자를 출력하는 함수죠. 물론이 함수는 엄청나게 복잡합니다. 13,000개에 달하는 가중치와 바이어스 같은 매개 변수들이 특정한 패턴을 포착하고 수많은 행렬 벡터 곱셈과 시그모이드 함수 같은 비선형 변환이 반복되죠. 그럼에도 이거는 함수입니다. 사실 이렇게 복잡한 함수라는게 납득이 되긴 하죠. 그렇지 않으면 어떻게 숫자를 인식해서 몇인지 맞출 수 있겠습니까? 그런데 이거 도대체 어떻게 훈련할까요? 어떻게
16:18 데이터를 봐 가지고 적절한 가중체랑 바이어스를 학습할 수 있는 걸까요? 이건 다음 영상에서 만나실 수 있습니다. 그 영상 보고 싶으시다면 구독 놓아 주시고 알람도 켜 주세요. 많은 분들이 보셔야 제가 이걸 만드는 그런 기쁨도 느낄 수 있지 않겠어요? 딥러링 시리즈를 먼저 한 다음에 선형대소 시리즈도이어서 진행해 볼 테니 조금만 기다려 주세요. 감사합니다. 원본 영상에서는 리샤이라는 박사과정 학생이 다음 내용을 설명해 줬는데요. 어이 영상에서는 제가 직접 설명해 드리도록 하죠. 저도 박사 과정이니깐요. 한 가지 말씀드려야 할 거는이 시그모이드
17:06 함수라는게 물론 지금도 쓰이고 있고 굉장히 고전적이면서도 베이직한 그런 함수이지만 이제는 더 이상 그렇게 많이 쓰지는 않습니다. 거기에는 몇 가지 이유가 있는데 사실 그 이유까지 여기에서 말씀드리기는 조금 딥하고요. 그것보다는 요즘 어떤 걸 쓰냐? 바로 렐루 기반의 여러 액티베이션 펑션들을 많이 씁니다. 이런 렐루 펑션 같은 경우에는 어 음수일 때는 0이고 양수일 때는 x는 y인 그래프를 따르는 가장 간단한 논리니어 액티베이션 펑션인데요. 이런 걸 가지고 이제 뉴론이 액티베이트가 안 될지 또는 액티베이트가 될지 그 값을
17:52 어 정하는 거죠. 이게 훈련도 좀 더 잘 되고 안정적입니다. 어, 시그모이드를 사용하는 것은 훈련이 상대적으로 좀 느리고요. 그레디언트가 없어지기도 하는 뭐 그런 좀 전문 용어가 들어간 이유가 좀 몇 개 있습니다. 그에 비해서 렐루 같은 경우에는 훨씬 차일돼서 대부분 어 렐루 기반으로 많이 사용을 합니다. 네. 뭐 시청해 주셔서 감사하고 다음 영상에서 만나요. Ja.