alt

5/12 기계학습 - 순환신경망

Shared on May 12, 2026

07:38:31

자, 오늘 기계학습 교재 8장에 있는 순환신경망에 대해서 살펴볼 텐데요. 순환신경망이라는 것은 우리가 여태까지 살펴봤던 딥러닝 모델들 중에서 보면 입력에서 출력으로 할 때 입력층이 있고 중간에 어떤 원직층 같은 것들이 있고 뭐 또 그다음에 최종 이제 출력층이 있고 이런 식으로 해서 데이터가

07:39:04

신경망 내에서 한 방향으로 흐르죠 입력에서 출력 방향 입력층, 입력층, 그 다음층, 그 다음층 해가지고 이렇게 한 방향으로 쭉 흘러가요 그래서 그런 것들은 보통 피트 폴드 신경망 구조다 라고 하는데 순환 신경망이라는 것은 신경망 내에 순환에 해당하는 개념이 있는 그런 것이죠 중간에서 어떤 사이클이 있어가지고 데이터가

07:39:35

다음 단계로 건너가서 그 다음 단계, 그 다음 단계 이렇게 쭉 가는 것이 아니라 그 다음 단계로 갔던 것이 실제로 다음 법에 그런 인력의 순환적으로 영향을 받는 그런 경우에 신경망이에요. 그러한 신경망 구조가 어떤 일들을 처리할 때 적합한 구조인지 살펴보고 그런 사례들을 보도록 하죠. 기본적으로는 이 순차 데이터, 세퀀셜 데이터, 데이터가 어떤 순서가 의미가 있는

07:40:09

그런 데이터들을 처리하는 그런 용도로서 사용할 수 있는 것이 순간 신경만이 돼 그것들에 대해서 보도록 하죠 자, 그럼 세퀀셜 데이터라는 것은 어떤 그 순서, 시간적인 순서 보통 이렇게 얘기할 수 있을 텐데 그런 순서를 가진 데이터, 그것을 순차 데이터라고 해요 우리가 보통 CNN에서 받아들인 입력들을 보면 어떤 영상 사진을 어떤 사진의 종류인지 구분을 하기 위해서 입력을 받아들일 때 영상 하나

07:40:45

그 영상 하나의 그 피처들, 피처들 사이에 어떤 순서가 따로 없죠. 그래서 그 순서를 바꾼다고 했을 때 특별히 달라지는 그런 것은 없어요. 순서의 개념이 영상들 사이에 존재한다든지 그렇지는 않죠. 근데 이 시간성 데이터라고 하는 것은 어떤 시간에 따라서 그 값이 달라질 수 있는 데이터들 이런 것들이 쭉 입력으로 순서대로 들어온다고 했을 때 그런 것들

07:41:23

시간적인 어떤 의미가 있는 순차 순서가 있는 그런 데이터들을 부를텐데 그렇죠? 근데 이거는 보통 그 길이 자체가 하나의 샘플을 구성하는 길이가 모든 인픈에 대해서 동일하지 않고 다를 수 있겠다 가변 길이에 그런 것일 수 있겠다라는 것이죠 그래서 이런 시간적인 의미를 갖는 데이터들을 순차 데이터들 순서에 의미가 있는 그런 데이터들을 예를 들었을 때

07:41:58

예를 들어서 음성신호라든지 또는 어떤 특정한 주식의 시세 지수의 변동하는 시세 시간당 또는 분당, 초당, 일당 변동하는 그런 값들을 볼 때 순순업 어느 순간에 어떤 값, 그 다음 순간에 어떤 값 이런 것들이 순서가 의미가 있는 그런 데이터인거죠 음성신호도 마찬가지고 수도가 뒤바뀌면 그 신호 자체가 달라지만 의미가 달라지는 그런 것 또 심전도 신호, 그리고 또 순간순간에 샘플링한 데이터들이 그 순서에 따라서 의미가 있는 그런 것이고 그것이 바뀌었을 때

07:42:41

우리가 달라지는 그런 데이터들이죠. 그리고 유전자, 연 이런 것도 순서 바꾸면 의미가 또 달라지는 그런 사례들이죠. 그랬을 때 이런 것들이 또 그것뿐만이 아니라 우리가 문장 같은 것들 그것도 없을 것, 문장 내서의 어떤 문자들의 순서가 바뀌면 문자열에 순서가 바뀌게 되면 그 의미가 달라지는 그런 것들이죠. 그리고 문장

07:43:13

자연의 문장상으로는 각각의 문장의 길이가 다 다를 수가 있겠죠. 그래서 이러한 순서가 의미가 있는 그런 데이터들 이것들이 다 순차 데이터, 시퀀셜 데이터라고 하는 것들인데 그런 것들을 처리하기 위해서 그런 것들을 입력으로 받아서 출력을 낼 수 있는 그런 신경망으로서 순환 신경망, recurrent 네트워크라고 하는 것을 이용을 할 수가 있겠다는 것이고

07:43:45

이것들을 어떤 책으로 구성할 수 있는지에 대해서 살펴보는 챕터에요 그래서 순환신경망 RNN, Recurrent Neurodash이라고 부르는 구조들이 어떤 구조인지 그 다음에 그것들을 조금 더 개선한 LST암이라고 하는 구조는 어떤 것인지 이런 것들에 대해서 이 챕터에서 알아볼 예정이에요

07:44:15

그래서 기본적으로는 어떤 시간적인 특성을 갖는 순차 데이터라는 것들이 어떤 식으로 표현이 될 수 있는지 이런 것들에 대해서 한번 살펴보고 그 다음에 그거를 처리하기 위한 인력을 받아서 그에 대한 일을 하기 위한 순환신경망은 어떤 식으로 구성이 될 수 있는지 그 다음에 그걸 학습하는 것은 또 어떻게 되는지 그 다음에 이런 순차 데이터를 잘 처리하기 위한 그런 구조적인 기술을

07:44:47

또 어떻게 개선을 할 수가 있는지 등등 이런 것들에 대해서 살펴보도록 하죠. 순차 데이터라는 것이 어떤 식으로 표현될 수 있고 어떤 특성을 갖는지에 대해서 살펴보는 일부터 맥주를 할 텐데 당연히 순차 데이터라는 것은 여러 사업 측은 방금 여러 가지 사례들을 살펴봤지만 여러 가지 경우에 실제로 그런 데이터들이 이제 있을 수 있고 취득이 될 수 있고 그런 것들을 바탕으로 처리할 수 있도록 가입해야 되는 거죠. 그래서 신비전도 신호도 구해였고 주식 시세, 음성인식, 문장, 유전자 열 등등의 이런 것들이 순차 데이터로서

07:45:32

있는 것일텐데 숫자 데이터를 조금 더 표현하는 거라든지 이런 것을 측면에서 좀 더 살펴보도록 하죠. 우리가 예를 들어서 어떤 패드에다가 펜슬로 숫자 같은 것을 쓰고 해서 글씨를 입력을 시키는 인식을 시키는 그런 일을 생각을 했을 때 그러면 예를 들어서 숫자를 이렇게 쭉 펜슬로 이렇게 쓰는 것을 생각을 해보면

07:46:05

그러면 펜슬이 패드에 다 이렇게 쭉 이어지는 입력들이 실제 패드의 입장에서 그것들을 받아들여서 그 어떤 숫자의 인식을 하는지 필기 인식을 하는 거라면 그런 식으로 해야 될 텐데 예를 들어서 2라는 숫자를 썼을 때 이런 특정한 방향을 갖는 벡터의 형태로서 8방으로 예를 들어서 0번 방향, 1번, 2번 해서 이렇게

07:46:42

각각의 방향으로 일정한 크기로 쭉 쪼갠 것들의 방향들을 쭉 나열을 하는 형태로 이렇게 써지는 글씨를 표현한다고 해보죠. 그럼 숫자 1을 썼을 때 예를 들어서 이렇게, 이렇게, 이렇게, 이렇게 이런 화살표들이 쭉 연결이 되어 있는 그런 모양으로 순서대로 글씨를 이렇게 패드판으로 쓴다면 맨 처음에는 1번 방향

07:47:12

그 다음에 0번 방향 0번 해가지고 그 자체를 이렇게 쓰는 이 2자 모양으로 쓴 이것 자체를 이런 식의 입력으로 표현을 할 수가 있겠죠 1번 방향 0번 방향 0번 방향에서 이렇게 파란색의 화살표 드린 나라에는 순서대로 쭉 표현을 해줄 수가 있을 거에요 그렇죠? 온라인으로 이렇게 숫자를 쓸 때 그 온라인 숫자에 대한 표현 자체가 이렇게 될 수 있을 거고

07:47:47

예를 들어서 심전도, 신호 같은 것들을 표현한다면 그 3개의 채널로 이루어진 신호들을 표현하는 그런 방법이 필요하겠죠. 그래서 순차 데이터를 표현하기 위해서 기본적으로 쓸 수 있는 방법들을 생각을 해보면 신경망이 일단은 그것을 인풋으로 받아들여서 뭔가를 하려면 기본적으로는 어떤 벡터의 형태로 표현이 되어야 되겠죠. 자 그러면 이제 벡터가 쭉 들어오는데

07:48:19

