티스토리 뷰
( 계속 업데이트를 진행하고 있다. 외국자료를 포함하여 추가적으로 업데이트를 계속 할 예정이다. 현재 지도학습 추가중 )
0. 들어가면서
AI(인공지능)가 무엇인가? Machine Learning(머신러닝)이 무엇인가? 그러면 둘의 차이는 무엇인가? 하나씩 알아나가 보자.
우선은 학습(Learning) 알고리즘에 대해 이해해 보자. 인터넷 검색 시, 검색을 잘하기 위해서는 보통 학습 알고리즘을 사용한다. 그리고 이메일 중에 스팸메일을 걸러주게 되는것도 학습 알고리즘을 이용해서 걸러준다. 인간의 뇌와 비슷(인공지능)하게 지능을 가진 기계를 만들기 위해서는 학습 알고리즘(지도학습, 비지도학습, 강화학습)이 사용된다. 사람들은 기계가 지능을 가져 몇몇 간단한 일들을 스스로 해내길 원했고 이런 목적으로 기계를 학습시켜 머신러닝(배우는 기계)을 사용하고자 했다.
머신러닝에서 가장 중요한 것은 데이터 수집이다. 머신 러닝이 발전한 이유 중 하나는 자동화가 수많은 데이터 속에서 이루어 지기 때문이다. 예를들어 클릭된 데이터를 수집하려 한다고 해보자. 이러한 것을 클릭스트림데이터라고 하는데 기계 학습 알고리즘을 사용하여 이 데이터들을 수집하고 더 나은 서비스를 제공한다. 이것이 실리콘벨리에서의 핵심 분야 중 하나로 성장했다. 다른 분야들을 비교해보면, 의료분야에서는 의료 기록을 분석 할 수 있었고, 생물학 계산 자동화를 통해 생물학자는 엄청난 양의 유전자를 분석 할 수 있게 되어 인간 게놈을 이해하는데 도움을 주었다. 자연언어처리기법과 컴퓨터비전분야는 언어를 이해하고 그림들을 식별하는 인공지능 분야라고 할 수 있다. 넷플렉스에서 영화를 추천하는것도 학습 알고리즘을 이용한거다.
정리하면, 인공지능의 꿈을 이루는 방법으로 머신러닝(기계학습)을 활용한다. 추가로 다양한 머신러닝 중 한 종류로 딥러닝이 사용된다고 할 수 있다.
0.1 분야들 간의 비교
본격적으로 이해를 하기 전에 분야들 끼리의 비교를 해보자. 기본적으로는 인공지능안에 머신러닝이 있고 머신러닝 안에 딥러닝이 있다. 아래는 헷갈릴 수 있는 분야들을 비교하여 적어보았다.
Machine Learning | Big Data |
---|---|
Big Data를 예측하고 분석하고 이해하는 한 가지 방법 | 단순히 데이터가 많음 |
Machine Learning | Data Mining |
---|---|
머신러닝은 정형 데이터를 사용하지만 비정형 데이터(음성, 사진 등)를 주로 다루고 분석할 수 있다. | 정형 데이터를 사용 |
Machine Learning | Artificial Intelligence |
---|---|
AI의 일부분이다. 지능적인 컴퓨터를 만드는 방법 중 데이터를 통계적으로 만드는 방법을 머신러닝이라고 정의 할 수 있다. |
인공지능(사람의 지능을 컴퓨터가 가지게 한다) |
Machine Learning | Statistics(통계) |
---|---|
통계학자들이 만들어 놓은 다양한 모델들을 실생활에서 볼수 있는 다양한 데이터에 적용을 하는 것이 머신러닝이다. 통계학의 한계를 극복 한다.(손실된 데이터도 가능) | 통계학 |
1. 머신러닝이란?
공학적의미_ 어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 떄 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업T와 성능 측정 P에 대해 경험 E로 학습한 것이다.
기초용어
- training set(훈련세트) - 시스템이 학습하는 데 사용하는 샘플
- training instance - 각 훈련 데이터
- training data - 위에서 치면 경험 E라고 할 수 있다.
- accuracy - 성능을 측정하는 것으로 위에서는 P라고도 할 수 있다.
- + data mining - 머신러닝 기술을 적용해서 대용량의 데이터를 분석하면 겉으로는 보이지 않던 패턴을 발견할 수 있다
사실 간단히 머신러닝에 대해 말하면 컴퓨터가 데이터를 학습하는 알고리즘과 기술이라 할 수 있다..
1.1 언제 머신러닝을 사용하는가?
기존의 사용 방식으로 많은 조작과 규칙이 필요하다면, 머신러닝을 사용하는 것이 좋다. 즉, 머신러닝은 기존 방식으로는 해결 방법이 없고 사람의 손이 많이 타는 문제에서 사용하는 것을 추천한다. 그리고 새로운 데이터를 자주 적응해야하는 곳에서도 사용가능할 뿐만 아니라, 복잡한 문제나 대량의 데이터에서 의미를 도출할 때 사용가능하다.
2. 머신러닝 시스템의 종류
머신러닝을 넓은 범주로 분류해 보자.
- 사람의 관리 하에 훈련을 하는지, 하지 않는지에 따라 지도, 비지도, 준지도, 강화 학습으로 분류한다.
- 실시간으로 점진적 학습의 유무에 떄라 온라인 학습과 배치학습으로 분류한다.
- 단순히 알고 있는 데이터 포인트와 새로운 데이터 포인트를 비교한다면 사례 기반 학습이고, 훈련 데이터셋에서 패턴을 발견하고 예측 모델을 만든다면 모델 기반 학습이다.
이러한 학습들은 중복이 된다. 예를들어, 최신 스팸메일 필터가 심층 신경망 모델을 사용하여 스팸을 구별하는것을 실시간으로 학습한다면, 이 시스템은 온라인 학습+ 모델기반학습+지도학습 시스템이라고 할 수 있다.
보통 우리가 기초로 배우는 머신러닝의 종류는 아래와 같다.
- 지도학습(Supervised Learning)
- 비지도학습(Unsupervised Learning)
- 딥러닝(Representation Learning)
- 강화학습(Reinforcement Learning)
'학습하는 동안의 감독 형태나 정보량'따라 분류가 가능한 주요범주는 지도학습, 비지도 학습, 준지도학습, 강화학습으로 크게 4개이다. 각각의 학습에 대해 알아보자.
지도학습(Supervised Learning)
- 누군가가 정답을 가지고 지도를 해준다는 의미로 지도학습이라고 한다
- 대부분이 생각하는 머신러닝이 지도학습이다.
- ex_traing data로 자동차 사진을 자동차라고 학습을 한다. 그 후에 testing으로 사진을 보고 자동차가 맞는지 yes/No로 이야기 해 준다고 생각하면 된다.
- 선형 모델(직선을 기준으로 학습)과 비선형 모델(직선이 아닌 모든 형태)로 나뉜다.
선형 모델
지도학습에서 선형모델은 크게 분류와 회귀로 나눌 수 있다.
분류(Classification) | 회귀(Regression) |
타겟변수 Y가 이산형(discrete)이나 범주형(categorical)일 때 사용한다. ex) 제품의 불량/정상 예측, 메일의 스팸 예측, 얼굴인식 |
타겟변수 Y가 연속형(continuous)나 실수(real number)일 때 사용한다 ex) 미래 KOSPI 종가 예측, 다음 달 매출액 예측 |
비선형 모델
왼쪽 그림과 같이 'y가 1이상일 경우와 1이하일 경우'와 같이 이런식으로 직선이 아닌 방식으로 비선형 모델이라고 한다. 즉 데이터에 계속 질문을 하는 모델이라고 할 수 있다. 예를 들어 구매자가 물건을 구매할 때, 온라인으로 살것인지? 높은 가격을 살것인지? 식품을 살것인지? 생핌품을 살것인지? 이런것들을 기준으로 분류한다. 이러한 것들의 예로 아래의 Decision Trees를 생각해 볼 수 있다.
Decision Trees
Supervised Learning Algorithms
아래의 알고리즘에 대한 각각의 설명을 추가할 예정이다. 좀 더 알고 깊은 알고리즘은 링크를 눌러보자.
Ordinary Least Squares Regression (OLSR) : 잔차의 제곱을 활용한 회귀법
Regression Algorithms | Instance-based Algorithms | Regularization Algorithms | Decision Tree Algorithms | Bayesian Algorithms | Artificial Neural Network Algorithms |
Ordinary Least Squares Regression (OLSR) | |||||
Logistic Regression | |||||
Stepwise Regression | |||||
Multivariate Adaptive Regression Splines(MARS) | |||||
Locally Estimated Scatterplot Smoothing(LOESS) | |||||
비지도학습(Unsupervised Learning)
지도학습은 데이터에 대해 label, 즉 정답을 알고 있어야한다. 정답이 주어진 데이터를 구하기 어려운 경우에는 지도학습 대신 비 지도학습을 사용한다. 사람인 경우도 비지도학습을 많이한다. 쉽게말해 지도(정답) 없이 데이터를 구분하는 것이다.
비지도학습의 수많은 알고리즘 중에 대표적으로 K-means clustering과 DB scan 알고리즘을 알아보자.
ex_ 컴퓨터가 꽃인지 자동차인지 나무인지 사전 training 없이 찾는것. 즉, 사람이 생각하는 형태와 비슷하다.
비지도학습의 대표적인 예는 아래와 같다.
군집화(Clustering) | 유사한 포인트들끼리 모아 군집 구조를 만드는 방법 |
분포 추정(Density estimation) | 관측된 샘플의 확률 분포를 추정하는 방법 |
연관 규칙 분석(Association rle mining) | 아이템 간의 연관 규칙을 확률 기반으로 평가 |
잠재 요인 추출(Extracting latent factors) | 데이터 내 잠재되어 있는 새로운 변수/요인 추출 |
K-means clustering
사실은 더 고차원 이미지가 필요하지만, 지금은 아래와 같은 2차원데이터로 이야기해 보자.
x축이 사람의 키고 y축이 나이라면, 나이와 키에 따른 분류가 가능하다. 여기서 핵심은 몇개의 그룹으로 나누어 볼 것인가이다. 위의 그림은 5개의 그룹으로 나눈거다. 2차원 평면에서 같은 그룹에 있다면 같은 그룹이다. 그리고 그룹으로 나누는 것은 데이터가 어떻게 생겼느냐가 중요하다. 가까이 있는 그룹으로 나누는 알고리즘은 K-means clustering알고리즘이다. 과연 가까이 있는 데이터끼리 그룹으로 나누는 것이 좋은가? 아래의 그림으로 보자
데이터가 위와 같이 생겼다면, 위 처럼 그룹을 나누는 것보다 아래처럼 나누는 것이 더 자연스럽다.
비지도학습 알고리즘 중에서도 위와 같이 나누는 알고리즘은 DB Scan이다.
K-means clustering | DB Scan |
---|---|
어떤 기준이 되는 중간 점을 찾고, 거기서 각각의 데이터 포인트의 거리를 계산을 해서 어떤 기준점에 가장 가까운 데이터 포인팅인지 분류한다. | 어떤 기준이 되는 점을 먼저 찾는게 아니라, 임의의 데이터 포인트 하나에서 시작해서 자기 한테 가까이에 있는 점들로 세력을 늘려나가는 것이다. |
정리하자면, '내가 가지고 있는 데이터의 숨겨진 의미를 잘 찾아내는 알고리즘이 무엇이 있을까? 그 알고리즘을 통해 그룹을 나눠보는 행위'를 머신러닝을 연구하는 사람들이 하는 일이다.
강화학습(Rainforcement learning)
정답을 모르지만, 자신이 한 행동에 대한 "보상"을 바탕으로 달성하고자 하는 목적을 이루도록 학습하는 것이다. 예를 들면 교육을 하면서 잘못된 행동을 하면 하지말라고 주의를 줘서 원하는 방향으로 이끌어가는 것이라고 생각해도 된다.
Representation Learning(Deep Neural Network)
사실 Neural Network 자체는 1950~1960년대에 처음으로 나왔다. 그리고 어느 순간 Neural Network가 쓸모없다고 여기고 한동한 머신러닝 커뮤니티에서 많은 연구를 하지 않았다. 그러다 2000년 초반부터 다시 활발한 연구가 진행됐다.
Neural Network에 대해 2006년 눈문[Reducing the Dimensionality of Data with Neural Networks]을 보고 이해해 보자. 최근 사진 픽셀이 늘어나면서 데이터가 늘어났다. 그래서 car 사진과 cat사진을 비교해 볼 때, 픽셀이 늘어난 것이 좋을 수 도 있지만 안좋을 수 도 있다. 따라서 분류를 위해 픽셀 수를 줄여야한다.(=Dimensionality를 줄이기) 즉, 의미 있는 Dimension은 남겨 두고 의미가 없는 것은 줄이는 일을 해야하고, 그것을 Nural Network로 할 수 있다.라는 것이 이 논문의 포인다.
Representation Learning (Neural Network 단계)
첫번째 layer, (픽셀 하나하나를 본다)컴퓨터가 픽셀에 대해서 흰색이냐 검정색(rgb)이냐를 부별
두번째 layer, (픽셀을 연결한다)라인과 커브를 아는 것. 즉, 경계선을 찾아서 눈코입 과 같은 것을 구분. 쉽게 말해서 대조가 큰 부분.
세번째 layer, layer 2에서 선과 곡선을 통해 나오는 것들이 눈과 코가 나온다.
네번째 layer, 눈코입을 조합하여 사람의 얼굴이 나온다.
즉, 픽셀 하나하나 계산 => 선의 유무 계산 => 선 조합(사칙연산) 계산 => 얼굴 찾는 계산
옛날에는 '선찾기', '곡선찾기', '타원찾기' 알고리즘 을 하나하나 다 만들어 내고, 그 후에 '눈찾기' '입찾기' 알고리즘을 하나씩 다 했었다. 지금은 하나의 Neural Network으로 이 모든것을 해결하는 모델을 만들었다.
왜 Representation Learning이 각광받고 있나? 앞으로는 어떻게 되나?
overfitting이란 전체적 그림을 보는게 아니라 특정 작은걸 보고 사진이 car라고 결정을 내리는것. 작은 디테일에 fit를 over해서 한다고 overfitting이다
즉, 2000년대 초반에 overfitting이 해결되고 데이터수도 많아졌다. 그래서 이전에 못했던 연구를 활발하게 할 수 있다.
AI 활용 예
- 인공 체스 기계
- 자율주행
- DeepMind AlphaGo
- Google Duplex
AI로 어떤 영역에서 Intelligence 할수 있고 어떤 Datasets을 쓸 수 있는가
1. Visual Intelligence(=컴퓨터 비젼)
MNIST
여기서 가장 쉬운게 MNIST라는 데이타 셋이다. 쉽게 말하면 숫자 필기 인식이다. 10개 밖에 없어서 쉽다.
ImageNet
아직도 정확도를 올리는 연구를 하고 있다. 그리고 적은 데이터로도 분류를 할 수 있을까? 사람들처럼 사진 한 두개만 보고 분류를 가능할까?에 대한 연구가 계속 되고 있다.
2. Language Intelligence
SQUAD Dataset. 스텐포드 대학교에서 만든 QnA. 대화 데이터를 들으면서 학습한다. 최근 가장 많이 사용하는 데이터는 GLUE Benchmark이다.
Machine Translation(기계 번역)
쉽게 말해서 한국말을 영어로 번역하는 것인데, 요즘은 같은 뜻을 지닌 한국문장과 영어문장을 비교하면서 러닝하면 좋다.
3. 추가적인 학습
3.1 자연어처리 사전학습
자연어 처리를 바로 학습하기 전에 기본적으로 알아야 할 것있다. 자연어처리와 관련된 핵심만 정리했다. 사이킷런, 판다스, re, Beautiful Soup, 캐글에 대해 간단히 알아보자. 2020년 11월 19일 부터 27일까지 이틀 간격으로 포스팅 되게 예약되어있다.
2020/11/23 - [인공지능(Artificial Intelligence)/자연어 처리(natural language processing)] - [자연어처리] re
3.1 자연어 처리 시작하기
현재 lstm, RNN, CNN, attention, bert 등등이 연결이 되어있지 않아서 학습하기 편하도록 정리중이다. 곧 하나씩 볼 수 있게 올리겠다.
han-py.tistory.com/249?category=942088han-py.tistory.com/269
3.2 앞으로
시간이 날 때 마다 정리해서 image 부분과 자연어 처리부분을 업데이트 할 예정이다..
'인공지능(Artificial Intelligence) > 머신러닝' 카테고리의 다른 글
로지스틱 회귀(Logistic Regression) 기초 정리 (0) | 2021.01.29 |
---|---|
[머신러닝] 머신러닝 기초 정리 예제 (3) | 2021.01.25 |
[머신러닝] 확률 기초정리 (0) | 2021.01.21 |
- Total
- Today
- Yesterday
- mongoDB
- nodejs
- typescript
- DFS
- Vue
- nextjs autoFocus
- vuejs
- NextJS
- 클라우데라
- Deque
- react autoFocus
- read_csv
- login
- logout
- UserCreationForm
- Express
- useHistory 안됨
- Python
- error:0308010C:digital envelope routines::unsupported
- TensorFlow
- react
- 자료구조
- BFS
- pandas
- next.config.js
- 자연어처리
- django
- JavaScript
- Queue
- useState
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |