본문 바로가기
디지털 마케팅

딥러닝과 인공지능의 이해

by 빅맥BIGMAC 2022. 3. 1.
728x90
반응형
반응형

여러분들이 ai 머신러닝 딥러닝 이런 용어 굉장히 많이 들어보셨을 거라고 생각해요.

ai는 알티피셜 인텔리전스의 약자죠 그래서 지금은 ai의 시대다 딥러닝의 시대다 이런 얘기도 많이 들어보셨을 거고요 4차 산업혁명으로 인해서 ai가 중요하다 이런 얘기도 들어보셨을 거라고 생각해요.

 

어쩌면 여러분들이 이 강의를 듣는 이유도 그런 이유에서 비롯된 것일 수도 있을 거라고 생각을 합니다.

그래서 일단 용어를 조금 정리를 하고 가려고 하는데요. 실제로 저도 그렇고 많은 사람들이 이 ai 머신러닝 딥러닝 이런 거를 그냥 섞어서 혼용해서 사용을 많이 하고 있어요.

 

그래서 지금 이거를 굳이 구분하는 게 큰 의미가 있다고 생각하지는 않지만 그래도 우리는 공부를 하는 입장이니까 실제로 어떤 포함. 관계가 있는지 좀 살펴보면 ai가 가장 큰 개념입니다.

그래서 AI rartifition intelles 인공지능이라고 하는 거는 어떤 사람의 지능을 흉내내고자 하는 모든 분야를 다 ai라고 읽었고요 그 안에 이제 머신 러닝이라고 하는 분야가 있는 겁니다.

그래서 머신러닝은 기계 학습이라고 하죠. 우리 말로는 그래서 data trive afroch라고 써놨는데 어떤 데이터로부터 학습을 하는 거 데이터를 이용해서 기계가 스스로 학습하는 분야머신러닝이라고 하고요

머신러닝의 여러 개의 분야가 있는데 그중에서 딥 뉴럴 네트워크이라고 하는 것을 활용해서 머신러닝을 하는 분야를 딥러닝이라고 부릅니다.

 

그래서 실제로는 지금 이제 가장 핫한 분야 중에 하나가 딥러닝이라고 하는 분야이기 때문에 딥 러닝을 일컬을 때 그냥 ai라고도 하고 혹은 머신 러닝이라도 하고 이렇게 얘기를 하고 있습니다. 하지만 이제 딥러닝의 가장 작은 개념이라는 거 설명을 드리고요 이제 딥러닝이든 머신러닝이든 ai든 최근에 막 얘기가 많이 나오니까 이제 강의를 들으시는 분들 중에서 어떤 분들은 이게 최근에 시작된 분야인가라고 생각하시는 분들도 계실 수 있을 거라고 생각을 해요.

 

하지만 ai는 역사가 사실 굉장히 오래된 분야입니다. 여기 나와있다시피 neral network이라고 하는 거는 1943년에 처음으로 이런 말이 사용이 됐고 ai rtifitihar intelleense라고 하는 용어는 1956년에 처음으로 사용이 됐어요. 그래서 지금 사실 굉장히 오랜 시간이 지났죠

그래서 ai라고 하는 분야가 사실 다른 분야보다 다른 최첨단 분야에 비해서 역사도 길고 그만큼 발전 속도도 어떻게 보면 더뎠었어요. ai winte라고 하는 게 두 번이나 있었고 암흑기죠 일종의 흑역사라고도 할 수 있는 이 기간을 두 번이나 거쳐서 최근에 와서 이제 폭발적인 성장기를 겪고 있는 분야다라고 말씀을 드릴 수가 있을 것 같아요.

하지만 최근에 폭발적인 성장을 하는 건 사실이죠. 그래서 우리나라 사람들이면 누구나 알고 있는 2016년에 알파고 이세돌 9단과 대결할 때 알파고는 누구나 잘 알고 있고요 ai 현재 모습이 굉장히 여러 가지가 있는데 자율 주행도 이미 어느 정도 상용화가 돼서 차들이 돌아다니고 있고요

 

오바마 대통령이 이렇게 얘기를 하고 있는데 전 미국 대통령이죠. 이게 사실은 합성된 영상이에요. 그래서 전혀 실제로 이런 말을 한 영상이 아니고 모든 걸 합성해서 만든 겁니다. 그래서 보면 얼굴 모습뿐만 아니라 입 모양이라든지 표정 이런 것까지 굉장히 자연스럽게 나오고 있죠 그래서 ai 기술이 이렇게 영상을 합성해낼 정도로 많이 발전해 있다. 오래됐고 ai winte라는 걸 두 번 겪었지만 최근에 굉장히 폭발적으로 발전하고 있는 분야다 여러분들도 다 알고 계신 사실이지만 한 번 더 설명을 드렸고요 그래서 그럼 이 ai 딥러닝이 어떻게 동작을 하는 건지 그거를 이제 하나씩 하나씩 설명을 드려보도록 하겠습니다.

먼저 좀 쉬운 문제를 하나 내드리려고 해요. 이것은 무엇일까요. 너무 쉽죠. 고양이입니다. 빨리 넘어가도록 할게요 이게 사람이 고양이의 이런 사진을 보고 고양이라고 인식하는 거 굉장히 쉬운 문제고 사람은 너무너무 잘 하는 문제입니다. 컴퓨터한테 이거를 시키면 잘 할까요. 지금은 ai 기술을 이용해서 잘 할 수 있지만 과거에는 이거를 이렇게 고양이 사진을 주고 컴퓨터한테 고양이라고 인식시키는 거 굉장히 어려웠어요.

컴퓨터한테는 어떤 게 이 고양이 사진이 들어가면 컴퓨터는 뭘 보게 되느냐 이런 숫자들을 보게 됩니다. 이 숫자도 고양이인데 컴퓨터는 이 숫자를 보고 고양이라는 걸 맞춰야 돼요 벌써 쉽지 않을 거라는 생각이 들죠. 그런데 이 숫자를 보고 맞춰야 돼서 고양이라는 게 당연히 어려운 이유도 있지만 이거보다 더 중요한 어려운 이유가 있어요. 그거에 대해서 좀 설명을 드릴 텐데 이것은 왜 고양이인가요 고양이라는 건 쉽게 우리가 인식할 수 있지만 사람한테도 이게 왜 고양이지 네가 왜 이걸 고양이라고 말했지 이게 왜 고양이인지 설명해봐라고 하면 사실 좀 어려워요. 여러 가지 특징에 대해서 얘기를 할 수는 있습니다.

귀가 삼각형 모양이다. 털이 많다. 몸에 비해서 꼬리가 길다. 고양이는 좀 꼬리가 기니까요. 그리고 다리가 4개다 이런 특징들이 있으니까 고양이지라고 얘기를 할 수 있지만 실제로 우리가 고양이 사진 처음에 봤을 때 머릿속에서 우리 뇌에서 귀가 삼각형이네 털이 많네 뭐 꼬리가 기네 다리가 4개네 그러니까 고양이야라고 인식하지 않았을 거예요. 실제로 그렇게 했는지 저도 잘 모르겠는데 뭔지 저는 잘 모르는 어떤 머릿속에서 어떤 동작에 의해서 고양이를 보는 순간 고양이라고 바로 인식을 하게 됩니다.

그래서 이거를 컴퓨터한테 이걸 시키려면 ai 기술을 사용하지 않고 컴퓨터한테 고양이 사진을 주고 고양이라고 인식시키려면 이렇게 지금 사람이 굳이 어렵지만 실제로 우리 머릿속에서 이렇게 인식을 하는지 잘 모르겠지만 어쨌든 사람의 특징을 뽑아낼 수 있죠 그래서 귀가 고양이들은 귀가 이렇게 좀 뾰족하고 삼각형 모양이더라 털이 많더라 그리고 꼬리가 좀 길더라 그리고 다리가 네 개더라 이런 특징들을 뽑아서 컴퓨터한테 알려줘야 돼요 그래서 컴퓨터한테 사진을 주면서 잘 봐 귀가 삼각형인지 보고 털이 많은지 보고 꼬리가 긴지 보고 다리가 4개 있는지 봐 그래서 이런 특징이 만족되면 고양이야라고 판단하면 돼라고 알려주는 거죠. 그렇게 규칙이죠. 그러니까 어떤 규칙을 알려주면 컴퓨터는 잘할 수 있어요. 하지만 규칙으로 하기 좀 애매한 것들은 컴퓨터는 좀 하기 어려워합니다. 그래서 우리가 고양이 사진을 주고 컴퓨터한테 고양이라고 인식시키는 걸 이렇게 규칙 기반으로 이런이런 이런 조건 이런 네 가지 조건 혹은 이거 이상의 10가지 조건이 만족하면 고양이야 라고 인식하면 돼라고 컴퓨터한테 알려줬다고 할 때 사실 그것도 어렵긴 합니다.

 

