본문 바로가기

카테고리 없음

파이토치

 
 

1. 인공지능(Artificail Intelligence)


컴퓨터가 인간과 같이 생각할 수 있도록 만드는 기법을 연구하는 학문
 

2. 머신러닝(Machine Learning)

  • 데이터에 기반한 학습을 통해 인공지능을 구현하는 기법 지칭
  • 머신러닝 알고리즘의 3가지 분류


1) 지도 학습(Supervised Learning)

정답 데이터가 존재하는 상황에서 학습하는 알고리즘 입력(input) 데이터 x와 그에 대한 정답 레이블 y의 쌍(x, y)을 이용해서 학습하는 알고리즘
지도 학습의 목적은 어떤 값에 대한 예측을 수행하는 것
 
 
 

2) 비지도 학습(Unsupervised Learning)

정답 레이블 y 없이 입력(input) 데이터 x만을 이용해서 데이터의 숨겨진 특징을 학습하는 방법론
비지도 학습의 목적은 데이터의 숨겨진 특징(Hidden Feature)을 찾아내는 것
 

3) 강화 학습(Reinforcement Learning)

Reward를 제공하는 Environment와 Environment 내에서 행동을 수행하는 Agent의 상호작용을 통해 학습하는 방법론
지도/비지도 학습은 데이터가 이미 주어진 정적인 상태(static Environment)에서 학습을 진행하였다면, 강화 학습은 에이전트(Agent)가 주어진 환경(State)에서 행동(Action)을 취하고 이에 대한 보상(Reward)을 얻으면서 학습 진행하며 이때 에이전트는 보상을 최대화 하도록 학습을 진행
동적인 상태(Dynamic Environment)에서 데이터를 수집하는 과정까지 학습 과정에 포함되어 있는 알고리즘
 

3. 딥러닝(Deep Learning) = 특징학습(Feature Learning)

머신러닝 기법 중 하나인 인공신경망(Artificial Neural Networks) 기법의 은닉층(Hidden Layer)을 깊게 쌓은 구조를 이용해 학습하는 기법
데이터의 특징을 단계별로 학습하기 때문에 딥러닝을 표현학습(Representation Learning) 이라고도 함
데이터에 특징을 잘 나타낼 수 있는 표현을 학습하는 것은 딥러닝 뿐만 아니라 모든 머신러닝 알고리즘의 핵심이며, 데이터의 특징을 잘 학습하면 학습한 특징을 이용해서 알고리즘이 더 좋은 성능을 낼 수 있음
머신러닝 외에 다른 전통적인 기법들은 데이터의 특징들을 연구자들이 고민을 통해서 제안한 알고리즘을 통해 추출했으며 추출한 특징을 연구자들의 손으로 추출했다고하여 Hand-Crafted Feature(손으로 정제한 특징)라고 부름
이에 반해 머신러닝 알고리즘으로 추출한 특징은 학습 과정에서 자동으로 특징이 추출되기 때문에 Learned Feature(학습된 특징)이라고 함 
 
 

딥러닝 기법의 장점

데이터의 특징을 단계별로 추상화를 높여가며 학습할 수 있음
얕은 은닉층은 점, 선, 면과 같은 추상화 단계가 낮은 특징을 학습하고, 깊은 은닉층은 얼굴의 눈, 코, 입 등 추상화 단계가 높은 특징을 학습
사람의 경우, 추상화 단계가 높은 특징을 사용해서 판단하기 떄문에 딥러닝을 사용할 경우 사람과 같은 고차원 인지 활동을 수행할 수 있음
 
 
 
딥러닝 알고리즘이 잘 동작하는 문제영역: 이미지나 자연어, 음성 등의 비정형화된 대량의 데이터로부터 인식(Recognition)을 수행하는 문제 영역에 잘 동작함
 
딥러닝 알고리즘이 잘 동작하지 않는 문제 영역: 데이터가 부족하거나 정형화된 데이터에 대해서는 상대적으로 잘 동작하지 않으므로 다른 알고리즘을 사용하는 것이 좋음
 

딥러닝 알고리즘을 가능하게 만든 3가지 환경적 요인

인공지능과 딥러닝의 기본 개념과 아이디어는 이미 1980년대에 모두 정립이 되었지만 딥러닝 알고리즘은 2000년대 초반에 와서야 붐을 일으키고 실제 생활에 광범위하게 응용되기 시작함
1) 빅데이터(Big Data) 딥러닝 알고리즘을 학습시키기 위한 빅데이터를 구할 수 있는 환경이 조성됨
2) GPU: 큰 규모의 모델을 학습시킬 수 있는 GPU의 발전에 힘입은 컴퓨팅 환경의 개선이 이루어짐
3) 새로운 알고리즘의 등장(Better Algorithm): 딥러닝 모델을 더 잘 학습시킬 수 있는 새로운 알고리즘들이 제안됨
 
 

딥러닝 알고리즘의 주요 응용분야

1) 컴퓨터 비전(Computer Vision)
인간의 시각과 관련된 부분을 컴퓨터 알고리즘을 이용해서 구현하는 방법을 연구하는 분야
이미지 분류(Image Classfication), 의미적 분할(Semantic Segmentation), 물체 검출(Object Detection) 등이 컴퓨터 비전의 대표적인 문제들
컴퓨터 비전 문제를 풀기 위해서 딥러의 여러 구조 중 CNN이 많이 사용됨
응용 사례: 테슬라 자동차 자율주행
 