그 벡터들이 여태까지 우리가 생각해본 신경망 구조를 보면 입력층에 노드 몇 개 있어가지고 몇 개의 데이터를 받아들이는데 그 크기, 각각의 그 대수, 그거는 찾으려는 변하기가 쉽지 않을 거예요. 그것들은 고정이 되어 있을 텐데 그것들이 그 다음 거, 그 다음 거, 또 그 크기의 것들이 그 다음 거, 그 다음 거, 그 다음 것들이 쭉 들어오는 그런 것들로서 하나의 입력을 이룬다면

07:48:51

그거를 표현하는 것이 필요하겠죠. 그래서 보통 벡터의 벡터 형태로서 여러분, 순차 데이터를 표현하는데 즉 벡터인데 그 각각의 요소들, 컴포넌트들을 보면 그것들이 또 하나의 벡터인 형태. 그래서 하나의 컴포넌트지 사실은 어떤 특정한 차원의 크기로 이렇게 표시가 되고 여기 X1, E, XT 이런 것들은 다 사실은 대부분 동일한 차원의 벡터 들리고

07:49:22

대신 샘플마다 이 T 몇 개, 그게 몇 개가 되어 있느냐 그것들이 달라지는 형태로서 가변기의 인풋을 이렇게 표현할 수가 있게 되는 거죠. 그래서 예를 들어서 숫자 여기 보면은 100766 뭐 이렇게 쭉 나가는 이런 거라고 했을 때 그리고 글자에 따라서 어떤 식으로 쓰느냐에 따라서

07:49:55

크기가 어떠냐에 따라서 길이는 달라질 수 있을 텐데 방향 이런 것들을 표현하는 이 값들을 각각 8개 중에 하나를 나타낼 수 있는 고정된 크기로서 쭉 순서대로 나타나는 형태로 이런 이렇게 써지는 입력을 재표현할 수가 있는 거겠죠 그래서 그 크기는 1이고 예를 들어서 그게 20개가 하나의 글자를 쓴 것을 나타내는 것이 될 수 있을 거고 고거 또 25개는 또 그것이 또 다른 어떤 것에 대한 표현이 있고 뭐 이런 식으로 될 수 있을 거예요

07:50:31

그 다음에 온라인 숫자는 즉 요거 자체가 1차원인 어떤 그런 값들로서 길이가 t, 요 t 자체가 달라지는 그런 것으로서 표현이 될 수 있는 것일 거고 뭐 심전도 같은 경우는 요 채널이 3개니까 요 3개의 값 자체가 각 채널에서 나오는 요 값 자체가 하나의 팩터 컴포넌트로서 이렇게 쓸 수 있을 거고 요것들이 가면의 길이로서 그쵸

07:51:04

몇 개냐에 따라서 샘플링을 몇 번 하고 측정하는 길이가 어느 게 어느 게 있느냐에 따라서 여기에 달라질 수 있겠죠 그래서 입력 자체가 x1, x도 이렇게 되고 거기에 대해서 나가야 될 값으로서 y 이런 것들이 있다면 이런 식으로 순차 데이터를 각각 n개가 있다면 n개 자체가 각각은 이런 형태로 벡터의 벡터 형태로 표현된 것으로서 있을 수 있을 거예요

07:51:40

그래서 이건 각각의 샘플들이 여러 측으로 표현이 될 수 있다는 얘기일 거고요. 그래서 이거 각각 길이는 일단은 동일한 차원, 여기 3차원, 3차원 이런 것들도 있고 이거의 길이가 각각 샘플별로 달라질 수 있겠다라는 거죠. 그 다음에 텍스트 이것도 순차 데이터의 일종이다 라고 했죠. 거기 텍스트에 들어가 있는 단어의 순서가 바뀐다든지 문자의 순서가 바뀐다든지 했을 때 의미가 당연히 달라질 수 있는 그런 데이터가 된 거니까 순차 데이터죠.

07:52:28

번역을 한다든지 할 때도 어떤 단어의 한 언어로서 표현된 단어, 문자, 열이 한 문장일 때 다른 문장으로 번역을 한다고 했을 때 그럼 각 문장의 길이가 다 달라질 수 있을 텐데 그 각각의 문장을 이루는 단어를 표현하는 그런 길이 이런 것들을 팩터로서 표현을 했을 때 그것들은 어떤 특정한 방법으로 구성된 크기로서 이렇게 표현이 될 수 있어야 되겠죠.

07:53:01

예를 들어서 텍스트 같은 경우에 그것도 순차 데이터의 일종일텐데 그거를 표현하는 방법들을 생각을 해 본다면 여태까지 텍스트로 되어 있는 그런 데이터들을 가지고 일을 하는 경우에 기계학습적인 그런 방법을 쓸 때 딥러닝 그런 기법을 쓰기 전에 사용했던 정보 추출이라든지 정보 검색이라든지

07:53:36

이런 것들을 했을 때 쓰였던 방법들을 생각을 해보면 일단 기본적으로 어떤 언어를 구성하는 단어들이라든지 이런 것들을 벡터의 형태로서 표현할 수 있는 방법들을 생각을 해보고 그것들을 바탕으로 문서 전체를 그런 신경망의 인풋으로서 받을 수 있는 벡터의 형태로서 표현하는 그런 방식으로 생각을 많이 했죠. 그래서 기본적으로 문장에 사용되는 그런 단어들 이런 것들을 가지고

07:54:11

사전을 구축하고 사전에 이게 몇 번째 단어다. 예를 들어서 이런 단어의 고유번호라든지 이런 것들을 이용을 해가지고 전체의 문서에서 어떤 문장, 단어들이 몇 회가 나타나고 어디에 나타나고 하는 그런 것들을 표현을 하는 그런 일들을 할 수가 있었죠. 그래서 이런 나름대로의 순차 데이터인 텍스트 데이터들을 표현하는 제한된 몇 가지 방법들이 있는데

07:54:47

단어 가방이라는 것, 이건 사실은 순서의 개념이 들어가 있지는 않은 그런 것이라서 순차 데이터를 표현하는 적절한 방법이라고는 얘기하기는 힘든데 아무튼 텍스트를 표현하는 하나의 방법으로서 제한된 그런 방식이니까 일단 소개를 해놨고 그 다음에 원 핫코드, 어떤 위치에 있는지 그걸 나타내줄 수 있는 원 핫코드 방식, 단어 인베이딩 방식, 여러 가지 순차 데이터로서의 텍스트를 표현할 수 있는 그 표현 방법들이 제한이 되었어요. 그래서 그것들을 한번 보도록 하겠습니다. 백업 워스, 단어 가방, 단어의 백이라고 하는 것은 그냥 말 그대로 단어들을 백 안에 담아놓은 것처럼 일반적으로 백이라는 구조를 생각을 해보면 그 안에 있는 데이터들에 대해서 어떤 순서를 정하지는 않은 그런 구조를 보통 백이라고 부르죠.

07:55:43

우리가 자료구조로서의 백이라는 것을 생각을 해볼 때도 그 안에 들어갈 때의 순서라든지 또는 그 안에서의 순서라든지 이런 것들이 따로 의미가 없는 그런 구조로서 백을 얘기를 해요 그래서 여기서도 어떤 문장 또는 문장으로 이루어진 문헌 이런 것들, 문서 이런 것들을 표현을 할 때 예를 들어서 그 전체 문서에서 어떤 단어가

07:56:16

사전에 우축되어 있는 그 단어들을 중심으로 그 단어가 몇 번씩 등장하는지 이런 것들을 예를 들어서 어느 위치에서 등장하는지 이런 거는 고려하지 않는 형태로 표현한 것. 그거를 보통 단어 가방이라고 하는데 단어가 예를 들어서 지금 문장을 구성하는 그런 기본적인 차전에 있는 단어가 M개가 있다 라고 하면은 그러면 이제 각각의 첫 번째 사전에 있는 첫 번째 단어가 M차원의 사전을 나타내는 팩터의 첫 번째 컴포넌트에 해당하는 것이고 두 번째 단어가 두 번째 컴포넌트 해서 M개의 단어를 가지고 있는 사전은 M차원의 팩터

07:57:02

그것들을 이용을 하는 문서들은 점차원의 벡터로서 표현이 가능하겠죠. 그래서 그 문서에서 예를 들어서 어떤 단어가 특정 단어가 5번 나온다 그러면 그 단어에 해당하는 위치의 값으로 5를 갖고 뭐 이런 식으로 그 Frequency를 각각의 컴포넌트를 갖는 그 단어가 문장에서 몇 번 나타나는지 이런 것들을 갖는 그런 형태로 표현한 것이 빼고 볼 수 있어요. 그래서 단어가 상대적으로 어떤 단어에 비해서 앞에 있는지 뒤에 있는지 이런 것들은 사실은 나타낼 방법이 따로 없는 뭐 그런 표현 방식인 거죠. 단어가 나타나는지 안 나타나는지는 뭐 일렁으로서 일단 표현을 할 수 있고 이제 그것보다는 조금 더

07:57:46