왜냐하면 꼬리가 길다라는 걸 컴퓨터가 어떻게 판단하게 할 거냐 그러면 이 사진에서 꼬리가 어디 있는지 찾는 것도 가르쳐줘야 돼요 그렇죠 그것도 사실 쉽지 않겠죠. 근데 그런 건 다 가능하다고 가정을 하고그래서 이렇게 규칙만 알려주면 컴퓨터는 잘 찾는다고 가정을 했다고 하더라도 쉽지 않아요.

 

왜냐하면 이런 문제들이 있을 수 있습니다. 네 특히 이 고양이 보면 굉장히 지금 이상한 형태로 누워있지 꼬리가 보이지도 않아요. 근데 앞에서 꼬리가 길어야지 고양이라고 했는데 꼬리가 안 보이면 얘는 꼬리가 없으니까 고양이가 아니네라고 할 수 있겠죠. 이런 식으로 혹은 얘는 반대로 꼬리만 있죠. 다리가 없어요. 그러면 다리가 보이지 않으니까 이 이가 고양이가 아니야라고 할 수 있지만 사람은 이걸 보면 고양이라고 할 거고 이것도 고양이인지 확신은 없지만 고양이 비슷한 게 있을 것 같다라는 생각을 하게 되죠. 그리고 뭐 여기 이렇게 같은 고양이라도 무늬와 색깔과 다 다르고요 이렇게 주변이랑 비슷한 색깔을 가질 수도 있고 여러 가지 이유에 의해서 규칙 기반으로 고양이를 인식시키려고 하면 어려운 점이 많이 있습니다.

그래서 머신러닝이라고 하는 분야는 이제 규칙 기반으로 하지 않고 데이터 기반으로 하겠다라고 하는 게 가장 큰 차이점이에요. 그래서 머신 러닝 기계 학습이라고 하는 분야는 일반적으로 우리가 프로그래밍을 할 때 방금 앞에서 설명드렸던 고양이 사진을 주고 input으로 고양이 사진을 주고 우리가 프로그램을 짜주죠 꼬리를 찾는 프로그램을 짜고 꼬리를 찾아서 꼬리의 길이를 재야겠죠. 그리고 몸이랑 비율을 잰다든지 해서 꼬리가 몸에 비해서 어느 정도 비율 이상이 되면 꼬리가 길다. 라고 판단을 하게 되고 다리도 찾아서 다리가 4개인지 판단하는 프로그램 이런 것들을 일일이 다 손으로 코딩을 해서 고양이 이미지랑 넣어주면 컴퓨터가 그대로 쭉 비교를 해가지고 이거 고양이입니다. 아닙니다. output을 내주는 게 기존에 했던 일반적인 프로그래밍 방법이라면 기계 학습 머신 러닝에서 하는 방법은 이제 data driven으로 하게 돼요.

 

그게 무슨 얘기냐라고 하면 사람한테 학습을 시키는 거랑 똑같다고 생각을 하시면 돼요 아기가 태어나서 예를 들어서 엄마가 아기한테 고양이를 가르쳐준다고 합시다 그럼 어떻게 할까요. 고양이 사진이나 고양이 그림을 보여주면서 그렇죠 고양이 사진과 고양이 그림을 여러 개 보여주면서 이게 고양이야 이게 고양이야 이렇게 계속 얘기해주겠죠. 고양이 사진을 주고 이게 고양이야 라고 얘기를 해주는 거예요. 이 사람 아기의 경우에는 말을 할 줄 아는 아기라고 가정을 해보면 고양이 사진을 계속 보여준다고 하면 기가 어느 날 이렇게 얘기할 수 있겠죠. 엄마 고양이는 꼬리가 긴 것 같아요. 이렇게 얘기할 수 있겠죠.

 

우리가 앞에서 고양이는 꼬리가 길다는 특징을 찾았던 것처럼 아기도 당연히 사람이니까 그렇게 할 수 있겠죠. 컴퓨터한테 약간 그런 능력이 생기기를 기대하는 겁니다. 그래서 고양이 사진을 많이 보여주고 그때마다 이게 고양이라고 알려주면 컴퓨터가 고양이는 이런 특징이 있는 게 고양이구나라는 거를 스스로 학습할 수 있게 하는 거 그게 기계 학습의 원리예요. 그래서 규칙을 알려주는 게 아니라 데이터를 잔뜩 보여줘서 기계가 스스로 규칙을 찾아내게 하는 거죠. 그 프로그램을 기계가 스스로 만들게 하는 그래서 이거를 이제 소프트웨어 2 0이라고도 얘기를 합니다. 여기가 소프트웨어 1 0이고 이게 기계 학습을 통한 방법이 소프트웨어 2 0이다. 새로운 방법이다라고 얘기를 하게 돼요. 도대체 그걸 어떻게 하는 거냐라는 거는 이제 뒤에서 차차 설명을 드리도록 하고요 조금 더 한 번 더 반복해서 설명을 드리면 기계 학습의 원리에 대해서 우리가 예를 들어서 어떤 시계 같은 거를 만든다고 해봅시다

어떤 웨어러블 기기를 만든다라고 해볼게요 스마트 기기를 만들어서 어떤 액티비티 사람의 어떤 액션을 레쿠션 인식하는 그런 기능을 넣으려고 해요. 그래서 일단은 걷는 것과 걷지 않는 것을 구분할 수 있어야 된다고 하면 뭔가 움직임이 있네 근데 속도가 예를 들어서 4 2 하면 걷는 거야라고 이렇게 규칙을 줄 수 있을 거예요. 그래서 규칙 기반으로 일단 한다고 가정을 해보면 근데 걷는 거 말고 뛰는 것도 해보고 싶어 그러면 지금 스피드가 4 이하면 걷는 거라고 하고 그게 아니면 그거 이상이면 뛰는 걸로 하자 이렇게 할 수 있겠죠. 그러다가 이제 자전거를 타는 것까지 인식을 하고 싶으면 그러면 4보다 작으면 걷는 거라고 하고 뛰는 거는 속도가 12보다 클 수는 없으니까 속도가 12보다 작으면 뛰는 걸로 하고 그거보다 더 크면 이제 자전거를 타는 걸로 하자 라고 했다고 합시다 그런데 갑자기 난 골프를 좋아하는데 골프도 좀 인식했으면 좋겠어 이렇게 하면 이제 난감한 상황이 되는 거죠. 규칙으로는 이 스피드에 대한 규칙으로는 골프는 인식할 수 있는 방법이 없어요. 그러면 뭐가 됐든 걷든 뛰든 뭐 자전거를 타든 골프를 치든 뭐 예를 들면 축구를 하든 뭐 수영을 하든 이런 것들을 다 인식시킬 수 있는 방법이 없을까 그게 이제 바로 데이터 기반으로 데이터 드리븐으로 학습을 시키면 가능할 수 있다라고 하는 거죠.

그래서 여기다가 여러 가지 센서를 달고 웨어러블 기기에다가 손목에 차는 시계라고 가정하면 시계에다가 센서를 타는 거죠. 이렇게 속도 센서도 있을 거고 그다음에 자이로 센서라고 해서 어떤 우리가 회전이라든지 높낮이라든지 이런 거를 인식하는 센서 이런 것들을 붙여놓고 그 센서에서 온 데이터를 쭉 받아요. 그래서 센서에서 데이터가 이런 패턴으로 들어오면 걷는 거네 이런 패턴으로 들어오면 뛰는 거네 이런 패턴은 자전거를 타는 거네 이런 패턴은 골프를 치는 거네 이렇게 그래서 데이터를 많이 입수를 해서 이런 패턴에서는 걷는 거야 이런 패턴에서는 자전거를 타는 거야 이런 식으로 학습을 시키면 컴퓨터가 쉽게 이 비슷하게 나오면 똑같이 이런 패턴이 아니더라도 이거랑 비슷한 패턴이 나오면 자전거를 타는구나라고 인식할 수 있게 된다는 거죠. 이런 식으로 하는 거를 머신 러닝이라고 합니다.

