AI로 일하는 기술

IT 2022. 4. 28. 20:23

- 인공지능은 언제, 어디서, 누구로부터 만들어졌나요?

역사적으로 보면 인공지능이라는 말은 1956년까지 거슬러 올라갑니다. 1956년 여름, 미국 다트머스 대학에서 <인공지능에 관한 다트머스 여름 연구 프로젝트 Dartmouth Summer Research Project on Artificial Intelligence>라는 워크숍이 열립니다. 이 워크숍은 1955년 당시 다트머스 대학에서 조교수로 일하던 존 매카시를 주축으로 마빈 민스키 Marvin Minsky, 나다니엘 로체스터 Nathaniel Rochester, 클로드 섀넌 Claude Shannon 등 당대 최고의 인공지능 전문가들이 모여 인공지 능의 미래를 토론하기 위한 자리로, 제안서에는 이렇게 쓰여 있습니다.

“우리는 1956년 여름 뉴햄프셔 주 하노버에 있는 다트머스 대학에서 2개월 동안의 인공지능 연구 수행을 10인에게 제안하는 바입니다. 이 연구는 학습의 다양한 측면과 지능의 특징을 매우 정확하게 설명할 수 있다는 전제하에 진행되며, 연구 내용을 바탕으로 한 시뮬레이션 기계를 만들 것입니다. 이 기계는 언어를 사용하고 추상화와 개념화를 할 수 있으며, 현재 인간에게 주어진 다양한 문제를 해결하는 것은 물론, 기계가 자신을 향상하는 방법 또한 찾을 것입니다. 선택된 10인의 과학자들이 함께 작업한다면 여러 과제 중 하나 이상에서 상당한 진전을 이룰 수 있다고 생각합니다.”

- 고객이 와서 신용대출을 해달라고 요청합니다. 은행에서 이미지정한 질문에 따라 데이터를 입력하면 전문가 시스템에 있는 추론 엔진이 돌아가면서 대출 여부를 결정합니다. 만약 대출이 거부되었다고 가정해 봅시다. 고객이 왜 대출이 안 되는지 물으면 전문가 시스템은 그런 의사결정 을 하게 된 과정과 어떤 규칙에 의해 대출 거부 결정을 하게 되었는지를 설 명해 줍니다. 상당히 좋아 보이지요.? 이러한 이론은 질병 진단 및 치료 방법, 대기오염 분석, 군사 작전, 광석 매장지를 찾는 지질탐구 분야 등에서 많이 사용되었습니다. 문제는 시간이 지나면서 규칙이 변경되고 늘어나 관계를 명확하게 정의하는 것이 어려워 지는 것은 물론, 새로운 규칙도 계속해서 다시 입력해야 합니다. 입력한 새 로운 규칙이 기존에 입력한 규칙과 충돌을 일으킬 수도 있습니다. 따라서 규칙을 유지보수할 때마다 각 분야의 전문가들이 필요합니다. 전문가 시스템 스스로가 데이터를 학습하여 규칙을 변경하는 능력이 있으면 좋을 텐데 그렇지 못합니다. 또한 많은 규칙을 추론하는 엔진을 돌리면 컴퓨터가 매우 느려집니다. 그래서 전문가 시스템은 초기에 성공을 거두었음에도 불구하고 점차 사용하지 않게 되었습니다.

뉴럴 네트워크는 전문가 시스템과는 달리 데이터를 학습해서 의사결정을 하는 방법으로, 데이터가 많아지고 복잡해지면서 엄청난 컴퓨팅 계산 능력이 필요했습니다. 그런데 1990년대에 그렇게 빠 른 컴퓨터는 너무 비쌌습니다. 그래서 인공지능이 약속한 원래 목적을 현실 적인 비용으로 감당할 수 없게 되자 또다시 인공지능 두 번째 겨울이 온 것입니다.