각각의 단어가 몇 회나 나타나는지까지도 표현할 수 있는 방법인데 근데 그게 어떤 순서의 의미를 갖지는 않는 단어 사이에 어떤 순서로 되어 있는 문서라든지 이런 것들은 나타낼 수는 없는 그런 방식인 거죠. 그래서 이러한 표현 방식은 일단은 어떤 문서를 예를 들어서 검색을 하려고 한다. 어떤 키워드가 들어가 있는 문서들 뭐 이런 것들을

07:58:18

예를 들어서 검색을 한다고 했을 때 이런 방식을 이용하면 어떤 키워드가 이 문서에서는 몇 번 나타나고 이런 것들은 알 수 있으니까 그걸 가지고 특정 키워드가 나타나는 문서들을 이렇게 추출을 하고 하는 일들은 검색을 하고 하는 일들은 할 수 있게 하는데 그 안에 단어들이 어떤 순서로 나타나는지 어떤 문장인지 이런 것들까지는 사실은 정확하게 알 수는 없는 전략 방식인 거죠

07:58:51

그래서 이런 순서의 개념은 사실은 잘 표현이 안 되는 그런 것이기 때문에 기계학습적인 인풋 순차 데이터로서 인풋을 표현하는 방식으로서는 사실은 뭐, 본밀하게 얘기하면은 쓸 수는 없는 그런 방식이에요. 아무튼 텍스트를 일단 벡터화해서 표현하는 그런 표현 방식으로서 제가 배울 수 있는 것이다 라는 거고요. 그 다음에 이제 원 핫코드라고 하는 것. 이거는 단어 단어가 이제 M개의 단어가 있는 어떤 사진이 있다고 했을 때 그 단어가 그 사전에서 몇 번째 단어냐, 즉

07:59:29

이런 것들을 이제 나타낼 수 있을 텐데 그러면은 각각의 문장에서 또는 문서에서 그 단어들이 그게 실제로 어떤 단어인지를 그 사전에 위치로 가지고 그걸 벡터화해서 표현한 형태로서 그거를 표현할 수는 있겠죠 예를 들어서 영어 사전을 생각을 했을 때 april is the cruelest month 라고 하면은 그러면 april 이란 단어가

08:00:01

사전에서 예를 들어서 순서대로 딕셔널이니까 순서대로 세 번째 단어라면 원 핫 벡터라는 거는 하나에 1만 있는 하나에 1만 핫한 그런 표현 방식인 거니까 단어 전체 만개면 만개 또는 M개면 M개에서 그 중에 사전에 있는 순서대로 몇 번째에 해당하는 그것만 1이 그 단어를 나타내는 순서만 1이 위치만 1이 되는 형태의 벡터로서

08:00:34

그래서 첫번째 단어는 'A'로이구나. 그 다음에 일곱번째 단어는 'is'구나. 300번째 단어는 'the'구나. 이런 식으로 해서 순서대로 쭉 나열하면 요거를 표현하는 나름대로의 'factor'에서의 표현이 가능한 방식, 단어의 순서. 또 이렇게 실제로 표현할 수 있는 어떤 단어가 어디에 나타나는지 순서대로 표현하는

08:01:09

방법으로서 쓸 수 있는 것인거죠. 그러면 여기 단어가 이렇게 5개가 있다면 첫번째 단어에 대한 원학 팩터, 두번째, 세번째 5개 원학 팩터로서 구성된 형태로서 이 문장을 표현을 할 수가 있을거다. 그래서 이 문장은 M 차원의 동일한 차원을 갖는 형태로서 길이는 5인 팩터죠.

08:01:43

이렇게 표현을 할 수가 있겠죠. 앞에서 얘기하는 시퀀셜 데이터의 형태이죠. 이건 벡터의 벡터인데 이것이 dt. 이것에 해당하는 게 전체 5개가 있고 전이고 각각의 또 요소는 m차원 벡터이고 그런 데이터의 표현 방식입니다. 그래서 이것은 예를 들어서 100만 개의 단어를 갖는 사전이라면

08:02:16

1이 하나 있는 0이 99,999개인 100만 차원의 벽터로 표현이 되는 거죠 그 단어를 표현하기 위해서 그만큼 크기에 벡터를 써서 하나의 단어를 표현하는 방식이에요 그래서 사실은 굉장히 비효율적인 방식이죠 1 하나만 가지고 나머지는 다 0이 있는 값이니까 공간만 쓸데없이 많이 차지하는 그런 표현 방식이라고도 볼 수 있어요 그리고 이거는 어떤 단어가 어느 문장에서 어디에 나타났는지는 알 수 있게 하는 그런 표현 방식인데 이거는 이 자체로서 단어가 이게 무슨 단어다만 나타내는 것인지

08:03:00

즉 1, 0, 0 해서 이런 식이지 단어로서 예를 들어서 어떤 단어를 표현한 하나의 벡터가 있다고 했을 때 N 차원인데, 다른 단어하고 예를 들어서 의미상 비슷한 단어인데 그런데 실제 표현된 벡터로 보면 그냥 1이 어디에 있느냐만 차이가 있는 벡터끼리의 유사도 이런 걸로 따져봤을 때 사실은 벡터끼리의 비슷한 벡터는 아닌 단어는 비슷한 것이다

08:03:36

그런 것일 수 있는 거죠. 그래서 다른 간의 유사도를 이렇게 표현 방식을 통해서 얻어낼 수 있는 그런 방법은 사실은 없는 그런 표현 방식이다. 대신 문장에서 어떤 단어가 어느 위치에 나타나는지 그거는 표현할 수 있게 하는 방법인 거죠. 그래서 이런 것들을 조금 더 그런 그 뭐 어떤 그 표현 상에 그 비효율성 그것이 뭐 표현을

08:04:08

그 하는데 있어서의 공 차지하는 그 공간상의 비율성 뭐 이런 것들을 좀 제 개선을 하기 위해서 개인제 신경만 구조해서 받아들이는 그런 인풋으로서 하실 수 있기 위해서 쓸 수 있는 방법으로서 월드 임배딩 단어 임배딩 이라는 그런 방식을 수소한 거죠 그래서 실제로 의미상 이건 지금 기본적으로는 어떤 팩터의 형태로서 또 뭐 택수 데이터를 좀 표현하려고 하는 건데 조금 어 이런 그 원합 백터 같은 것들이 의미상 비슷한 저 텍스 등으로서 단어의 의미인 같는 비슷한데 그 표현이 됐을 때 그 테러서는 실제 비슷한 벽터는 아닌 그런 것을 이 가지는 그런 단점을 나름대로 보안을 하기 위해서 즉 의미상 비슷하다면

08:04:59

벡터로 표현이 되었을 때도 수학적인 그런 벡터로서의 유사성을 가진 벡터끼리 비슷한 그런 형태가 될 수 있도록 만드는 그런 표현 방식이 이제 단어 인베딩에 주어진 그런 단어들을 가지고 그것들에 대해서 나타나는 어떤 뭐 단어 사이에 어떤 상호작용이라든지 그런 것들을 바탕으로 이제 비슷한 단어가 실수 벡터로 표현이 되었을 때 비슷한 실수 벡터가 될 수 있도록 벡터로서 비슷한 벡터가 될 수 있도록 의미상 비슷한 단어가 표현이 되었을 때

08:05:38

실제 비슷한 벡터로서 될 수 있도록 이런 식으로 만들고자 하는 것 실수를 벡터화하는데 그걸 그런 식으로 변화하는 것 그런데 그 변화하는 과정에서 일반적으로 원학 벡터처럼 단어가 M계일 때, 3000계일 때, 3000차원의 원학 벡터로서 변화하는 그런 방식이 아니라 그것보다는 훨씬 사이즈가 줄어든 그런 방식으로 차원수가 줄어든 그런 방식으로 표현을 하고자 하는 것 현재 단어 임패딩이라는 거죠

08:06:10

월드를 팩터로서 표현하는 월드 팩 이런 것들은 단어 인베딩을 하는 개념이에요 그것도 다 학습을 통해서 그런 콜포스라고 하죠 그 말 뭉치 텍스트 데이터 이렇게 있는 자연어 데이터들을 묶어놓은 그런 것들을 바탕으로

08:06:45

각각의 단어가 벡터로서 표현이 되었을 때 의미가 유사한 벡터들끼리 벡터로서도 유사한 벡터가 되도록 변화하는 일 그런 방식을 통해서 그거를 학습을 통해서 변화하는 일들을 할 수 있도록 하는 그런 것이 단어 인베딩이라는 거죠 그래서 여러 가지 월 투 백 방식들이 개발되었는데 이거는 순차 데이터를 조금 더 공간적으로도 효율적으로 표현할 수 있게 하는 그리고 그 의미 자체가 수학적인 벡터로서도

08:07:20

핵터로서도 수학적으로도 유사한 그런 것이 될 수 있도록 그렇게 만드는 방법이라는 거죠 원 핵턴에 비해서는 공간적인 측면에서의 효율성이라든지 또는 의미적인 측면에서의 그런 것이라든지 이런 것을 훨씬 개선하는 그런 방식이다 아저씨 남성 이랬을 때 아주머니 여성 이런 것들이면 이렇게 관련이 있는 이런 것들끼리 실제 핵터로서 표현했을 때도 이런 것들끼리 유사하고 이런 것들끼리 유사하고 예를 들어서 이런 것이 될 수 있도록