그래서 머신 러닝의 종류는 이제 세 가지 정도가 있는데 지도 학습 비지도 학습 강화 학습이다라고 얘기를 합니다. 지도 학습은 방금 전에 제가 설명드렸던 게 다 지도 학습이에요. 그리고 사실 지금까지 굉장히 많은 굉장히 많은 연구들이 그리고 상용화된 많은 기술들이 다 지도 학습에 기반을 하고 있어요. 입력 데이터와 정답을 주는 거죠. 고양이 사진을 보여주면서 이게 고양이야라고 알려주는 거죠. 그래서 고양이를 고양이라고 인식하는 거 이런 걸 분류 문제라고 하고 또 어떤 내일의 날씨 기온을 예측한다든지 이런 어떤 숫자를 예측하는 거 연속된 숫자를 예측하는 문제를 회기라고 합니다.

 

그리고 또 비지도 학습이라는 분야도 있어요. 이거는 데이터만 가지고 정답 없이 데이터만 가지고 학습을 하는 건데 이렇게 몇 가지 그룹으로 나누는 군지파라든지 예를 들어 고양이랑 개 사진을 섞어놓고 두 개의 그룹으로 나눠봐 이런 게 이제 대표적인 게 되겠죠. 우리가 그게 고양이인지 개인지 몰라도 두 개로 나누는 건 할 수 있어요. 그렇죠 그런 거라든지 어떤 압축을 한다든지 이런 데에서 비지도 학습이 많이 사용이 되고 있고 특히 최근에는 이 비지도 학습이 굉장히 많이 각광을 받고 연구도 많이 되고 있습니다.

 

그리고 또 조금 다른 분야로 강화 학습이라는 분야가 있는데 이제 알파고 같은 게 대표적인 강화 학습으로 이 기술이고 triar 에러를 통한 학습이에요. 그래서 이거는 한번 해보고 그거에 따라서 잘했는지 못했는지 나중에 결과를 받고 그걸 통해서 학습을 하는 거죠. 그래서 이것도 사람이 학습하는 거를 비슷하게 하는 건데 예를 들면 우리가 어렸을 때 굉장히 뜨거운 냄비를 손으로 만졌다가 아 뜨거워 하고 된 경험이 있으면 뜨거운 냄비는 만지면 안 되는구나라는 거를 학습하게 되죠. 예를 들면 그런 식으로 그래서 알파고도 바둑돌을 여기저기 막 노면서 여기다 놓으면 안 되는구나 여기다 놓으면 좋구나 이런 거를 트라이어라 에로 한번 해보고 잘했네 잘못했네 이거를 통해서 학습을 했죠. 그래서 이런 분야를 강화 학습이라고 얘기를 합니다.

그래서 대부분의 제 지도 학습에 대해서 좀 위주로 설명을 많이 드릴 거고요 어떻게 이 지도 학습을 이용해서 ai 머신러닝 딥러닝의 학습을 하는지에 대해서 앞으로 계속 설명을 드리도록 하겠습니다. 그래서 우리가 궁극적으로 이제 data driven을 어떻게 할 거냐면 트레이닝과 테스팅 두 개의 스테이지로 나눠서 할 거예요. 사실은 뒤에서 좀 더 설명드리겠지만 va리데이션이라는 스테이지도 있는데 크게 나누면 트레이닝과 테스트 스테이지로 나눠서 트레이닝 할 때 이제 데이터 아까 얘기했던 고양이를 구분하는 걸 한다고 하면 고양이 사진과 정답을 넣어주면서 이게 고양이야라고 하는 거예요. 실제로는 이렇게 합니다 고양이 사진을 넣어주면서 내 neont워크 러닝 시스템 모델이라고 부르는데 nerolletok 모델에다가 고양이 사진을 넣어주고 예측을 해보게 해요. 이게 뭘까 맞춰봐라고 하게 해요. 그래서 이 뉴럴레트 모델이 이게 고양이에요. 고양이가 아니에요라고 얘기를 하겠죠. 그러면 정답을 알려줍니다. 이건 고양이였어 이건 고양이 아니었어 그래서 그 정답을 알려줌으로 인해서 이 neanetwork learning 시스템이 학습을 하게 하는 이게 traning stage고 학습이 다 끝나고 나면 이제 이 학습된 모델 이 neurnet을 갖다 놓고 이 학습할 때 보지 않았던 새로운 데이터를 넣어주는 거예요. 그래서 학습할 때는 한 번도 안 보여줬던 고양이 사진을 넣어주고 얘가 고양이를 잘 맞추는지를 보는 거죠. 이게 테스트 스테이지입니다. 사실 이게 굉장히 중요한 개념이에요.

 