- 인간은 아주 뜨거운 것을 만지면 무의식중에 손을 급히 빱니다. 이것은 손에서 감각 뉴런에 전달된 뜨겁다' 라는 신호를 연합 뉴런에 전달하지 않 고 척수 반사 신경에서 바로 운동 뉴런에 전달한 것입니다. 또한 사람은 보 지 않고 듣지 않아도 본 것처럼 느끼고(환영), 들은 것처럼 느낄 수 있습니 다(환), 이것은 감각 뉴런을 통하지 않고 뇌의 작용만으로도 보고 들은 것 처럼 느끼는 것이죠. 매우 신비한 일입니다. 인간의 뇌만이 할 수 있는, 입력 데이터도 없이 무엇을 보거나 들은 것 같은 느낌을 어떻게 수학적인 모델로 구현할 수 있겠습니까?

- 사람이 일일이 학습 알고리즘을 짜는 것이 아니라 '알고리즘을 자동으 로 짜주는 인공지능' 도 개발되고 있습니다. 이것이 AutoML (자동화 머신러 닝)로, 앞에서 이야기한 메타 러닝 meta learning 분야 중 하나입니다. 사람이 학 습 모델을 만들고 학습시키려면 매우 많은 시간이 소요되고 컴퓨팅 시간도 오래 걸리므로 '인공지능이 인공지능을 학습시키는 모델'을 짜도록 한 것입 니다. 이것도 인공지능 모델의 여러 학습 방법 중 하나입니다.

- 2019년 3월, 딥러닝의 최고 선구자 중 한 사람인 요슈아 벤지오 교수는 다음과 같이 말했습니다.

“딥러닝이 기존의 상관관계만을 파악하는 수준을 넘어서서 원인과 결과에 대해 설명하지 못한다면 딥러닝의 잠재력을 충분히 발휘하지 못하고 진정한 AI 혁명을 일으키지 못할 것입니다. 다시 말해 딥러닝은 '왜 이런 결과가 나왔는지’, ‘원인이 무엇이었는지' 답할 수 있어야 한다는 것이죠. 딥러닝은 학습된 많은 데이터와 레이블(정답) 간의 상관관계를 알아내는 것은 잘하지만, 인과관계에 대한 추론은 잘하지 못합니다. 또한 딥러닝은 학습 데이터가 인공지능 시스템이 현실에 적용될 때의 데이터와 동일하다고 가정합니다. 그러나 실제로는 그렇지 않을 수도 있습니다.”

- 머신러닝과 딥러닝의 차이는 학습하는 데이터의 양입니다. 보통 머신러에서 학습하는 데이터의 양은 수만 건 이하입니다. 반면 딥러닝은 거의 한계가 없지요. 최근에 만들어진 GPT-3는 학습하는 데이터가 4,990억 건이나 됩니다. 이렇게 데이터 규모부터 큰 차이가 나기 때문에 딥러닝이 머신러닝 보다 더 많은 하드웨어가 필요합니다. GPT-3는 마이크로소프트에서 제공하 는 클라우드를 사용했는데, 학습할 때 사용한 클라우드 사용료만 160억 원 정도가 됐다고 합니다. 또 하나 중요한 차이점이 있습니다. 다음 페이지의 그림을 보겠습니다. 머신러닝은 은닉층 hidden layer 이라고 부르는 중간층이 하나밖에 없지만, 딥러닝은 은닉층이 2개 이상 있습니다. 딥러닝 알고리즘은 히든 레이어가 보통 10개 이상입니다. 레이어가 많고 구조가 복잡할수록 학습 시간은 더욱 길어지죠.

- 수학과 컴퓨터 공학 지식 중 어떤 게 더 많이 필요한가요?