08:07:59

그런 방식인거죠. 여러가지 방법들이 있는데 아무튼 순차 데이터를 표현하는 하나의 방법으로서 이런 것들을 쓸 수 있다. 이런 것들 뿐만이 아니라 요즘에 LNM들 대규모 언어모델에서 사용하는 positional coding 그런 방식을 통해서 단어들 사이에 순서와의 개념 이런 것들을 표현하는 방법들이 개발이 되고 그런 것들을 통해서 대규모의 언어모델을 만들고 하는 그런 일들이 가능해진 거죠.

08:08:38

아무튼 이제 순차 데이터를 표현한 방법으로서 일단 교재에 나와 있는 것은 이런 것들이고요. 자 그래서 이제 순차 데이터라는 것, 예를 들어서 택스 데이터도 그 중에 하나고 심전도 3채널 신호, 시그널들도 그런 것들이 있고 주식 시세들 그런 것들 또다 타임스위를 쓰이는 데이터들 이런 것을 다 제 그런 순차 데이터의 예다라고 예를 들어서 봤는데 자 이거는 기본적으로

08:09:17

순서가 중요하다. 데이터에 있는 그 특징들의 순서 그것들이 중요하다 라고 했죠. 자연원 문장에서도 당연히 순서가 바뀌면 단어들의 순서가 바뀌면 그 의미 자체가 바뀌는 그런 것이 될 테고 순서가 바뀌었을 때 그 의미가 달라지지 않는 그런 거라면 비순차 데이터인 거죠. 그렇죠? 그래서 영상들은 쭉 각각의 사진들을 분류하는 목적을 사용했을 때 그것들이 사진이 A라는 사진 B라는 사진이 서로 순서가 바뀐다 하더라도 최종적인 분류에 영향을 미치지는 않을 그런 데이터들일 텐데

08:09:58

순서가 의미가 있다면 어떤 순서로 쭉 들어오느냐에 따라서 주력이 형제되는 그런 경우라면 순서를 고려를 해야 되는 거고 그럴 때 순차 데이터가 실제로 어떤 식으로 표현되어야 되는지 중요하게 되겠죠. 그래서 이런 순차 데이터 아까 얘기했지만 길이가 각각의 벡터의 벡터 형태로 표현되어 있는데 전체의 벡터에 각각 벡터에 해당하는 것 그것이 다 다를 수 있는 샘플마다 다를 수 있는 그런 데이터들이겠다 하는 거죠.

08:10:30

그래서 이런 것들을 처리하기 위해서 순환신경망 recurrent 네트워크라고 하는 것이 개념이 필요하게 됐고 그 다음에 recurrent 네트워크는 기본적으로 은닉층에 있는 그런 노드들에 대해서 서로 순환적으로 대지들을 통해서 은닉층에 있는 노드들끼리 연결되어 있는 그런 구조로서 이런 가변의 길이들을 수행할 수 있도록

08:11:01

하는 거다. 출생품마다 길이가 다 다를 수 있으니까 그거를 처리할 수 있는 것으로서 그 길이에 맞는 은닉층 몇 개를 둔다든지 하는 것이 불가능하니까 개념적으로 은닉층의 수가 작아졌다 그 샘플에 따라서 많아졌다 라는 것이 가능하도록 개념적으로 그래서 그거를 은닉층에 있는 노두들 사이에 순환해지를 부여를 해가지고 해결하는 방식으로 구성을 한다. 순환신경망이라는 것이 자 그래서 이제 순환신경망이 이런 순환 데이터를 처리하기 위한 그런 구조로서 개념적으로 등장을 했는데

08:11:43

recurrent neural network, RNN이라고 부르죠. 앞에 우리가 CNN 구조, convolutional neural network 할 때 CNN 얘기했었는데 순환 친경망 recurrent network로서 RNN이라고 부르는데 이거는 뭐 이런 순차 데이터가 있다고 했을 때 이 각각의 이것들끼리는 다 차원이 같다라고 했어요. 그렇죠. 팩터들끼리. 근데 이 길이가 달라질 수 있는 그런 샘플마다 달라질 수 있는

08:12:15

그 샘플마다 달라질 수 있는 그런 거다 그런 거를 처리할 수 있어야 된다라고 했는데 그래서 순환신경망이 이런 걸 제대로 처리할 수 있으려면 가져야 될 그런 기본적인 필수적인 그런 기능들이 있는데 일단 이 시간성을 잘 반영해서 들어오는 데이터들을 처리할 수 있도록 하는 그런 것들이 필요하고 그다음에 가변의 길이의 샘플들 -어떻는.

08:12:47

관리를 할 수가 있어야 된다. 그 다음에 이제 소위 문맥 의존성. 예를 들어서 어떤 저 이렇게 순서적으로 쭉 뭔가가 입력으로 들어온다고 했을 때 전에 들어왔던 그 입력하고 나중에 들어왔던 입력 사이에 어떤 나중에 들어왔던 들어오는 입력이 그 전에 들어왔던 입력에 뭔가 의존을 하고 있는 문맥상 의존을 하고 있는 경우가 있는데 예를 들어서 자연어 문장에서 앞에 쭉 뭔가 얘기를 하고 뒤에서는 어떤 것들에 대해서 예를 들어서 앞에서 나타난 뭐를 이용해서 그거를 대명사로서 언급을 하고 한다는 그런 거를 했을 때 그 대명사가 앞에 뭐를 나타내는 거냐 등등 이런 것들은 다 이제 앞에 들어온 정보가 뒤에 들어온 정보에 어떤 식으로 영향을 미치는지에 따라서 문제 형성을 하게 되고 그런 것들을 이제 파악을 할 수가 있어야 될 텐데 그런 것들을 잘 할 수 있게 하는 이전에 들었던 그런 내용들을

08:13:47

잘 신경망이 기억을 하고 있다가 그것들에 대해서 그런 것들을 잘 처리할 수 있는 그래서 적절한 그런 순서에 맞는 그런 순서가 의미가 있는 인정이 들어왔을 때 그에 따라서 출력도 적절하게 내보낼 수 있는 그런 구조로서 있어야 될 필요가 있는 거죠 그래서 이건 일반적으로 순환신경망이라고 해야 되면 갖춰야 될 세 가지 특성을 얘기를 해요 자 그러면 이제 그 구조를 한번 보죠.

08:14:19

R&N의 구조, 위크런트 뉴럿, 순환의 구조를 갖는다라고 했는데 이건 기본적으로는 어떤 입력을 받아야 되고 그 입력에 대해서 출력이 어떤 게 나가야 된다면 출력층이 있어야 되고 그거는 같은데 그러면 내부적으로 입력에 대해서 출력을 내보내는 과정에서 보통 CNN 구조 같은 경우, MLP 같은 구조 보면 은닉층에 해당하는 것들을 사용을 하죠, 중간에 층들은 여기는 지금 은닉층, 일반적인 그런 피드폴드 구조에서는 입력에서 은닉층, 은닉층에서 출력층으로 돌아가는 어떤 방향에

08:14:58

구조인데 여기서는 은닉층에 있는 노드들 사이에 이런 순환이 존재하는 그런 형태로 가변의 길을 처리할 수 있도록 그렇게 만들어요. 그래서 이것과 일반적인 이런 구조와 다른 점이 순환의 질 이 위크런트 엘지를 은닉층에 갖는다라는 점이 달라서 순환신경만 구조라고 부르는 건데 그런 구조를 일반화해서 생각을 해보면 이런 식으로 볼 수 있죠. 입력층이 있어요. 반대적인 입력.

08:15:32

그 차원에 해당하는 건 당연히 몇 차원의 벡터 아까 여기 아까 그 컴포넌트들이 있을 텐데 그 몇 차원에 해당하는 컴포넌트들이 쭉 이렇게 순서대로 이렇게 들어야 될 텐데 그것을 받아들이는 그 층 그렇죠? 그래서 이것의 차원이라면 아까 순차 디지털을 표현하는 벡터의 벡터에서 그 안에 컴포넌트의 벡터에 해당하는 그 차원일 거예요. 그렇죠? 그렇죠? 그것이 순서대로 쭉 이렇게 들어오는 입력.

08:16:03

샘플을 구성을 하는 거죠 순차 데이터로서 그래서 그걸 받아서 순서대로 이제 뭐 앞에 게 뒤에 거하고 영향이 관련이 있을 수도 있고 뭐 할 텐데 그것들을 잘 순서대로 잘 받아가지고 적절한 그 순서에 맞는 어떤 뭐 예를 들어서 출력을 된다든지 하는 일을 할 수 있도록 그 과정 전에 들어왔던 거 뭐였지? 그 전에 들었던 거 뭐였지? 이거 현재 인풋이 지금 들어오고 있는 순간에 그런 것들을 잘 기억을 해놨다가

08:16:37

그거를 반영을 해서 출력을 낼 수 있도록 하는 그런 것이 필요한 거죠. 그래서 여기 각각의 은닉층에 해당하는 이 여기서 그냥 한층처럼 해놨는데 뭐 한층이라도 자신으로 다시 정보가 들어갔고 나간 출력이 자신으로 들어오고 또 다른 노드에도 각층에 있는 다른 노드에도 정보를 제공하고 출력을 주고