2) 자연어 처리(NLP: Natural Language Processing)
인간의 언어와 같이 자연어로 표현된 언어를 컴퓨터가 이해할 수 있는 형태로 만드는 방법을 연구하는 학문
문장 분류(Text Classification), 이미지 캡셔닝(Image Captioning), 기계 번역(Machine Translation), 챗봇(Chatbot) 등이 자연어 처리의 대표적인 문제들
자연어 처리를 위해선느 RNN 구조가 많이 사용됨
응용 사례: 구글 음성 가상 비서 Google Duplex
 
3) 음성 인식(Speech Recognition)
음성 데이터가 표현하는 문장이 무엇인지를 인식하는 문제
소리를 글자로 바꿔준다고 하여STT(Speech-To-Text)라고도 불림
음성 인식을 사용할 경우 양손을 자유자재로 움직일 수 있는 상태에서 컴퓨터에 명령을 내릴 수 있기 때문에 음성 인식은 컴퓨터와 상호작용할 수 있는 차세대 인터페이스로써 큰 주목을 받고 있음
응용 분야: 인공지능 스피커, 자율주행차에 내장된 음성 인식 시스템 등
응용 사례: 가상 비서 (Virtual Assistant) 애플 Siri, 구글 Now, 마이크로소프트 Cortana, 인공지능 스피커 Google Home, Amazon Alexa 등
 
4) 게임(Game)
인공지능 연구 역사의 초기부터 인공지능의 성능을 측정하기 위해서 널리 사용됨
2016년에 바둑을 플레이하는 인공지는 알파고(Alphago)가 인간 최고 플레이어인 이세들 9단을 꺾으면서 인공지능의 위력을 만천하에 증명
하지만 바둑 이전에 조금 더 경우의 수가 작은 체스의 경우 이미 1996년에 인공지능 바둑 프로그램인 딥블루(Deep Blue)가 인간 최고의 체스 플레이어였던 개리 카스파로프를 꺾었음
게임은 현실세계를 기반으로 환경을 디자인 했기 때문에 현실 세계 문제의 축소판으로 볼 수 있음. 게임 인공지능을 구현하기 위한 대표적인 머신러닝 알고리즘은 강화 학습. 최근에는 강화 학습과 딥러닝을 결합한 방법인 DQN 기법이 많은 주목을 받고있고, 알파고에도 DQN 기법이 사용됨
응용 사례: OpenAI Five는 강화 학습에 기반한 알고리즘을 통해서 복잡한 5vs5 전투 게임인 Dota2에 대해서 세계 최고의 플레이어들을 상대로 승리를 거둠
 
5) 생성 모델(Generative Mode)
학습 데이터의 분포를 학습해서 학습한 분포로부터 새로운 데이터를 생성하는 기법
2014년에 GAN(Generative Adversarial Networks) 구조가 발표된 이후 딥러닝을 이용한 생성 모델 기법이 급속도로 주목받게 됨
학습 데이터의 양을 늘려서 분류기의 성능을 높이는 데이터 증강(Data Augmentation) 기법 등에 모델 기법을 응용할 수 있음
응용 사례: Deepfake 기술은 생성 모델 기술에 기반하여 원본 영상의 얼굴을 자연스럽게 다른 사람의 얼굴로 대체 가능하며 부작용으로 가짜 뉴스 생성 등으로 인한 사회적 혼란이 우려되는 상황
 
 
 
 
텐서(Tensor)
텐서는 다차원 행렬을 의미하며 딥러닝에서 다루는 기본 데이터 단위
0차원 텐서: 스칼라
1차원 텐서: 벡터
2차원 텐서: 행렬
3차원 이상 텐서: 텐서
 
 
 
파이토치(PyTorch)
Python을 위한 오픈소스 머신 러닝 라이브러리 
Torch를 기반으로 하며 자연어 처리와 같은 애플리케이션을 위해 사용됨
GPU 사용이 가능하기 때문에 속도가 상당히 빠름
Facebook의 인공지능 연구팀이 개발했으며, Uber의 Pyro(확률론적 프로그래밍 언어)소프트웨어가 pyTorch를 기반으로 함
PyTorch는 두 개의 높은 수준의 패키지로 형태로 제공됨
1) 강력한 GPU 가속화를 통한 Tensor 계산 e.g. NumPy
2) 테이프 기반 자동 삭제 시스템을 기반으로 구축된 심층 신경망
경쟁 라이브러리로는 구글에서 만든 텐서플로(TensorFlow)가 있음
 
파이토치(PyTorch)의 장점
설치 간편
이해와 디버깅이 쉬운 직관적이고 간결한 코드로 구성됨
Define by Run 방식을 기반으로 한 실시간 결과값을 시각화 함
파이썬 라이브러리(Numpy, Scipy, Cython)와 높은 호환성을 가짐
Winograd Convolution Algorithm 기본 적용을 통한 빠른 모델 훈련이 간으
모델 그래프를 만들 때 고정상태가 아니기 때문에 언제든지 데이터에 따라 조질 가능(유연성)
Numpy스러운 Tensor 연산이 GPU로도 가능함
자동 미분 시스템을 이용해 쉽게 DDN(DataDirect Networks)을 짤 수 있음
학습 및 추론 속도가 빠르고 다루기 쉬움