그래도 다행인 것은 실제로 기업에서 딥러닝을 구현할 때에는 기존에 잘 정 리되어 있고 검증된 모델의 소스 코드를 변경해서 사용하는 경우가 대부분 이라는 것입니다. 소스 코드는 깃허브 (github.com)에서 쉽게 찾을 수 있기 때문에 파이썬, 리눅스, 셸 프로그래밍 등을 수학보다 잘 아는 것이 훨씬 중 요합니다. 다시 말해 컴퓨터 공학 지식이 더 많이 필요합니다. | 또한 딥러닝을 구현하기 위해서는 인공지능 프레임워크를 반드시 알아 야 합니다. 인공지능 프레임워크에는 구글이 개발한 텐서플로 TensorFlow와 페 이스북이 개발한 파이토치 PyTorch 가 있습니다. 둘 중 하나만 잘해도 됩니다.

- 인공지능 분야에서는 데이터를 만드는 일이 대단히 중요합니다. 실제 기업에 있는 시스템에서 데이터를 모으고, 합치고, 내용을 조사하고, 값이 없는 것은 채우고, 값이 틀린 것은 고쳐야 합니다. 그리고 데이터를 모두 숫 자로 바꾸어 학습 데이터를 만들어야 합니다. 이 과정이 시간이 많이 걸리 고 인내심이 필요한 부분입니다. 이때는 데이터베이스, SQL, 파이썬 등에 대한 지식이 필요합니다. 이것도 컴퓨터 공학 분야의 지식입니다.

요약하자면 보통 기업에서는 인공지능을 처음부터 개발하지 않고 이미 개발된 것을 상황에 맞게 변형해서 사용하기 때문에 수학 지식이 꼭 필수는 아닙니다. 그러나 대학원이나 연구기관 등에서 인공지능 모델을 처음부터 만들어 보겠다고 하면 수학은 당연히 필요합니다. 이는 논문에서 인공지능 모델의 원리와 구조를 밝히는 데 필요하기 때문입니다.

- 꼭 비싸고 좋은 사양의 컴퓨터가 필요한가요?