08:17:09

또 다른 것으로부터 출력을 받기도 하고 하는 그런 형태로 요거 은닉층에 있는 노드들 사이에 이런 수만 사이클을 만들어 놓는 형태로 그 구조 요거를 만들어 놓는 형태로 이렇게 구현을 해주면은 그게 이제 가변의 길이를 처리할 수 있는 그런 형태로 생각을 할 수 있다는 거예요. 그리고 그것들을 또 출력값을 내보낼 수 있는 출력층으로 이렇게 연결을 시키고 그러면 여기서 나가는 것이 자신의 층에 있는 노드로 연결되는 엔지도 가지고 있고

08:17:47

출력층으로 가는 고해지도 가지고 있고 그런 구조로서의 의미층을 우리가 생각을 하는 거죠 그래서 여기에 지금 여기 입력 들어와서 그거를 받아서 의미층으로 이렇게 가든지 고대하고 하는 일들은 당연히 필요할 거고 이것은 마찬가지로 입력에다가 바이어스 값들에 해당하는 1이라는 거 여기도 마찬가지로 1 그것들이 이렇게 이제 따로 두는 형태로 이렇게 해놨어요

08:18:20

입력에 1의 입력을 더 추가한 형태로 우리가 예전에 드레시올드 MLP 만들 때 했던 것처럼 프로셉션 만들 때 했던 것처럼 1이라는 입력 거기다가 추가 하나 더 하고 1차원도 증가시켜서 거기에 바이어스에 해당하는 요 값들까지 학습할 수 있도록 여층에서도 마찬가지 이런 식으로 이렇게 할 수가 있겠다라는 거죠. 그래서 입력에 해당하는 거 여기 파란색으로

08:18:58

엔지로 표현을 해놨고 여기서의 recurrent한 그런 엔지들은 까만걸로 출력과 연결되는거 빨간색으로 표현을 해놨습니다. 그래서 이건 이제 각 층에 있는 각각 노드에 대해서 이렇게 연결상태가 나타나는 것을 보여주고 있는 형태고 그러면 이제 각각 엔지들이 있으면 엔지의 값들, 그것들을 어떤 식으로든지 표현을 할 수 있을거고 그거를 실제로 그 입력에 대해서 출력, 시퀀셜 데이터 들어왔을 때 순차적인 데이터에 의해서 결정되는 출력값이 또 고부에 맞게 나갈 수 있도록

08:19:35

그쵸? 이제 있고, 이 값들, 이 웨이트들, 이것을 학습을 시켜야 된다는 거죠. 예신경을 해서, 그쵸? 그래서 이렇게 표현할 수도 있고, 이것을 콜랩스를 해서, 축약을 해서, 그쵸? 이런 형태로 표현할 수도 있을 거예요. 입력층, 은닉층, 노드 하나씩만 있는 것처럼 이렇게 해가지고, 실제 입력층에 있는 모든 노드들에 대해서 이렇게, 순환의 지가 있는 것으로,

08:20:09

이렇게 표현을 할 수도 있겠죠 그래서 요거는 축역형 요거는 좀 이렇게 펼친형 뭐 이런 식으로 얘기할 수 있을 거예요 자 그러면 이제 요거를 수식으로 쓰자면 자 근육층이 여기 이렇게 서로 연결되어 있는 요것이 없는 요 거운 색의 엣지가 없는 그런 구조 우리가 피드포워드 이렇게 들어와서 이것들에 의해서 또 여출력으로 나가는 요런 것만 생각을 하면은

08:20:45

그러면 지금 현재 들어오는 이 인풋에 의해서 이 계산해서 출력이 그대로 결정되나가는 그런 방식이죠. 그러면 그 출력은 현재 들어오는 그 출력 입력에 대해서만 관여를 받는 거고 그거에 의해서만 이거 상태 결정되고 이거 값을 결정을 하는 그런 일을 하게 되는 건데 이렇게 중간에 이것들이 서로 이렇게 프론트하게 이렇게 돼 있으면 이제 첫 번째 입력 들어올 때 뭔가 계산을 해서

08:21:18

그 결과들이 또 자신에게 이렇게 연결이 돼가지고 이제 입력으로서 제공됐고 그러면 그 입력으로 제공된 거에다가 그 다음번 들어오는 그 입력 시간상으로 그 다음에 있는 그 입력이 들어와서 또 여기에 입력으로 사용이 됐고 그거는 전에 여기서 나갔던 전에 입력 들어왔던 거에 의해서 이렇게 출력으로 받아서 다시 입력으로 들어오는 그것과 결합을 해서 다시 이 노드의 입력으로 이것과 함께 이것 정보까지 입력으로 작용을 하는 셈이 되는 거죠

08:21:57

거기에 계속 반복적으로 순서가 다음 거 다음 거 들어올 때마다 반영이 되는 거죠. 그래서 그걸 수식으로 표현을 한다면 현재 T 시점에 들어오는 그런 입력, 그걸 XT라고 한다면 아까 여기서 이거예요. 이거 중에 어떤 거에 하나, 이 순서대로 쭉 들어올 텐데 그 중에 어떤 거에 하나가 들어왔을 때 T 시점에 들어오는 그 팩터, 아까 그 전체 벡터의 벡터 중에 컴포넌트 벡터에 해당하는 그 값이죠. G 시점에 들어오는.

08:22:33

이렇게 TGT라는 순간에 들어오는 거고 그거하고 현재 가지고 있는 매개변수 신경명의 입력층 주력층으로 내보내는 거기에 있는 모든 매개변수 그거에 의해서 같이 결정이 되는데 입력층에 연결되어 있는 유가 이거에 의해서 결정이 되는데 이제 이렇게 리코르트

08:23:07

엣지가 있다 보니까 바로 전 순간에서의 그 노드에서 이렇게 여기 요거를 통해서 받아들여지는 전에 입력에 들어온 것에 의해서 결정됐던 그 값이 다시 입력으로 들어오기 때문에 이거의 입장에서는 다음 순간에 그것까지 고려를 해서 그것들을 동시에 입력으로 받는 것처럼 해서 어떤 연산을 해야 된다는 거죠 그래서 현재 여기 데이터 값 뭐 같은 건 있고 아무튼 현재 들어오고 있는 거 바로 전 인풋에 들어온 것에 의해서 결정된 어떤 값

08:23:47

가지고 다음번 자신의 값을 결정을 하는 거예요. 게이지 값을. 그래서 그게 계속되면서 전전원에 있던 것들이 요거에 영향을 미쳤을 거고 반영이 또 됐고 해서 첫 번째부터 두 번째, 세 번째, 네 번째에서 쭉 그 값들이 그 입력들이 사실은 은닉층에 있는 노드의 상태를 계속 업데이트를 하는 그런 반대 사용이 된 것이고 그 정보들을 다 말하자면

08:24:20

반영을 한거죠 반영을 해서 현재 출력을 여기서 나가는 출력을 결정을 하는 그런 방식이 된다 그래서 이렇게 표현을 할 수가 있을 거고 어떤 1순간 여기 요구합시 1부터 이렇게 들어왔을 때 그 순간에 계산을 해가지고 그 결과를 또 이 순간 2에 t가 2인 경우에 또 계산하고 그걸 바탕으로 3인 경우에 또 2에 있는 값하고 3회 들어온 그 순간에 값을 가지고 또 결정을 하고 등등

08:24:54

그래서 결국 P라는 빅티까지 나복을 하면 그걸 가지고 하나의 샘플을 읽어드린 셈이 되는 거고 고구역에서 뭐 예를 들어서 어떤 출력을 해야 되는지 아니면 중간중간에도 어떤 출력을 할 수 있는 거고 그렇게 할 수 있겠다는 거죠. 그래서 그거를 그림으로 이렇게 하는 거를 계속 이렇게 반복되는 거를 최소한까지 되는 거를 그림을 그려보면 X1 순간에 들어온 것을 입력으로 받아서 H1의 어떤 상태를 결정을 하는 거고 그 값 가지고 이런 데서 출력을 내는데

08:25:27

그 순간에 그거 나왔을 때 곧장 출력이 나가야 되는 그런 상황이라면 뭐 그 메모레는 일을 하고 그 다음에 자신의 그 값 가지고 다음번 들어왔을 때 뭐요 다시 어떻게 연결이 되어 있느냐 웨이트에 따라서 업데이트를 하는 그런 방식으로 할 수 있는 거죠. 우리 업데이트 된 값 가지고 현재 들어오는 일이고 전에 이거 가지고 이게 결정이 돼서 뭐 이런 식으로 해서 첫 번째 두 번째 세 번째 그래서 티번째까지 하면서 이것들이 각각 이렇게 나갈 수도 있고 아니면 중간에 나온다 가다가 어느 순간 이후에 나갈 수도 있고

08:26:08

어떤 일을 하려고 하느냐에 따라서 달려질 수 있을 텐데 아무튼 그런 식으로 할 수도 있을 거예요. 그래서 항상 모든 입력 들어오는 순간에 출력이 어떤 식으로 결정돼 나가야 되는 건 아닐 수 있는데 기본적으로 나가야 된다면 이런 식으로 구조를 생각을 할 수가 있는 거죠. 이게 지금 그 구조고요. 그래서 그거를 순환을 하는 그런 것 바로 전에 들어와서 값이 결정된 고 H하고