우리가 머신 러닝 혹은 딥러닝을 이용해서 뭔가 어떤 모델이라고 하는 학습할 때 딥러닝에 한정하면 ner 네트워크 모델이 되겠죠. 이 ner 네트워크 모델을 학습하는 궁극적인 목적이 뭐냐라고 하면 우리는 new 데이터에 대해서 best guess를 하는 거예요. 그러니까 지금까지 보지 못했던 새로운 데이터가 들어왔을 때 그 새로운 데이터에 대해서 올바른 예측을 하는 거 좋은 예측을 하는 게 우리가 궁극적으로 하고자 하는 겁니다.

 

이건 너무너무 중요한 사실이니까 여러분들이 머신러닝이든 딥이든 공부할 때 이 사실을 항상 머릿속에 염두에 두고 공부를 하셔야 됩니다. 우리가 원하는 거는 무엇이냐면 우리가 학습할 때 보지 않았던 새로운 데이터 혹은 지금 현재 존재하지 않은 앞으로 생겨날 새로운 데이터에 대해서 예측을 잘 하는 거예요.

 

예를 들어 주식을 예측하는 모델을 만들었다라고 해봅시다 과거의 데이터는 이미 지나간 데이터잖아요. 그런 거에 대해서 예측을 아무리 잘해봐야 주식 예측 모델은 쓸모가 없겠죠. 앞으로 다가올 미래에 대해서 앞으로 지금까지는 우리가 갖고 있지 않았던 보지 못했던 데이터가 왔을 때 그 시점이 왔을 때 미래에 대해서 예측을 잘 할 수 있는 보지 못했던 데이터에 대해서 좋은 성능이 나오는 그런 모델을 만드는 게 궁극적인 목적이에요. 그래서 테스트 스테이지 우리가 결국에는 잘하고 싶은 거는 트레이닝 스테이지에서 성능이 잘 나오는 게 중요한 게 아니고 테스트 스테이지에서 성능이 잘 나오는 게 중요하다라는 거를 제가 꼭 강조를 드리고 싶습니다. 그런데 트레이닝 스테이지에서 잘 못하고 테스트 스테이지에서만 잘할 수 있는 방법은 없겠죠. 만약에 그렇게 됐다고 하면 그거는 내가 테스트 스테이지를 잘못 만들었을 가능성이 굉장히 높아요.

 

트레이닝 때 못한 애가 뭐 예를 들면 우리가 모의고사를 한 100번 봤는데 100번의 모의고사 동안에 한 번도 50점을 넘어본 적이 없어요. 그런데 갑자기 실제 시험에서 이 친구가 뭐 99점을 받았다95점을 받았다. 이렇게 높은 점수가 나올 가능성은 거의 없다고 봐야겠죠. 그러면 만약에 그렇게 됐다면 그 시험이 잘못됐을 수 있겠죠. 그래서 테스트 스테이지에서 잘하는 게 목적인데 그러려면 당연히 트레이닝 스테이지에서 좋은 결과가 있어야 됩니다. 하지만 궁극적인 목적은 테스트 스테이지에서 잘하는 거다. 이 얘기를 드리고요 첫 번째 인공지능이 뭔지 머신러닝이 뭔지 그래서 데이터 drive으로 학습한다는 게 뭔지 이거에 대해서 강의는 여기까지 하고요 다음 시간에는 데이터 이 데이터에 대해서 한번 얘기하는 시간을 가져보도록 하겠습니다.

 

728x90
반응형

댓글