인공지능을 공부하는 데 반드시 고성능의 컴퓨터가 필요하지는 않습니다. 구글에서 무료로 제공하는 코랩(Colub이라는 클라우드 기반의 AI 개발 도구 가 있는데, 여기에서 모든 AI 프로그램을 파이썬으로 코딩하고 실행해 볼 수 있습니다. AI를 실행하려면 대단히 복잡하고 많은 프로그램을 설치해야 하지만, 코밭에는 이미 설치가 되어 있어서 그 사용하기만 하면 됩니다. 보통 딥 러닝 프로그램을 자신이 컴퓨터에서 돌리려면 비싼 GPU 카드를 구입해이 하는 데, GPU 카드가 탑재되어 있는 노트북은 보통 게이밍 노트북이라고 해 서 일반 노트북이나 데스 그톱 컴퓨터보다는 비니다. 그러니 구글 코램을 사용하면 GPU를 무료로 빌리주기 때문에 일반 컴퓨터에서도 AI를 코딩하고 실행할 수 있습니다. 물론 무료 비전에서는 한 번에 한 개의 프로그램만 실행할 수 있어 다소 불편할 수 있지만, 구글 코랩 프로를 신청하면 월 $10 정도를 내고 동시에 세 개의 프로그램을 실행할 수 있습니다. 게다가 무료 버전은 한 개의 프로그램을 최장 12시간까지만 돌릴 수 있지만, 코랩 프로 는 24시간 내내 돌릴 수 있습니다. 우리가 학습할 때에는 학습 시간이 대단히 오래 걸리는 편이기 때문에 코랩 프로를 쓰는 것이 더 낫습니다.

- 인공지능을 공부하려면 가장 먼저 파이썬 Python 을 충분히 공부해두는 것이 좋습니다. 파이썬은 인공지능을 실제로 컴퓨터에서 돌릴 수 있는 컴퓨터 언어입니다. 컴퓨터 언어는 수백 가지가 존재하는데, 인공지능은 대부분 파이썬에서만 돌아갑니다. 인공지능 소스 코드 또한 파이썬을 대단히 잘 알아야 이해할 수 있습니다. 특히 클래스와 데이터 핸들링 방법 및 파이썬의 대표 라이브러리인 판다스 Pandas, 넘파이 NumPy, 맷플로립 Matplotlib 등을 능숙하게 다룰 수 있어야 합니다. 인공지능 이론이나 수학을 먼저 공부하는 것보다는 파이썬을 고급 레벨까지 충분히 익히는 것을 권장합니다. 파이썬을 공부하는 방법은 매우 많습니다. 유튜브, 코딩 사이트, 온라인/오프라인 학원, 대학 등 넘쳐납니다. 기억하십시오. 인공지능의 첫걸음 은 파이썬입니다. 그래서 파이썬을 아주 잘하면 인공지능을 반쯤은 이해한 것입니다. 파이썬은 그만큼 중요합니다. 이미 파이썬을 잘 알고 있다면 인공지능 공부는 매우 수월할 것입니다.

그다음으로 인공지능 이론, 즉 머신러닝과 딥러닝을 배우면서 이를 실제로 텐서플로나 파이토치로 구현해봅니다. 

- 2017년 구글의 인공지능 전문가들이 트랜스포머 Transformer 라는 언어 모델을 발표했습니다. 기존의 인공지능은 영어 문장을 순서대로 한 단어씩 읽고 학습하느라 속도가 매우 느렸습니다. 또한 앞에서 읽은 단어들과 현재 읽고 있는 단어와의 상호관계를 기억할 수 없어 긴 문장이 들어오면 아예 이해를 하지 못했습니다. 이 문제를 해결하기 위해 나온 것이 트랜스포머입 니다. 트랜스포머는 단어마다 번호를 매겨 순서를 정하기 때문에 한꺼번에 수백 단어를 읽어도 순서를 헷갈릴 일이 없었습니다. 이로 인해 학습 속도 가 비약적으로 발전하면서 수천억 개나 되는 거대한 양의 문서들을 동시에 읽을 수 있게 된 것입니다.

또 하나의 이슈는 단어와 단어 사이의 의미를 어떻게 기억하게 만드냐 하는 문제였습니다. 트랜스포머는 단어와 단어 사이의 의미도 숫자로 표시 해 컴퓨터가 빠르게 계산할 수 있도록 했습니다. 예를 들어 한 문장에 20개 의 단어가 있다면 각 단어마다 20개의 숫자를 부여하고, 다른 단어 사이의 의미를 갖게 하는 숫자도 20개를 부여합니다. 이렇게 하면 20개×20개=400 개의 숫자가 존재합니다. 이것을 하나의 세트, 즉 어텐션 벡터 attention vector 라고 합니다. 이러한 숫자의 세트인 벡터 여러 개를 결합해 단어들 사이의 의 미를 그대로 보전하게 되는 것이죠. 이것으로 트랜스포머는 속도의 문제까지 함께 해결했습니다.

언어 모델의 성능을 겨루는 시험 중 BLEU Blingual Evaluation Understudy Score는 사람이 번역한 것과 비교해 인공지능 언어 모델이 얼마나 정확하게 번역했는가를 측정하는 테스트입니다. 트랜스포머는 이전에 나왔던 여타의 언어 모델이 성취하지 못했던 결과를 완전히 뛰어넘었습니다. BLEU에서 1등한 모델을 보통 '쏘타 SOTA; State of the Art' 라고 하는데, 이 말은 언어 분야뿐만 아니라 다른 분야의 인공지능 테스트에서도 1등한 모델을 지칭하는 말로 자리잡 았습니다. 인공지능에서 ‘쏘타'를 달성했다는 말은 곧 최고의 칭찬이 된 것 입니다.

- 트랜스포머가 개발된 이후 언어 모델은 획기적으로 발전합니다. 2018년 에 구글이 만든 BERT, 오픈AI가 만든 GPT가 나왔습니다. BERT는 번역에, GPT는 문장 생성에 강점을 둔 모델입니다. BERT는 또 무수한 업그레이드 버전을 내놓는데 ROBERTa는 페이스북이 만든 업그레이드 버전, ALBERT 는 BERT를 경량화한 버전입니다. 구글은 영어권 나라에서만 통용되는 BERT를 각 나라말로 번역할 수 있는 Multilingual BERT도 만듭니다. 우리나라에도 SKT가 개발한 코버트 KOBERT 와 한국전자통신연구원 ERTI이 개발한 한국어 버트 KorBERT가 있습니다. 트랜스포머 이후 또 한 번의 획기적인 변화가 찾아왔습니다. 2020년에 오픈AI에서 개발한 GPT-3입니다. GPT-3는 기존 모델 크기의 100배 이상인데다 학습하는 문서의 수도 100배가 넘었습니다. 따라서 학습시키는 하 드웨어의 크기 또한 어마어마했습니다. 결과물 또한 놀라웠습니다. 다음 내용은 커크 외멧 Kirk Ouimet 이라는 사람이 GPT-3와 대화한 내용을 재구성한 것입니다. GPT-3는 2019년 10월까지의 데이터를 학습했는데, 대화 시점은 2020년 7월이라 GPT-3가 코로나 팬데믹에 대해 학습하지 못한 상태입니다. 여기서 '연구원은 커크 외멧이고 현명한 존재'는 GPT-3입니다. GPT-3의 통찰력 있는 답변을 한번 보시지요.

- 이 대결에서 인공지능이 사용한 기술은 공개되지 않아 정확하게 평가하기는 어렵지만, 켄쇼와는 달리 전통적인 과거 주가와 거래 내용을 주로 학습한 것으로 추정됩니다. 앞서 살펴본 트로트 작곡 대결과 마찬가지로 사람은 급변하는 상황에 따라 민감하고 빠르게 대응하는 반면, 인공지능은 전반적으로 수익 위주의 안전한 거래를 한 것으로 보입니다. 이를 바탕으로 인공지능을 주식 거래에 활용한다면 순간의 감정에 휩쓸려 충동적으로 매매하는 일은 없겠지만 일반 투자자가 원하는 큰 수익률은 올리기 힘들 것이라는 평가가 나옵니다.

- 인공지능을 기업에서 어떻게 구현할까요?

이제 인공지능을 기업에서 실제로 구현하는 방법을 알아보겠습니다. 인공 지능 전문 업체의 방식도 이와 유사하므로 반드시 차이점을 이해하여 구현 하는 데 도움이 되었으면 합니다.

첫째, 인공지능 모델을 자체적으로 개발합니다. 사실 기업에서 처음부터 모델을 만드는 사례는 그리 많지 않습니다. 왜냐 하면 지금까지 유명한 학자나 구글, 오픈AI, 페이스북 같은 유명 기업들 이 이미 구현해놓은 모델이 많기 때문입니다. 구글의 텐서플로나 페이스북 의 파이토치 등이 이런 라이브러리입니다. 페이퍼위드코드 사이트(https://paperswithcode.com)에 가면 각 분야마다 어떤 모델을 어느 정도로 구현 했는지가 순위별로 나열되어 있고, 해당 논문과 소스 코드까지 전부 올라와 있습니다. 따라서 목적에 잘 맞는 모델을 선택해 소스만 조금씩 고쳐서 사 용하는 것이 일반적입니다.

그리고 파이썬의 패키지 저장소(https://pypi.org)나 깃허브(https:// github.com)에는 전 세계의 개발자들이 이미 만들어놓은 소스 코드가 모 여 있습니다. 여기에서 검색하면 활용할 수 있는 코드가 분명히 있을 것입 니다. 요즘은 백지부터 소스 코드를 작성하는 사람은 거의 없는 상황이죠.

둘째, 인공지능의 전이 학습 방식을 사용합니다. 인공지능에는 전이 학습 방식이 있습니다. 만일 우리가 ERPEnterprise 를 도입한다고 할 때 원하는 기능이 없다면 기업별로 커스터마이징을 통해 필요한 부분을 추가 개발합니다. 인공지능, 즉 딥러닝에도 이러한 커스터마 이징이 가능합니다. 이 역시도 유명 인공지능 학자들과 개발자들이 전이 하 습을 할 수 있도록 잘 만들어 놓았습니다. 이것은 다음과 같은 장점이 있습니다.

* 검증된 모델은 이미 많은 데이터를 가지고 학습이 완료된 것으로, 전이 학습을 위해 준비해야 하는 데이터 수도 훨씬 적습니다.

* 이미 검증된 모델을 사용하기 때문에 학습 속도가 빠르고 정확도도 높습니다.

* 추가로 고쳐야 하는 소스 코드도 수십 줄 미만 정도로 많지 않습니다. 

그리고 다음 사이트에서는 이미 만들어진 모델을 다양하게 찾아볼 수 있습니다.

* 텐서플로우 허브(tthub.dev) 

* 파이토치 허브 (pytorch.org/hub) · 

* 허깅페이스(huggingface.co/models)

이러한 전이 학습을 많이 이용하면 처음부터 인공지능 모델을 새로 개 발해야 하는 수고를 덜 수 있습니다.

셋째, 자동화 머신러닝 패키지를 활용합니다. 자동화 머신러닝 AutoML 이란 인공지능이 스스로 모델을 만들고 테스트하면 서 가장 성능이 좋은 모델을 골라주는 패키지입니다. 말로만 들으면 인공지 능 전문가가 따로 필요 없을 것 같지요. 그러나 이 방법을 쓴다 해도 인공지 능에 대한 기초 수준의 지식과 통계를 알아야 하고 패키지 사용법도 따로 배워야 합니다. 물론 텐서플로나 파이토치로 직접 코딩하는 것보다는 쉽습니다. 유명한 것으로는 구글 GCP의 AutoML, AWS SageMaker, Microsoft Azure ML, DataRobot, H2O 등이 있습니다. 각 패키지마다 장단점이 있고 유료이므로 잘 비교해보고 선택해야 합니다. 사용할 데이터는 당연히 자체 적으로 준비해야 합니다.

넷째, 다양한 인공지능 API를 활용합니다. 구글이나 네이버는 다양한 인공지능 모델을 만든 후 API로 연결만 하면 고 객이 서비스를 바로 이용할 수 있도록 했습니다. 이는 자체적으로 서비스를 개발하는 것보다 훨씬 노력이 적게 들고, 요금도 API를 통해 처리하는 데이 터 건수에 따라 부과하면 됩니다. 대표적으로 네이버의 클로바 API와 구글AI API가 있습니다. 이 방법을 활용하면 인공지능 전문가가 없어도 API와 프론트 엔드 개발자만으로 구현 가능합니다.

* 네이버 클로바 API(https://clova.ai): 음성 인식, 음성 합성, OCR, 챗봇, 이미지 분석, 텍스트 분석, 얼굴 분석, 동영상 인식 등으로 자체 서비스를 만들 수 있습니다.

* 구글 AI API(https://cloud.google.com/products/ai): STT, TTS, 챗봇, OCR, 번역 등으로 가게 서비스를 만들 수 있습니다.

 

'IT' 카테고리의 다른 글

빅데이터 사용 설명서  (0) 2022.05.07
웹 3.0 메타버스  (0) 2022.05.07
알고리즘이 지배한다는 착각  (0) 2022.04.28
나는 메타버스에 살기로 했다  (0) 2022.04.20
데이터는 어떻게 자산이 되는가  (0) 2022.02.22
Posted by dalai
,