08:26:41

그 다음 순간에 오고 있는 그 입력에 의해서 다시 T 순간에 H값이 결정이 된다라는 거고 계속 이렇게 그러면 결국 이거는 또 이걸 다시 한번 T-1로 해서 쓰면 이런 식으로 해서 쭉 이렇게 풀어 쓸 수 있겠다라는 거예요. 이런 Relation에 해당하는 것을 이렇게 표현할 수가 있겠다라는 거죠. 그래서 여기 영 이것부터 해가지고 쭉 T까지 이런 식으로 쭉

08:27:16

X1 순간에 들었던, 처음 들었던 것, 두 번째 들었던 것, T1, 마이너스 세 번째 들었던 것, T1 순간에 들어오는 것까지 다 이렇게 반영을 한 형태의 값으로 H를 최종적으로 결정을 하는 그러면 그 순서에 의해서 들어오는 그 값들이 다 최종 결정을 내는 H값을 정하는 데 있어서에 다 어느 정도씩 반영이 된다는 거죠. 그렇죠? 순서대로. 그래서 아까 여기 그림에서 여기 초기 입력 값을 은닉층에 연결해주는 이 가중 배치의 가중치들 U로 표현했고

08:27:58

CNN 구조라든지 MLP 구조에서도 첫 입력을 받아들이는 층, 은닉층에 연결하는 것을 U로 표현했었죠. 그 다음에 은닉층에 있는 것끼리 연결시켜주는 것, Big W로 표현했고, 그 다음에 그거를 출력으로 연결시켜주는 것, V로 표현했는데, Bias에 당하는 것, 여기서는 요충은 E, B, 요충은 E 이렇게 했으니까, 이것들이 다 매개변수 데이터일 거고, 여기에서의 데이터인 거고,

08:28:29

그것들이 어떤 그 에펙터에펙터 중에서 그 각각의 컴포넌트의 차원이 얼마냐에 따라서 이제 은닉층에 노드가 몇 개가 있느냐에 따라서 그 크기들이 결정이 되겠죠. 그래서 엔터선 U는 지금 요거를 연결해주는 거니까 요거의 차원이 D 차원이라면은 D 차원에펙터가 이렇게 쭉 나타나는 하나의 샘플을 생각을 한다면은 그러면은

08:29:05

이게 D 차원일 거고, 이게 예를 들어서 B계가 있다. 이 원닉층의 노드가 있으면 B/D 차원의 U라는 행렬의 크기가 정해지겠죠. 그래서 이렇게 있을 거고, W는 은닉층과 은닉층, 은닉층 내의 노드들을 연결하는 그런 에지들의 웨이트들을 나타내는 거니까 B계가 있으면 B에서 P로 연결되는, 저 자신하고도 애들을 갖고 다른 것들하고도 다 이즈를 갖는다는 것들을 표현한다면 그럼 P/P의 행렬이 될 거고, B는

08:29:43

피계에서 출력증에 노드를 큐로 한다면은 P by Q가 되고 이런 식으로 각각의 그 생랄의 크기가 이렇게 정해지겠죠 그래서 요런 것들을 이제 실제 그 순서대로 들어오는 데이터에 대해서 요각들을 그 출력이 제대로 나가도록 결정할 수 있으면 그게 이제 그 순차 데이터에 대한 학습이 된거죠 순서적으로 들어오는 데이터에 대해서 이 배출력이 어떤 식으로 나가야 된다는 것을 학습에 의해서 이용할 수 있는 신경망을 만들 수가 있는거죠 이게 이제 순환신경망이에요

08:30:21

그래서 보면 여기 은닉층에 있는 노드들 은닉층과 은닉층을 연결한다고 했는데 결국은 하나의 은닉층에서 다른 노드들하고 연결을 하는 거예요 그게 P개가 있다면 P끼리 서로 연결을 하는 그런 구조인 것이죠 그러면 그 은닉층이 여러 개가 있는 형태가 아니라 한 층에서 사실 은닉층 하나에서 W라는 벡터를 통해서 P by P 크기에 팩터를 통해서 가변의 길이들을 처리할 수 있는 구조니까 은닉층을 여러 개 되는 그래서 은닉층과 또 다르게

08:30:58

있는 구조에 비해서는 당연히 수가 줄어들 수 있겠죠. 크기가 한층에서의 그 행열만 있으면 그것이 가벼니 길이를 처리하는 형태로 될 수가 있겠습니까? 그리고 이 특징 벡터의 길이 T, 빅티라고 하는 것은 뭐예요? 그 하나의 샘플을 샘플이 하나의 벡터의 벡터로서 표현 된다고 했는데 데이터들이 그러면 그 벡터의

08:31:35

이 메기변수의 수는 그것에 영향을 닿지는 않는 셈이죠. B, Q, D 이런 것들은 다 노드에 있는 노드 수 가지고 결정이 되는 것들이니까 그것에 의해서 학습해야 되는 것들은 정해지는 것이고 각각의 샘플에서의 길이들은 달라도 될 수가 있겠다는 거죠. 그래서 이건 자연어문장으로 예를 든다면 이런 식으로 하게 될 수 있다면

08:32:12

자유로운 문장에서 어제 이 책을 샀다와 이 책을 어제 샀다 라는 것들이 다 실제 출력상에서 비슷한 문장으로 예를 들어서 기계 번역을 한다면 표현이 될 수가 있겠다 라는 것

08:32:37

그래서 지금 아까 여기 썼던 일반적인 예는 각각의 입력에 대해서 출력이 그대로 순서대로 있는 것으로 이렇게 일반화해서 얘기는 했는데도 아까 얘기했듯이 꼭 그럴 필요는 없어요. 순서가 첫 번째 들어올 때부터 출력으로 나가야 된다는 것이 명확한 경우는 그렇게 할 수도 있겠지만 어떤 문제 특성상 그렇지 않은 경우들이 당연히 있을 수 있기 때문에 예를 들어서

08:33:10

이제 어떤 뭐 자연으로서 어떤 뭐 퀴즈에 답하는 그런 일을 할 수 있는 그런 뭐 신경망을 이제 RNN을 만들려고 한다라고 했을 때 그런 뭐 한글을 창제한 조선시대의 왕은? 라는 입력이 뚫었을 때 그것은 뭐 세종대왕이라는 출력을 내야 되는 거면은 이거는 뭐 단어 첫 번째 단어 여기 있는 첫 번째 단어가 예를 들어서 등장을 했다고 해서 그 답이 금방 나올 수 있는 그런 것은 아닌 거죠. 문장의 끝까지 다 나와야지 그 퀴즈에 문제가 이제 질문이 나오는 거고 그거에 대한 답이 뭐다라는 거는 문장을

08:33:54

단어들을 순서대로 다 읽어서 끝까지 됐을 때 예를 들어서 답이 출력이 결정될 수 있는 그런 거라고 볼 수 있으니까 예를 들어서 구조로 본다면 단어들이 이렇게 쭉 순서대로 다 나왔을 때 마지막에 가서 하나의 출력에 해당할 수 있고 이 문제에서는 세종대왕에 해당하는 다시 출력으로 나오는 그런 형태로 돼야 되겠죠 그러면 여기 중간중간에 사실은 뭐 단어가 하나하나씩 이렇게 들어오는 그 순간순간에는 마지막 단어가 나올 전까지는 특별히 아웃풋으로 내보낼 수 있는 그런 것이 없는 그런 셈이 될 거예요

08:34:32

사실 단답형의 형태로서 하나가 출력이 되어야 할 때 이런 식으로 할 수 있는 거고 아니면 기계 문장을 입력 문장을 다른 언어의 문장으로 번역을 한다 라고 했을 때는 당연히 문장이 다 끝나면 그거에 해당하는 다른 언어의 문장으로 출력을 내야 되는 그런 상황이라면 그거는 어떤 source 언어 번역을 해야 되는 source 언어의 문장이 다 입력으로 들어왔을 때 달러들이 다 이렇게 들어왔을 때

08:35:06

마지막 순간에 번역이 되어야 될 타겟 언어로서의 단어들이 쭉 의미를 갖는 다른 언어의 문장이 출력이 되어야 되는 거겠죠. 번역이 되는 경우라면 그래서 이 경우도 각각의 첫 번째 단어, 두 번째 단어 하나의 소울스 문장에서 소울스 하나의 문장에서 들을 때 이것들에 대해서 각각 출력이 다 나갈 필요는 없는 거고 이 경우는 출력이 요구 끝난 다음에 한꺼번에 몰아서 입력이 없는데 출력이 나갈 그런 형태로

08:35:41

다나스의 호수가 필록으로 나가는 그런 형태로 되겠죠 그래서 그 구조가 이런 모양뿐만이 아니라 뭐 이런 형태일 수도 있고 퀴즈 같은 경우 이런 것일 수도 있고 뭐 기계 번역이라면 이런 것일 수도 있고 뭐 대화를 하는 경우도 마찬가지 이런 식으로 들 수가 있는 거겠죠 그래서 일반화 시켰을 때는 뭐 이렇게 얘기할 수 있지만 문제의 과제의 예에 따라서

08:36:13

이런 것들이 다 가능할 수 있다.

08:36:24

안녕하세요 오늘은 순환신경망의 동작입니다. 그래서 원래 예정한 것보다 조금 일찍 끝났는데 18페이지부터는 목요일날 영상으로 놓도록 할게요. 그래서 아래의 동작방식 18페이지부터 뒷부분까지 기간, 시간동안 볼 수 있는 영상으로 만들어서 올려놓으니까

08:36:59

분들은 골고를 보도록 하구요 5 다음 부분부터 다음 시간에

08:39:21

1의 입력을 추가한 형태로 우리가 예전에 그 MLP 할 때 했던 것처럼 1이라는 입력 거기다가 추가 한간동안 하고 1차원도 증가시켜서 거기에 바이어스에 해당하는 값들까지 학습할 수 있도록 여층에서도 마찬가지 이런 식으로 할 수가 있겠다

08:39:21

따라하는 거죠 그래서 입력에 나가는 거 여기 지금 파란색으로 엣지로 표현을 해놨고 여기서의 리컬트한 그런 내지 뜬 방한걸로 그 다음에 출력과 연결되는 거 빨간색으로 표현을 해놨어요 그래서 이제 각 층에 있는 각각 노드에 대해서 이렇게 연결 상태가 어떠한 하는 것을 보여주고 있는 형태고 그러면 이제 각각 엣지들이 있으면 그거에 엣지의 값들 그렇죠 그것들을 뭐 어떤 식으로든지 표현을 할 수 있을 거고 그거를 실제로

08:39:21

입력에 대해서 출력, 시퀀서 데이터 들어왔을 때 뭐 그것도 순차적인 데이터에 의해서 결정되는 출력 값이 또 그 위에 맞게 나갈 수 있도록 그렇죠? 재고 요 웨이트들, 요거를 작성시켜야 된다는 거죠. 신경을 해서 그렇죠? 그래서 요렇게 표현할 수도 있고 요거를 요거를 컬렉스를 해서 축약을 해서 요런 형태로 표현할 수도 있을 거예요.

08:39:21

은닉층 노드 하나씩만 있는 것처럼 이렇게 해가지고 실제 은닉층에 있는 모든 노드들에 대해서 이렇게 리컬트 순환의지가 있는 것으로 이렇게 표현을 할 수도 있겠죠 그래서 요거는 축역형 요거는 좀 이렇게 펼친형 뭐 이런 식으로 얘기할 수 있을 거예요 그러면 이제 요거를 수식으로 쓰자면 은닉층이 여기 이렇게 서로 연결된 요것이 없는 또

08:39:21

검은색의 엣지가 없는 그런 구조 우리가 피드포워드 이렇게 들어와서 이것들에 의해서 또 여출력으로 나가는 이런 것만 생각을 하면은 그러면 지금 현재 들어오는 이 인풋에 의해서 이 계산에서 출력이 그대로 결정되나가는 그런 방식이죠 그러면 그 출력은 현재 들어오는 그 출력의 입력에 대해서만 관여를 받는 거고 그것에 의해서만 요거 상태 결정되고 값을 결정하는 그런 일을

08:39:21

하게 되는 건데 이렇게 중간에 이것들이 서로 이렇게 프론트하게 이렇게 돼 있으면은 이제 첫 번째 입력 들어올 때 뭔가 계산을 해서 그 결과들이 또 자신에게 이렇게 연결이 돼가지고 입력으로 제공됐고 그러면 그 입력으로 제공된 거에다가 그 다음 번 들어오는 그 입력 시간상으로 그 다음에 있는 그 입력이 들어와서 또 여기에 입력으로 사용이 되고 그거는

08:39:21

전의 요기서 나갔던 전에 입력 들어왔던 거에 비해서 이렇게 출력으로 받아서 다시 입력으로 들어오는 고급과 결합을 해서 다시 요 노드의 입력으로 요거과 함께 요거 정보까지 입력으로 작용을 하는 셈이 되는 거죠 거기에 계속 반복적으로 순서가 다음 거 다음 거 들어올 때마다 반영이 되는 거죠 그래서 그걸 수식으로 표현을 한다면은 현재 t 시점에 들어오는 - 그럼.

08:39:21

이런 인역, 그걸 Xt라고 한다면 아까 여기서 이거예요. 이거 중에 어떤 거에 하나 이 순서대로 쭉 들어올 텐데 어떤 거에 하나가 들어왔을 때 이 시점에 들어오는 그 벡터 아까 전체 벡터의 벡터 중에 컴포넌트 벡터에 해당하는 그 값이죠. 이 시점에 들어오는 순서대로 이렇게 CT라는 순간에 들어오는 거고 보고하고 현재 가지고

08:39:21

있는 매개변수 명령을 해 그 문익청인 6층 그 출협촌으로 내보내는 거기에 있는 모든 매개변수 그거에 의해서 값이 이제 여기에 결정이 되는데 좀 입력하고 요거 요거 요거 요기 몇층에 연결되어 있는 요거 그러니까 요거에서 결정이 되는데 예 이렇게 리컬트 엔지가 있다 보니까 바로 전 순간에서의 그 노드에서 좀 이렇게 여기

08:39:21

통해서 받아들여지는 전의 입력에 들어온 것에 의해서 결정됐던 그 값이 다시 입력으로 들어오기 때문에 이거의 입장에서는 다음 순간에 그것까지 고려를 해서 그것들을 동시에 입력으로 받는 것처럼 해서 어떤 견산을 해야 된다는 거죠. 그래서 현재의 데이터 값, 뭐 전가지 뭐 있고, 아무튼 현재 들어오고 있는 것, 따로 전 인프트에 들어온 것에 의해서 결정된 어떤

08:39:21

그거 가지고 다음번 자신의 값을 결정을 하는 거예요. 그죠? 값을. 그게 계속되면서 전전형에 있던 것들이 이거에 영향을 미쳤을 거고 내이도 됐고 해서 첫 번째부터 두 번째부터 세 번째부터 네 번째부터 쭉 그 값들이 그 입력들이 사실은 은닉층에 있는 노드의 상태를 계속 업데이트를 하는 그런 반대 사용이 된 것이고 없고 정보들을 다

08:39:21

말하자면 반영을 한 거죠. 반영을 해서 현재 출력을 여기서 나가는 출력을 결정을 하는 그런 방식이 된다. 이렇게 표현을 할 수가 있을 거고 1순간 여기 이 값이 1부터 이렇게 들어왔을 때 그 순간에 계산을 해가지고 그 결과를 또 이 순간 2에 2인 경우에 또 계산하고 그 순간에 값을 가지고 3인 경우에 또 2에 있는 값하고 3에 들어오는 그 순간에 값을 가지고

08:39:21

결정을 하고 등등. 그래서 결국 T라는 빅 T까지 나복을 하면 그걸 가지고 하나의 샘플을 읽어드린 셈이 되는 거고 그거에 대해서 뭐 예를 들어서 어떤 출력을 내든지 아니면 중간중간에도 출력을 낼 수 있는 거고 그렇게 할 수 있겠다는 거죠. 그래서 그거를 그림으로 이렇게 하는 거를 계속 이렇게 반복되는 거를 최선까지 되는 거를 그림으로 그려보면 X1 순간에 들어온 것을 입력으로 받아서 H1의 어떤 상태를 결정을 하는 것

08:39:21

그 값 가지고 출력을 내는데 나왔을 때 곧장 출력이 나가야 되는 상황이라면 메모레는 일을 하고 그 다음에 자신의 값 가지고 다음번 들어왔을 때 다시 어떻게 연결이 되어 있느냐 웨이트에 따라서 업데이트를 하는 방식으로 할 수 있는 거죠. 우리 업데이트 된 값 가지고 현재 들어오려고 전에 이거

08:39:21

이렇게 결정이 되어서 이런 식으로 해서 첫 번째, 두 번째, 세 번째, 그래서 T 번째까지 하면서 이것들이 각각 이렇게 나갈 수도 있고 아니면 중간에 나온다 가다가 어느 순간 이후에 나갈 수도 있고 그건 뭐 어떤 일을 하려고 하느냐에 따라서 달려질 수 있을 텐데 아무튼 그런 식으로 할 수도 있을 거예요. 그래서 항상 모든 입력 들어오는 순간에 출력이 어떤 식으로 결정되어 나가야 되는 건 아닐 수 있는데 기본적으로

08:39:21

이제 나가야 된다면 이런 식으로 구조를 생각을 할 수가 있는 거죠. 이게 지금 그 구조고요. 그거를 이게 지금 순환을 하는 그런 것, 바로 전에 들어와서 값이 결정된 그 H하고 그다음 순간에 오고 있는 그 입력에 의해서 다시 T 순간에 H값이 결정이 된다라는 것이고 계속 이렇게 그러면 결국 이거는 또 요걸 다시 한번

08:39:21

T-1로 해서 쓰면 이런 식으로 해서 쭉 이렇게 풀어 쓸 수 있겠다 라는 거예요. 이런 RELATION에 해당하는 것을 이렇게 표현할 수가 있겠다 라는 거죠. 여기 0 이것부터 해가지고 쭉 T까지 이런 식으로 쭉 X1 순간에 들어왔던 처음 들어왔던 것과 두 번째 들어왔던 것 해서 T-3번째 들어왔던 것과 T라는 순간에 들어오는 것까지 다 이렇게 반영을 한 형태의 값으로

08:39:21

H를 최종적으로 결정을 하는, 그러면 그 순서에 의해서 들어오는 그 값들이 다 최종 결정을 내는 H값을 정하는 데 있어서에 다 어느 정도씩 반영이 된다는 거죠. 그렇죠? 순서대로. 그래서 아까 여기 그림에서 여기 초기 입력 값들을 은닉층에 연결해주는 이 가중 엣지의 가중치들 U로 표현했고, 그리고 보통 CNN 구조라든지 MLP 구조에서도

08:39:21

첫 입력을 받아들이는 층, 은닉층에 연결하는 것을 'u'로서 표현을 했었죠. 그 다음에 은닉층에 있는 것끼리 연결시켜주는 것 'bic w'로 표현했고 그 다음에 그거를 출력으로 연결시켜주는 것 'v'로 표현을 했는데 그리고 이제 바이어스에 다하는 것, 여기서는 여충은 'e' 'b' 여충은 'e' 이렇게 했으니까 이것들이 다 매개변수 데이터일 거고 여기서의 데이터인 거고 어떤

08:39:21

벡터의 팩터 중에서 각각의 컴포넌트의 차원이 얼마냐에 따라서 이제 은닉층의 노드가 몇 개가 있느냐에 따라서 그 크기들이 결정이 되겠죠. 그래서 U는 5를 연결해 주는 거니까 이것의 차원이 D 차원이라면 D 차원의 팩터가 이렇게 쭉 나타나는 어떤 하나의 샘플을 생각을 한다면 그러면 이게 D 차원일 거고 요게에르

08:39:21

예를 들어서 B계가 있다. 이 은닉층의 노드가 있으면 B/D 차원의 U라는 행렬의 크기가 정해지겠죠. 이렇게 있을 거고, W는 은닉층과 은닉층, 은닉층 내의 노드들을 연결하는 그런 에지들의 웨이트들을 나타내는 거니까 그리고 B계가 있으면 B에서 B로 연결되는 저 자신하고도 에지들을 갖고 다른 것들하고도 다 에지들을 갖는다는 거를 들었다고 합니다.

08:39:21

한다면은 pxp 행렬이 될 것이고 p는 p에서 출력증의 를 q로 한다면은 pxq가 될 것이고 이런 식으로 각각의 행렬의 크기가 이렇게 정해지겠죠. 그래서 이런 것들을 이제 실제 그 순서대로 들어오는 데이터에 대해서 이것들을 출력이 제대로 나가도록 결정할 수 있으면은 그게 이제 순차 데이터에 대한 학습이 된거죠. 순서적으로 들어오는 데이터에 대해서 이게 생각에 격출력

08:39:21

어떤 식으로 나가야 된다는 것을 학습에 의해서 이용할 수 있는 신경망을 만들 수가 있는 거죠. 이게 순환신경망이에요. 보면 여기 은닉층에 있는 노드들 은닉층과 은닉층을 연결한다고 했는데 결국은 하나의 은닉층에서 다른 노드들하고 연결을 하는 거예요. 피계가 있다면 피끼리 서로 연결을 하는 그런 구조인 것이죠. 은닉층이 여러 개가 있는 형태가 아니라

08:39:21

한 층에서 사실은 은닉층 하나에서 W라는 벡터를 통해서 B/P 크기의 벡터를 통해서 가벤의 길이들을 처리할 수 있는 구조니까 은닉층을 여러 개 되는 그래서 은닉층과 다 다르게 있는 구조에 비해서는 당연히 줄어들 수 있겠죠. 크기가 한 층에서의 그 행렬만 있으면 가벤의 길이를 처리하는 형태로 될 수가 있는 거니까 이럴?

08:39:21

이 벡터의 길이 T, 빅티라고 하는 것은 뭐예요? 그 하나의 샘플을, 그 샘플이 하나의 벡터의 벡터로서 표현된다고 했는데 이 자들이 그러면 그 벡터의 컴포넌트에 해당하는 것들은 크기가 같지만 그 길이가 전체가 다를 수가 있다고 했는데 당연히 이 매개변수의 수는 그거에 영향을 받지는 않는 그런 셈이죠. 그러니까 여기 B, Q, D 이런 것들은 다 노드에 있는 노드 수, 층에 있는 노드 수

08:39:21

가지고 결정이 되는 것들이니까 그거에 의해서 학습해야 되는 것들은 정해지는 것이고 각각의 샘플에서의 길이들은 다 안 놔둘 수가 있겠다는 거죠 그래서 이건 뭐 예를 자연어 문장으로 예를 든다면 이제 이런 식으로 하게 될 수 있다면 뭐 자연어 문장에서 어제 이 책을 샀다와 이 책을 어제 샀다 라는 그런 것들이 다 실제 출력상에서 좀 비슷한 문장으로 예를 들었습니다

08:39:21

기계 번역을 한다면 표현이 될 수가 있겠다. 그래서 지금 아까 여기 썼던 일반적인 예는 각각의 입력에 대해서 출력이 그대로 순서대로 있는 것으로 이렇게 일반화해서 있긴 했는데 아까 얘기했듯이 꼭 그럴 필요는 없어요. 어떤 순서가 첫 번째 들어올 때부터 출력으로 나가야 된다는 것이 명확한 경우는 그렇게 할 수 있겠지만요.

08:39:21

어떤 문제 특성상 그렇지 않은 경우들이 당연히 있을 수 있기 때문에 예를 들어서 어떤 자연으로서 어떤 퀴즈에 답하는 그런 일을 할 수 있는 신경망을 RNN을 만들려고 한다고 했을 때 한글을 창제한 조선시대의 왕은? 라는 입력이 들어왔을 때 그것은 세종대왕이라는 출력을 내야 되는 거면

08:39:21

여기 있는 첫 번째 단어가 예를 들어서 등장을 했다고 해서 그 답이 금방 나올 수 있는 그런 것은 아닌 거죠 그 문제는 문장의 끝까지 다 나와야지 그 퀴즈의 문제가 이제 질문이 나오는 거고 그에 대한 답이 못 안하는 것은 문장을 조금 단어들을 순서대로 다 읽어서 끝까지 됐을 때 예를 들어서 답이 출력이 결정될 수 있는 그런 거라고 볼 수 있으니까 예를 들어서 구조를 본다면 이 단어들이 이렇게 쭉 순서대로 다 나왔을 때

08:39:21

마지막에 가서 하나의 출력에 해당하는 이 문제에서는 세종대왕에 해당하는 출력으로 나오는 그런 형태로 돼야 되겠죠. 그러면 여기 중간중간에 사실은 뭐 다른 단어가 하나하나씩 이렇게 들어오는 그 순간순간에는 마지막 단어가 나오기 전까지는 특별히 아웃풋으로 내놓을 수 있는 그런 것이 없는 그런 셈이 될 거예요. 그래서 그런 어떤 단답형의 형태로서 하나가 출력이 되어야 될 때 이런 식으로 할 수 있는 거고

08:39:21

아니면 기계 문장을 다른 언어의 문장으로 번역을 한다 라고 했을 때는 당연히 문장이 다 끝나면 그거에 해당하는 다른 언어의 문장으로 실력을 내야 되는 그런 상황이라면 그거는 어떤 소스 언어 번역을 해야 될 소스 언어의 문장이 다 입력으로 들어왔을 때 달러들이 다 읽혀 들어왔을 때 마지막 순간에 이제 공역이 돼야

08:39:21

그 단어들이 쭉 의미를 갖는 다른 언어의 문장이 출력이 되어야 되는 거겠죠. 번역이 되는 경우라면은. 그래서 이 경우도 각각의 첫 번째 단어 두 번째 단어 어떤 하나의 소스 문장에서 소스 하나의 문장에서 들을 때 이것들에 대해서 각각 출력이 다 나갈 필요는 없는 거고 이 경우는 출력이 끝난 다음에 한꺼번에 몰아서 입력이 없는데 출력이 나가는 그런 상태로

08:39:21

저 다라 수도 있고, 필적으로 나가는 그런 형태로 되겠죠. 그래서 그 구조가 이런 모양뿐만이 아니라 이런 형태일 수도 있고, 퀴즈 같은 경우 이런 것일 수도 있고 뭐 길의 번역이라면 이런 것일 수도 있고 뭐 대화하는 경우도 마찬가지 이런 식으로 들 수가 있는 것이죠. 일반화 시켰을 때는 뭐 이렇게 얘기할 수 있지만 과제 예에 따라서 이런 것, 이런 것들이 다르거든요

08:39:21

가능할 수 있다.

08:39:38

까지 내 일단 시간 또한 볼 수 있는 성으로 손님을 띄니까 여러분들은 보고를 보도록 하고요 어 뭐 다음 부분부터 다음 시간에

5/12 기계학습 - 순환신경망 | Alt