당신은 주제를 찾고 있습니까 “머신 러닝 알고리즘 정리 – Machine learning 1 – 2. 머신러닝이란?“? 다음 카테고리의 웹사이트 you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 생활코딩 이(가) 작성한 기사에는 조회수 77,434회 및 좋아요 978개 개의 좋아요가 있습니다.
머신 러닝 알고리즘 정리 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 Machine learning 1 – 2. 머신러닝이란? – 머신 러닝 알고리즘 정리 주제에 대한 세부정보를 참조하세요
이 수업은 머신러닝을 처음 시작하는 분들이 이론없이, 수학없이, 코딩없이 머신러닝을 경험해볼 수 있도록 고안된 수업입니다.
이 수업이 끝나고 나면 머신러닝이 무엇이고, 머신러닝으로 무엇을 할 수 있는지를 알게 될 것입니다. 그 결과 머신러닝으로 하고 싶은 일이 생길 것입니다. 다시 말해서 꿈을 갖게 될 것입니다.
모든 수업은 유튜브 재생목록으로 모아두었습니다.
https://www.youtube.com/playlist?list=PLuHgQVnccGMDy5oF7G5WYxLF3NCYhB9H9
전자책 버전으로도 공부할 수 있습니다.
https://opentutorials.org/module/4916/28879
더 많은 수업들을 만나고 싶다면 지식지도 https://seomal.org 에 방문해주세요.
이 수업의 모든 내용은 저작권이 없습니다. 마음대로 이용하셔도 됩니다. (public domain)
머신 러닝 알고리즘 정리 주제에 대한 자세한 내용은 여기를 참조하세요.
AI_머신러닝 기초 정리
넷플렉스에서 영화를 추천하는것도 학습 알고리즘을 이용한거다. 정리하면, 인공지능의 꿈을 이루는 방법으로 머신러닝(기계학습)을 활용한다.
Source: han-py.tistory.com
Date Published: 1/28/2022
View: 3626
AI 머신러닝 알고리즘 학습 가이드 – 사이언스모니터
AI 머신러닝 알고리즘 학습 가이드 · 1. 지도 학습(Supervised learning). 지도 학습은 훈련 데이터에서 함수를 추론하는 작업이다. · 2. 준지도 학습(Semi- …
Source: scimonitors.com
Date Published: 11/5/2021
View: 9604
머신러닝 학습 정리(1) – velog
(2) 머신러닝은 전통적인 방식으로는 너무 복잡하거나 알려진 알고리즘이 없는 문제의 분야에 유용함. 음성 인식을 예로, 각 단어를 녹음한 샘플 사용을 …
Source: velog.io
Date Published: 4/16/2022
View: 7451
[머신러닝] 분류 알고리즘 한 페이지 정리(로지스틱회귀, SVM …
[머신러닝] 분류 알고리즘 한 페이지 정리(로지스틱회귀, SVM, KNN, 결정트리, 앙상블) · 독립 변수의 선형 결합을 이용하여 개별 관측치가 어느 집단에 속 …Source: zhining.tistory.com
Date Published: 6/5/2022
View: 8501
딥러닝/머신러닝 총 정리 요약 [역사부터 CNN … – py – Tistory
머신 러닝은 데이타를 기반으로 학습을 시켜서 몬가를 예측하게 만드는 기법이다. 통계학적으로는 추측 통계학 (Inferential statistics)에 해당하는 영역 …
Source: koreapy.tistory.com
Date Published: 8/9/2022
View: 1265
Machine Learning 정리 · GitBook
머신러닝은 인공적 “지능”이라기 보다는 수학,통계이다. 그리고 컴퓨터 공학적 관점에서는 데이터를 기반으로 하는 프로그래밍이라고도 볼 수 있다. 머신러닝은 기존 data …
Source: soopsaram.com
Date Published: 6/24/2022
View: 6186
1장 한눈에 보는 머신러닝
머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야 … 머신러닝 알고리즘 훈련: 주어진 데이터를 바탕으로 훈련.
Source: formal.hknu.ac.kr
Date Published: 2/16/2022
View: 5356
머신러닝알고리즘의이해 – 한양대학교 | KOCW 공개 강의
한양대학교. 조문기. 본 교과목에서는 머신러닝 기초 이론부터 다양한 알고리즘을 학습한다. 그리고 복잡한 프로그래밍은 최소화하고 넘파이, 판다스, 시본, 케라스, …
Source: www.kocw.net
Date Published: 9/16/2021
View: 5262
머신 러닝의 모델 평가와 모델 선택, 알고리즘 선택 – 1장. 기초
마지막으로 모델, 가설, 분류기, 학습 알고리즘, 파라미터 용어를 정리하겠습니다: 목적 함수target function: 예측 모델링에서는 전형적으로 특정 프로세스를 모델링하게 …
Source: tensorflow.blog
Date Published: 9/4/2022
View: 4465
머신러닝(Machine Learning) 이란? -정의, 유형, 적용 사례 TIL …
기계 학습또는 머신 러닝은 인공 지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 가령, 기계 학습을 …
Source: wooaoe.tistory.com
Date Published: 3/4/2022
View: 4909
주제와 관련된 이미지 머신 러닝 알고리즘 정리
주제와 관련된 더 많은 사진을 참조하십시오 Machine learning 1 – 2. 머신러닝이란?. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 머신 러닝 알고리즘 정리
- Author: 생활코딩
- Views: 조회수 77,434회
- Likes: 좋아요 978개
- Date Published: 2020. 8. 12.
- Video Url link: https://www.youtube.com/watch?v=KR8ddnPjCtk
머신러닝 기초 정리
반응형
( 계속 업데이트를 진행하고 있다. 외국자료를 포함하여 추가적으로 업데이트를 계속 할 예정이다. 현재 지도학습 추가중 )
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로 이야기 해 준다고 생각하면 된다.
로 자동차 사진을 자동차라고 학습을 한다. 그 후에 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 단계)
Source: http://www.nature.com/news/computer-science-the-learning-machines-1.14481
첫번째 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/19 – [인공지능(Artificial Intelligence)/자연어 처리(natural language processing)] – [자연어처리] 사이킷런(scikit-learn)
2020/11/21 – [인공지능(Artificial Intelligence)/자연어 처리(natural language processing)] – [자연어처리] 판다스(Pandas)
2020/11/23 – [인공지능(Artificial Intelligence)/자연어 처리(natural language processing)] – [자연어처리] re
2020/11/25 – [인공지능(Artificial Intelligence)/자연어 처리(natural language processing)] – [자연어처리] Beautiful Soup
2020/11/27 – [인공지능(Artificial Intelligence)/자연어 처리(natural language processing)] – [자연어처리] 캐글 시작하기(kaggle)
3.1 자연어 처리 시작하기
현재 lstm, RNN, CNN, attention, bert 등등이 연결이 되어있지 않아서 학습하기 편하도록 정리중이다. 곧 하나씩 볼 수 있게 올리겠다.
han-py.tistory.com/249?category=942088han-py.tistory.com/269
3.2 앞으로
시간이 날 때 마다 정리해서 image 부분과 자연어 처리부분을 업데이트 할 예정이다..
반응형
[머신러닝] 분류 알고리즘 한 페이지 정리(로지스틱회귀, SVM, KNN, 결정트리, 앙상블)
정의
독립 변수의 선형 결합을 이용하여 개별 관측치가 어느 집단에 속하는지 확률을 계산하여 분류
데이터들을 가능한 멀리 두 개의 집단으로 분리시키는 최적의 초평면 기반 분류
새로 입력된 데이터를 거리기반으로 클래스를 설정하여 분류
의사결정규칙을 도표화하여 관심대상이 되는 그룹을 몇 개의 소그룹으로 분류
머신러닝 총 정리 요약 [역사부터 CNN, 머신러닝, 딥러닝 알고리즘 이해하기]
머신러닝
머신 러닝은 데이타를 기반으로 학습을 시켜서 몬가를 예측하게 만드는 기법이다.
통계학적으로는 추측 통계학 (Inferential statistics)에 해당하는 영역인데, 근래에 들어서 알파고와 같은 인공지능이나 자동 주행 자동차, 로봇 기술등을 기반으로 주목을 받고 있다.
<그림. 구글의 자동 주행 자동차>
간단한 활용 사례를 보면
학습된 컴퓨터에 의한 이메일 스팸 필터링
편지지의 우편번호 글자 인식
쇼핑몰이나 케이블 TV의 추천 시스템
자연어 인식
자동차 자율 주행
등을 볼 수 있다.
이러한 시나리오는 지속적인 샘플 데이타를 수집 및 정제하고 지속적으로 알고리즘을 학습해나감에 따라서 최적의 알고리즘을 찾아나가도록 한다.
쇼핑몰의 추천 시스템의 경우 사용자의 구매 패턴을 군집화하여 유사한 패턴을 찾아냄으로써 적절한 상품을 추천하는데, 예를 들어 30대 남성/미혼/연수입 5000만원/차량 보유한 사용자가 카메라,배낭등을 구매했을 경우 여행 상품을 구매할 확률이 높다는 것을 학습하였을때, 이러한 패턴의 사용자에게 여행 상품을 추천해주는 것과 같은 답을 제공할 수 있다.
지도 학습과 비지도 학습
머신러닝은 학습 방법에 따라서 지도 학습 (Supervised Learning)과 비지도 학습 (Unsupervised Learning)으로 분류될 수 있다.
지도 학습 (Supervised Learning)
예를 들어 학생에게 곱셈을 학습 시킬때,
“2*3=6이고, 2*4=8이야, 그러면 2*5= 얼마일까? “
처럼 문제에 대한 정답을 주고 학습을 한 후, 나중에 문제를 줬을때 정답을 구하도록 하는 것이 지도 학습 (Supervised Learning)이다.
비지도 학습 (Unsupervised learning)
반대로 비지도 학습은 정답을 주지않고 문제로만 학습을 시키는 방식을 비지도 학습이라고 한다.
예를 들어 영화에 대한 종류를 학습 시키기 위해서, 연령,성별과 영화의 종류 (액션, 드라마, SF)를 학습 시켰을때, 이를 군집화 해보면 20대 남성은 액션 영화를 좋아하고 20대 여성은 드라마 영화를 좋아 하는 것과 같은 군집된 결과를 얻을 수 있고, 이를 기반으로 20대 남성이 좋아하는 영화의 종류는 유사한 군집의 결과인 ”액션 영화” 라는 답을 내게 되낟.
여기서 문제에 대한 답을 전문적인 용어로 이야기 하면 라벨된 데이타 (Labeled data)라고 한다.
머신러닝의 대표적인 문제 Regression과 Classification 문제
머신러닝을 이용해서 해결하는 문제의 타입은 크게 regression과 classification 문제 두가지로 대표가 된다.
Classification
Classification은 입력값에 대한 결과값이 연속적이지 않고 몇개의 종류로 딱딱 나눠서 끊어지는 결과가 나오는 것을 이야기 한다. 예를 들어 종양의 크기가 0.3cm 이상이고 20대이면, 암이 양성, 또는 종양의 크기가 0.2cm 이하이고 30대이면, 암이 음성과 같이 결과 값이 ”양성암/음성암”과 같이 두개의 결과를 갖는 것이 예가 된다.
<종양 크기에 따른, 암의 양성/음성 여부에 대한 그래프>
또 다른 예로는 사진을 업로드 했을때, 사진의 물체를 인식할때 ”이사진은 개이다.” “이사진은 고양이이다.” 처럼 특정 종류에 대한 결과값이 나오는 것 역시 Classification 문제로 볼 수 있다.
Regression
Regression 문제는 결과값이 연속성을 가지고 있을때 Regression 문제라고 한다. 즉 택시의 주행거리에 따른 요금과 같은 문제인데, 변수 택시 주행 거리에 대해서, 결과 택시 값이 기대 되는 경우로 변수와 결과값이 연속적으로 이루어 지는 경우를 말한다.
<그림. 주행 거리에 따른 택시비 >
머신 러닝과 딥러닝
이러한 머신 러닝의 분야중, 인공 지능망 (뉴럴 네트워크 / Artificial neural network)라는 기법이 있는데, 사람의 뇌의 구조를 분석하여, 사람 뇌의 모양이 여러개의 뉴런이 모여서 이루어진것 처럼, 머신 러닝의 학습 모델을 두뇌의 모양과 같이 여러개의 계산 노드를 여러 층으로 연결해서 만들어낸 모델이다.
<알파고에 사용된 뉴럴네트워크 구조>
이 모델은 기존에 다른 기법으로 풀지 못하였던 복잡한 문제를 풀어낼 수 있었지만, 계층을 깊게 하면 계산이 복잡하여 연산이 불가능하다는 이유로 그간 관심을 가지고 있지 못했다가
캐나다의 CIFAR (Canadian Institute for Advanced Research) 연구소에서 2006년에 Hinton 교수가 ”A fast learning algorithm for deep belifef nets” 논문을 발표하게 되는데, 이 논문을 통해서 뉴럴네트워크에 입력하는 초기값을 제대로 입력하면 여러 계층의 레이어에서도 연산이 가능하다는 것을 증명하였고, 2007년 Yosua Bengio 라는 분이 ”Greedy Layer-Wise training of deep network” 라는 논문에서 깊게 신경망을 구축하면 굉장히 복잡한 문제를 풀 수 있다는 것을 증명해냈다.
이때 부터 뉴럴네트워크가 다시 주목을 받기 시작했는데, 이때 뉴럴 네트워크라는 모델을 사람들에게 부정적인 인식이 있었기 때문에, 다시 이 뉴럴 네트워크를 딥러닝 (Deep learning)이라는 이름으로 다시 브랜딩을 하였다.
그 이후에 IMAGENET 챌린지라는 머신러닝에 대한 일종의 컨테스트가 있는데, 이 대회는 이미지를 입력하고 머신 러닝을 통해서 컴퓨터가 이미지의 물체등을 인식할 수 있게 하는 대회로, 머신 러닝 알고리즘의 정확도를 측정하는 대회이다. 이 대회에서 2012년 Hinton 교수님 랩에 있던 Alex 라는 박사 과정의 학생이 딥러닝 기반의 머신 러닝 알고리즘으로 혁신적인 결과를 내었고 지금은 이 딥러닝이 머신 러닝의 큰 주류중의 하나로 자리잡게 되었다.
수포자를 위한 딥러닝
#2 – 선형회귀분석을 통한 머신러닝의 기본 개념 이해
Linear Regression을 통한 머신 러닝의 개념 이해
거리에 따른 택시 요금 문제
머신러닝이란 무엇일까? 개념 이해를 돕기 위해서 선형 회귀 (Linear Regression)이라는 머신러닝 모델을 보자. 먼저 선형 회귀 (Linear regression)이 무엇인지 부터 이해를 해야 하는데, 쉽게 설명하자면 결과값 (output value)이 있고 그 결과값을 결정할 것이라고 추정되는 입력값 (input value)과 결과 값의 연관관계를 찾는 것이고 이를 선형 관계를 통해 찾는 방법이 선형 회귀 (Linear regression)이다.
예를 들어서 설명해보자, 택시 요금을 예로 들어보자,택시 요금은 물론 막히냐 마냐에 따라 편차가 있지만, 대부분 거리에 비례해서 요금이 부과된다. 그래서 결과값 (요금)과 입력값 (거리)의 관계를 찾아야 한다.
거리별 요금을 그래프로 나타내보면 대략 다음과 같은 분포를 띄게 된다
원본 데이타의 거리를 x_data 그리고, 그 거리에서 측정된 택시 요금을 y_origin 이라고 하자.
가설 (Hypothesis) 정의
거리와 요금이 서로 비례하기 때문에, 거리(x_data)와 요금(y_data)간의 상관 관계는 다음과 같이 일차 방정식과 형태의 그래프를 그리게 된다고 가정하자. W (Weight)는 그래프의 각도, b는 bias를 뜻한다
y_data = Wx_data + b
이 일차 방정식 형태로 대충 1차원 그래프를 그려보자 같은 형태로 아래와 같이 그래프를 그려봤다.
그래프를 그려보니 그래프의 각이 안맞는것 같다. 그래프의 각도와 높이를 보정해보자
그래프를 보정했지만 또 안 맞는 것 같다. 그렇다면 최적의 그래프의 각도 W와, 높이 B는 어떻게 찾아야 하는 것일까?
코스트(비용) 함수
우리가 구하고자 하는 그래프는 실제 값에서 그래프의 값까지 차이가 가장 작은 값을 구하고자 하는 것이다. 아래 그림을 보자, 아래와 같이 y_data=Wx_data +b와 같은 그래프를 그렸다고 하자.
원래 값에서 우리가 예측한 값의 차이는
(원래값과 계산된 값의 차이) = 측정값 – 그래프의 값
인데, 차이를 d라고 하자. 그리고 그래프에 의해서 계산된 값은 y_data라고 하면 택시 거리 x_data 에서 원래 측정된 값을 y_orgin라고 해서 수식으로 나타내면,
d = y_data – y_origin
이 된다. 이때 측정값은 여러개가 있기 때문에 n이라고 하면 n번째 측정한 택시비와 산식에 의해서 예측된 값의 차이는 dn이 된다.
dn = y_data_n – y_origin_n
즉 우리가 구하고자 하는 값은 dn의 합이 최소가 되는 W와 b의 값을 구하고자 하는 것이다.
다르게 설명하면 실제 측정한값과, 예측한 값의 차이가 최소가 되는 W와 b를 구하고자 하는 것이다.
dn은 위의 그래프에서 처럼 그래프 위에도 있을 수 있지만 (이경우 dn은 양수), 그래프 아래에도 있을 수 있기 때문에, (이경우 dn은 음수). 합을 구하면, 예측 선에서의 실측값 까지의 거리의 합이 되지 않기 때문에, dn에 대한 절대값을 사용한다고 하자.
그리고 n이 측정에 따라 여러개가 될 수 있기 때문에, 평균을 사용하자.
( ABS(d1)+ABS(d2)+ABS(d3)+…..+ABS(dn)) ) / n
즉 우리가 구하고자 하는 W와 b는 위의 함수의 값이 최소가 되는 값을 구하면 된다.
이렇게 측정된 값에서 연산된 값간의 차이를 연산하는 함수를 비용 함수 또는 영어로 코스트 함수 (Cost function이라고 한다.
사람이 일일이 계산할 수 없이니 컴퓨터를 이용해서 W=0.1,0.2,0.3,…. b=0.1,0.2,0.3,….. 식으로 넣어보고 이 코스트 함수가 가장 최소화되는 W와 b의 값을 찾을 수 있다.
옵티마이져 (Optimizer)
코스트 함수의 최소값을 찾는 알고리즘을 옵티마이져(Optimizer)라고 하는데, 상황에 따라 여러 종류의 옵티마이져를 사용할 수 있다. 여기서는 경사 하강법 (Gradient Descent) 라는 옵티마이져에 대해서 소개하도록 하겠다.
경사 하강법
그러면 W와 b를 구할때 W와 b를 어떤식으로 증가 또는 감소 시켜서 코스트 함수의 최소값을 가장 효율적으로 찾아낼 수 있을까? 위에서 언급한것 처럼 W를 0.0에서 부터 ). 0.1씩 증가시켜나가고 b도 같이 0.0에서 부터 1씩 증가 시켜 나갈까? 무한한 컴퓨팅 자원을 이용하면 되기는 하겠지만, 이렇게 무식하게 계산하지는 않는다.
코스트 함수를 최적화 시킬 수 있는 여러가지 방법이 있지만, Linear regression의 경우에는 경사 하강법 (그레이언트 디센트 : Gradient descent)라는 방식을 사용한다. 경사하강법에 대해서는 자세하게 알필요는 없고 ”대략 이런 개념을 사용하는 구나” 하는 정도만 알면 된다.
경사 하강법을 사용하기 위해서는 위의 코스트 함수를,측정값과 예측값의 절대값의 평균이 아니라 평균 제곱 오차라는 함수를 사용한다.
이 함수는 형식으로 정의되는데, 평균 제곱 오차 함수 (Mean square error function)이라고 한다.
Cost = Sum( ( y_data_n – y_origin_n) ^ 2) / n
풀어서 설명하면, n 번째의 원래데이타(y_origin_n)와 예측 데이타(y_data_n)의 차이를 제곱(^2)해서, 이 값을 n으로 나눈 평균 값이다.
즉 이 Cost가 최소가 되는 W와 b값을 구하면 된다.
편의상 W하나만을 가지고 설명해보자. 위의 그래프를 W와 b에 대한 상관 그래프로 그려보면 다음과 같은 함수 형태가 된다.
이 그래프에서 W에 대한 적정값에 대한 예측을 시작하는 점을 위의 그림에서 파란 점이라고 하면, 경사 하강법은 현재 W의 위치에 대해서, 경사가 아래로 되어 있는 부분으로 점을 움직이는 방법이다. 어느 방향으로 W를 움직이면 Cost 값이 작아지는지는 현재 W위치에서 비용 함수를 미분하면 된다. (고등학교 수학이 기억이 나지 않을 수 있겠지만 미분의 개념은 그래프에서 그 점에 대한 기울기를 구하는 것이다. )
이렇게, 경사를 따라서 아래로 내려가다 보면 Cost 함수가 최소화가 되는 W 값을 찾을 수 있다. 이렇게 경사를 따라서 하강 (내려가면서) 최소값을 찾는다고 하여 경사 하강법이라고 한다.
학습
코스트 함수가 정의 되었으면 실제 데이타 x_data_n과 y_data_n을 넣어서 경사하강법에 의해서 코스트 함수가 최소가 되는 W와 b를 구한다. 이 작업은 W값을 변화시키면서 반복적으로 x_data_n로 계산을 하여, 실제 측정 데이타와 가설에 의해서 예측된 결과값에 대한 차이를 찾아내고 최적의 W와 b값을 찾아낸다.
예측
학습 과정에 의해서 최적의 W와 b를 찾았으면 이제, 이 값들을 이용해서 예측 해보자
학습에 의해서 찾아낸 W가 1600, b가 2000이라고 하면, 앞의 가설에서 정의한 함수는 Wx*b였기 때문에, 예측 함수는
y = Wx +b
거리에 따른 택시비 = W*(거리) + b
거리에 따른 택시비 = 1600 * (거리) + 2000
이 되고, 이를 학습된 모델 이라고 한다.
이제 예측을 수행해보자, 거리가 10km일 때 택시비는 얼마일까? 공식에 따라
택시비 = 1600 * 10km + 2000
으로, 18000원이 된다.
머신 러닝의 순서
지금까지 택시 거리와 택시비에 대한 문제를 가지고 머신 러닝에 대한 기본 원리를 살펴보았다.
이를 요약해서 머신 러닝이란 것이 어떤 개념을 가지고 있는지 다시 정리해보자.
기본 개념은 데이타를 기반으로해서 어떤 가설 (공식)을 만들어 낸 다음, 그 가설에서 나온 값이 실제 측정값과의 차이(코스트 함수)가 최소한의 값을 가지도록 변수에 대한 값을 컴퓨터를 이용해서 찾은 후, 이 찾아진 값을 가지고 학습된 모델을 정의해서 예측을 수행 하는 것이다.
학습 단계
즉 모델을 만들기 위해서, 실제 데이타를 수집하고, 이 수집된 데이타에서 어떤 특징(피쳐)를 가지고 예측을 할것인지 피쳐들을 정의한 다음에, 이 피쳐를 기반으로 예측을 한 가설을 정의하고, 이 가설을 기반으로 학습을 시킨다.
예측 단계
학습이 끝나면 모델 (함수)가 주어지고, 예측은 단순하게, 모델에 값을 넣으면, 학습된 모델에 의해서 결과값을 리턴해준다.
지금까지 Linear regression 분석을 통한 머신러닝의 원리에 대해서 간략하게 알아보았다. 다음 다음장에서는 이 모델을 어떻게 프로그래밍 언어를 이용하여 학습을 시키고 운영을 하는지에 대해서 알아보도록 하겠다.
Thanx to
이글은 딥러닝 전문가 김홍회 박사님(Ayden Kim – https://www.facebook.com/Ayden.Kim )이 검수해주셨습니다. 감사합니다.
출처: https://bcho.tistory.com/1139 [조대협의 블로그]
수포자를 위한 딥러닝
#4 – 로지스틱 회귀를 이용한 이항 분류 문제의 해결
조대협 (http://bcho.tistory.com)
1장에서 머신러닝의 종류는 결과값의 타입이 연속형인 Regression (회귀) 문제와, 몇가지 정해진 분류로 결과(이산형)가 나오는 Classification(분류) 문제가 있다고 하였다. 2,3장에 걸쳐서 회귀 문제에 대해서 알아보았고, 이번장에서는 로지스틱 회귀를 이용한 분류 문제에 대해서 알아보자.
이 글의 내용은 Sung.Kim 교수님의 “모두를 위한 딥러닝”(http://hunkim.github.io/ml/) 을 참고하였다. 여러 자료들을 찾아봤는데, 이 강의 처럼 쉽게 설명해놓은 강의는 없는것 같다.
분류 문제(Classification)의 정의
분류 문제란 학습된 모델을 가지고, 입력된 값을 미리 정해진 결과로 분류해주는 모델을 이야기 한다.
분류 결과가 참/거짓과 같이 두개만 있을때 이항 분류 분석, 두개 이상일때는 다항 분류 분석이라고 하는데, 이번장에서 살펴볼 로지스틱 회귀 분석은 분류된 결과가 두 가지만 있는 이항 분류 모델이다. (다항 분류 모델은 로지스틱 회귀에 이어서 소프트맥스 회귀 분석에서 설명하도록 하겠다.)
이항 분류의 대표적인 예는 다음과 같다.
이메일 스팸과 정상 이메일 검출
신용카드 거래에서 정상 거래와 이상 거래 검출
게임에서 어뷰징 사용자와 정상 사용자 검출
등이 이항 분류의 예가 될 수 있다.
예를 들어 아래와 같은 데이타가 있다고 가정하자
붉은 동그라미로 표시된 데이타와, 녹색 세모로 표시된 데이타를 분류하고 싶을때, 아래와 같이 이항 분류 문제는 이를 분류할 수 있는 이상적인 직선 그래프를 찾는 것이다.
로지스틱스 회귀 분석 (Logistics Regression)
선형 회귀 분석 (Linear regression) 으로 분류 문제 접근하기
이항 분류 모델에 대한 예를 들어보자. 종양의 크기에 따라서 양성 종양(암)인지 음성 종양인지를 판별하는 문제가 있다고 하자. 아래 그림은 종양의 크기에 대한 양성과 음성 여부를 그래프로 나타낸 것인데, X축은 종양의 크기, Y축은 종양의 양성과 음성 여부를 나타낸다. 1이면 양성 0이면 음성이다.
이 문제를 선형 회귀 모델로 정의해서 그래프를 그려보면 다음과 같다.
y=W*x
와 같은 그래프가 그려지고 대략 아래 그림에서 보는것과 같이 y > 0.5 보다 크면 양성 암, y <0.5 보다 작으면 음성암으로 판단할 수 있다. 그런데, 만약에 새로운 트레이닝 데이타에서, 종양의 크기가 큰 데이타가 들어오면 어떻게 될까? 아래 그림을 보자, 예를 들어 새로운 트레이닝 데이타에 종양의 크기가 5인 경우 양성 암이라는 데이타가 새로 들어왔다고 하자 이 경우 앞에서 선형 회귀로 만든 그래프의 기울기가 새로 들어온 데이타를 포함하면 맞지 않기 때문에 선형 회귀로 재학습을 시키게 되면 다음과 같은 기울기(점선 그래프)로 변하게 된다. 이 경우에는 앞에서 암이 양성인 여부를 판단할때 사용한 y가 0.5라는 기준은 더이상 사용할 수 없게 되고, y가 0.2 일때를, 새 기준으로 잡아서, 암의 양성/음성 여부를 판단해야 한다. 그러면 새로운 데이타가 들어올때 마다 기준점을 다시 잡아야 하는것인가? 또한 그렇게 만든 모델로 예측을 한다면, 학습에 사용되지 않은 큰 데이타가 들어온다면 오류가 발생할 수 도 있다. 그래서, 선형 회귀 분석 모델(Linear regression) 은 이항 분류에 적절하지 않다. 그렇다면 어떤 모델이 적절할까 ? 참고 시그모이드(sigmoid) 함수 이런 형태의 이항 분류 분석에 적절한 함수로 시그모이드(sigmoid)함수라는 것이 있다. 그래프의 모양은 다음과 같다. S 자 형태의 그래프 모양으로 중심축 (x=0)을 중심으로 좌측은 0으로 수렴하고 우측은 1로 수렴한다. 이 시그모이드 함수에 앞의 데이타를 적용해보면 다음과 같은 형태가 된다. 그림과 같이 y축을 0.5를 기준으로 판단할때 y가 0.5 일때 x가 2 인데, x<2 인 부분은 y=0으로 음성, x>2인 부분은 y=1로 양성이 된다.
큰 데이타 (x=100)가 추가된다하더라도 시그모이드 함수는 그 값이 1로 수렴되기 때문에, 앞의 선형 회귀 분석의 경우 처럼 암의 양성/음성인 경우를 결정하는 y와 x값이 변화하지 않는다.
가설 (Hyphothesis)
그래서, 이 시그모이드 함수를 사용하여 가설을 정의할 수 있다.
가설은 아래와 같다
y = sigmoid(Wx + b)
결과 값 y 는 0 또는 1의 값을 갖는다. 시그모이드 함수를 수학 공식으로 표현하면, 아래와 같다. (그렇다는 것만 알아두고 외워서 쓰자)
1 / (1+ math.exp(-(W*x+b) )
디시전 바운드리(Decision boundary)
y = sigmoid (W*x + b) 을 가설 함수로 그려진 위의 그래프에서 W는 1, b는 -2로 그래프로 우측으로 두칸을 이동하였다.
W에 1, b에 -2 를 대입해보면 y = sigmoid(1*x-2) 의 형태의 그래프인데, “x가 2를 기준으로 좌,우측이 양성암이냐 아니냐” 를 결정하기 때문에 때문에,
1*x-2 <0 이면, y=0이 되고 1*x+2 >0 이면, y=1이 된다.
이를 일반화 해보면, 시그모이드(sigmoid) 함수 내에 들어가는
W*x+b < 0 이면, y=0이 되고, W*x+b > 0 이면, y=1이 된다.
즉 로지스틱 회귀 분석은 위의 조건을 만족하는 W와 b의 값을 찾는 문제이다.
그리고 시그모이드 함수내의
z=W*x+b
그래프를 기준으로나눠서 y가 0또는 1이 되는 기준을 삼는데, 이 그래프를 기준으로 결정을 하기 때문에, 이를 디시전 바운드리 (Decision boundary) 라고 한다.
변수가 x하나가 아니라, x1,x2가 있는 문제를 살펴보자
이 문제에서 가설 함수 y = sigmoid (W1*x1 + W2*x2 + b)가 될것이고,
z=W1*x1+W2*x2+b 가 디시전 바운드리 함수가 되며, 위의 그래프상에서는 붉은선과 초록선을 나누는 직선이 되고 이것이 바로 디시전 바운드리가 된다.
코스트 함수 (비용함수/Cost function)
자 그러면 가설 함수를 정의 했으니 적정 W와 b값을 찾기 위해서 코스트 함수를 정의해보자.
다시 한번 앞에서 코스트 함수의 개념을 되집어 보면, 코스트 함수의 개념은 가설 함수에 의해서 예측된 값과 트레이닝을 위해서 입력된 값(실제값) 사이의 차이를 계산해주는 함수로, 예측된 값과 입력된값 들의 차이에 대한 평균 값을 구한다.
로지스틱 회귀에서 사용되는 코스트 함수는 다음과 같다.
cost_function =(1/n) * Sum( -y_origin*log(sigmoid(Wx+b)) – (1-y_origin)*log(1-(sigmoid(Wx+b))) )
n 의 트레이닝 데이타의 수
Y_origin 는 트레이닝에 사용된 x에 대한 입력값
의미를 설명하겠지만, 머리가 아프면 넘어가도 좋다. 그냥 가져다 쓰면 된다.
그러면 어떻게 저런 코스트 함수가 사용되었는지를 알아보자.
선형회귀분석(Linear regression)의 코스트 함수를 다시 한번 살펴보자
코스트 함수는 측정값과 가설에 의해서 예측된 값의 차이의 제곱 평균을 나타내는 함수였다.
선형 회귀 분석에서의 코스트 함수는 다음과 같았다.
Cost = Sum( (y_data_n – y_origin_n) ^ 2) / n
그리고 이 함수를 그래프로 그려보면 다음과 같이 매끈한 그래프가 나왔다.
그래프의 모양이 매끈한 골짜기 모양이였기 때문에 경사 하강법(Gradient descent)을 사용할 수 있었다.
그러면 로지스틱 회귀 분석에도 기존의 코스트 함수를 이용하여 경사하강법을 적용할 수 있는지 보자
코스트 함수에서 y_data_n에 가설 함수를 대입 시켜 보면
Cost = Sum( ( sigmoid(Wx + b) – y_origin) ^ 2) /n
Sigmoid 함수를 풀어서표현하면
Cost = Sum( 1 / (1+ math.exp(-(W*x+b) )- y_origin) ^ 2) /n
가 되는데, exp( -(W*x+b) ) (즉 e^(-Wx+b) ) 형태로 표현되기 때문에,e 가 들어간 코스트 함수의 그래프는 다음과 같은 형태를 띄게 된다.
경사 하강법은 그래프를 타고 내려가면서 가장 작은 값을 찾는 알고리즘인데, (물이 골짜기를 따라서 내려가듯이), 이 코스트 함수의 그래프는 작은 골짜기들이 모여서 큰 골짜기 형태를 만든 모양이 된다. 그래서 경사 하강법을 적용할 경우 아래 그림과 같이 코스트 함수의 최소값으로 수렴하지 않고, 중간에 작은 골짜기에서 수렴해 버린다.
그래서 로지스틱 회귀 분석에서는 경사 하강법을 사용하기 위해서 이 코스트 함수를 메끈한 형태로 만들 필요가 있고, 새로운 코스트 함수를 사용한다. “e” 때문에 이런형태의 그래프가 그려지는 건데, e를 상쇄할 수 있는 역치함수는 log 함수가 있다. 그래서 log 함수를 적용하여 메끈한 형태의 코스트 함수를 정의해보자.코스트 함수는 y=1일때와 y=0일때 나눠서 계산해야 한다. 각각의 함수를 보면 다음과 같다.
y=1cost = (1/n) * sum (-log(가설) )cost = (1/n) * sum (-log(sigmoid(Wx+b)) )
y=0cost = (1/n) * sum( -log(1-가설) )cost = (1/n) * sum( -log(1-sigmoid(Wx+b)) )
코스트 함수는 측정한 값과, 가설에 의해 예측된 값의 차이를 나타내는 함수로, 개별값이 작을 수록 적절한 모델이 된다. 그래서 측정값과 가설값이 같거나 유사할 수 록 코스트 함수의 결과값이 작게 나와야 한다.
먼저 y=1 (측정한 값이)일때를 보자,
코스트 함수는 cost = (1/n) * sum (-log(sigmoid(Wx+b)) ) 이다.
전체 코스트 평균 말고, 개발 값에 대한 측정값과 예측값에 대한 차이는 이 함수에서 -log(sigmoid(Wx+b)) 이다. 시그모이드 함수 특성상 sigmoid(Wx+b)는 0~1까지의 범위를 가지기 때문에 -log(0~1)을 그래프로 그려보면 다음과 같다.
측정값이 1이기 때문에, 가설함수 (시그모이드 함수 sigmoid(Wx+b) )에 의한 결과가 1이면 예측이 잘된것이고, 1에서 멀어져서 0으로 갈수록 예측된 값과 측정된 값의 차이가 크다고 할 수 있는데, 위의 그래프에서 보면, 가설에 의해 계산한 결과(x축)가 1에 가까울 수록 코스트(y축)은 0으로 수렴하고, 가설에 의해 계산한 결과가 0에 수렴할 수 록, 코스트는 높아지는 것을 볼 수 있다. 즉 y=1에서는 가설이 1에 수렴해야 하기 때문에, 1에 가까워질 수록 코스트가 낮아지는 그래프를 띄게 된다.
y가 0일때도 마찬가지 원리인데 측정값이 0이기 때문에, 가설에 의한 결과값이 0이 되어야 한다. 0에서 멀어질 경우 코스트가 늘어나고 0에서 가까워질 경우 코스트가 줄어드는 형태의 비용 함수를 정의해야 한다.
마찬가지로 코스트 함수의 평균이 아닌 개별값을 보면, -log(1-sigmoid(Wx+b)) 이 되고 sigmoid(Wx+b)는 0..1의 범위이기 때문에, -log(1- (0..1) ) 이 된다. 단 1에서 0..1을 뺄셈을 했기 때문에, 그래프는 -log(1.0, 0.99,0.98,….) 형태로 y=1인 경우와 반대 모양의 그래프가 된다.
자 이제, y=1인 경우와 y=0인 경우에 대한 각각의 코스트 함수를 정의하였다. 이를 코딩으로 옮기려면 y=1인 경우와 0인 경우에 대해서 각각 다른 코스트 함수로 처리하기 위해서 if 문을 사용해야 하지만, 그러면 코딩이 복잡해지기 때문에 이를 하나의 식으로 간단히 할 수 있는 방법을 찾아보자
y=1cost_y1 = (1/n) * sum (-log(sigmoid(Wx+b)) )
y=0 cost_y0 = (1/n) * sum( -log(1-sigmoid(Wx+b)) )
y=1일때는 y=0인 코스트 함수 cost_y0 가 0이 되고, y=0일때는 y=1의 코스트 함수 cost_y1가 0이 되면 된다.
즉 cost = y*cost_y1 + (1-y)cost_y0 형태가 되면,
y=1 이면, cost = 1*cost_y1 + (1-1)*cost_y0 = cost_y1이 되고 y=0 이면, cost = 0*cost_y1 + (1-0)*cost_y0 = cost_y0 이 된다.
그래서 y=1인 코스트 함수와 y=0인 코스트 함수를 위의 식 cost_y1과 cost_y=0에 각각 대입해보면
cost = y*[ (1/n) * sum (-log(sigmoid(Wx+b)) )] + (1-y)[(1/n) * sum( -log(1-sigmoid(Wx+b)) )]
으로 평균 함수인 (1/n)* sum을 앞으로 빼면
cost = (1/n)*Sum( y*(-log(sigmoid(Wx+b))) + (1-y)(-log(1-sigmoid(Wx+b) )) )
가 된다.
수식을 따라가면서 이해하면 제일 좋겠지만, 코스트 함수가 저런 원리로 생성이 되는 구나 정도 이해하고, 그냥 가져도 쓰자. (왠지 주입식 교육 같은 느낌이 들기는 하지만)
옵티마이져 (Optimizer)
코스트 함수가 정해졌으면, 코스트를 최소화할 옵티마이져로 어떤 옵티마이져를 사용해야 할지 결정해야 한다.
앞에서 경사 하강법에 적절하도록 코스트 함수를 수정했기 때문에, 경사 하강법(Gradient descent) 알고리즘을 사용한다. 이 경사하강법은 텐서플로우 코딩에서는 간단하게
optimizer = tf.train.GradientDecentOptimizer(learningRate) train = optimizer.minimize(cost_function)
정의하여 옵티마이져로 사용할 수 있다.
예측 (Prediction)
자 이렇게 해서, 로지스틱 회귀에 대한 학습을 끝내고, W와 b 값을 구했다고 하자. 그렇다면 이 학습된 모델을 가지고, 들어오는 데이타에 대한 분류는 어떻게 할것인가? (예측은 어떻게 할것인가)
가설 함수를 다시 생각해보면 가설함수는 sigmoid(Wx + b) 이다.
그래서 예측이 필요한 값 x가 들어왔을때, 가설함수에 의한 결과값이 y’ 이라고 하면, y’은 0..1 까지의 실수가 되고, y’은 0.75일 경우, x에 대한 결과가 1일 확률은 75%, 0일 확률은 (100-75%인) 25%가 된다.
앞에서 종양의 크기에 대한 양성암 문제를 다시 예를 들어보면, 종양의 크기 x=5이면, sigmoid(Wx+b)에 의해서 계산된 결과가 0.95라고 하면, 이 경우 양성 종양인 확률은 95%, 음성인 확률은 5% 이다.
정리
분류 문제는 회귀 분석과 함께 머신러닝에서 가장 대표적인 문제이고, 로지스틱 회귀 분석은 분류문제에 있어서 기본적이고 대표가 되는 모델이다. 수식이 많이 나와서 다소 복잡할 수 있겠지만 정리를 해보면 다음과 같다.
먼저 가설 함수 (Wx+b) 를 정의하고, 이 가설 함수에 사용된 변수 W와 b에 대한 적정값을 계산하기 위해서 코스트 함수를 정의한후, 이 코스트 함수를 이용한 W와 b를 구하기 위해서 옵티마이저를 정의해서 학습을 통해서 W와 b값을 구한다.
이 과정에서 복잡한 수학적인 설명이 있었지만, 다음과 같은 접근 방법이 좋지 않을까 한다.
로지스틱 회귀 분석은 결과가 참/거짓인 이항 분석 문제에 사용된다. 비용 함수가 있다는 것을 알고 로지스틱 회귀 분석용 비용 함수를 가져다 쓴다. 단 비용 함수가 낮을 수 록 학습이 정확하다는 의미 정도는 알아야 학습 도중에 비용 함수의 결과를 보고 학습의 정확도를 파악할 수 있다. 옵티마이져는 그레디언트 디센트 알고리즘을 사용한다. 그냥 가져다 쓴다. 단 여기서 학습 속도(Learning Rate, 2장 선형 회귀 분석을 구현하는 문서에서도 설명하였음)의 의미를 파악하고,학습 프로그램을 돌릴때 이 패러미터를 조정하면서 사용한다. 나온 결과값 (W와 b) 값을 이용하여 예측을 수행한다.
참고
Sung Kim 교수님의 딥러닝 강좌 https://hunkim.github.io/ml/
Andrew ng 교수님 강의 https://www.youtube.com/watch?v=LLx4diIP83I
Andrew ng 교수님의 Decision boundary에 대한 설명
Andrew ng 교수님 강의 노트 http://www.holehouse.org/mlclass/06_Logistic_Regression.html
https://www.youtube.com/channel/UCRyIQSBvSybbaNY_JCyg_vA
출처: https://bcho.tistory.com/1142 [조대협의 블로그]
딥러닝의 역사와 기본 개념
조대협 (http://bcho.tistory.com)
인경 신경망 알고리즘의 기본 개념
알파고나 머신러닝에서 많이 언급되는 알고리즘은 단연 딥러닝이다.
이 딥러닝은 머신러닝의 하나의 종류로 인공 신경망 알고리즘의 새로운 이름이다.
인공 신경망은 사람의 두뇌가 여러개의 뉴론으로 연결되서 복잡한 연산을 수행한다는데서 영감을 받아서, 머신러닝의 연산을 여러개의 간단한 노드를 뉴론 처럼 상호 연결해서 복잡한 연산을 하겠다는 아이디어이다.
<출처 : http://webspace.ship.edu/cgboer/theneuron.html >
이 뉴런의 구조를 조금 더 단순하게 표현해보면 다음과 같은 모양이 된다.
뉴런은 돌기를 통해서 여러 신경 자극 (예를 들어 피부에서 촉각)을 입력 받고, 이를 세포체가 인지하여 신호로 변환해준다. 즉 신경 자극을 입력 받아서 신호라는 결과로 변환해주는 과정을 거치는데,
이를 컴퓨터로 형상화 해보면 다음과 같은 형태가 된다.
뉴런의 돌기처럼 외부에서 입력값 X1,X2,X3를 읽어드리고, 이 입력값들은 돌기를 거치면서 인식되어 각각 W1*X1, W2*X2, W3*X3로 변환이 되어 세포체에 도착하여 여러 돌기에서 들어온 값은 (W1*X1+W2*X2+W3*X3)+b 값으로 취합된다.
이렇게 취합된 값은 세포체내에서 인지를 위해서 어떤 함수 f(x)를 거치게 되고, 이 값이 일정 값을 넘게 되면, Y에 1이라는 신호를 주고, 일정값을 넘지 않으면 0이라는 값을 준다.
즉 뉴런을 본떠서 입력값 X1…n에 대해서, 출력값 Y가 0 또는 1이 되는 알고리즘을 만든것이다.
Perceptron
이를 수식을 사용하여 한번 더 단순화를 시켜보면
X를 행렬이라고 하고, X = [X1,X2,X3] 라고 하자.
그리고 역시 이에 대응되는 행렬 W를 정의하고 W=[W1,W2,W3] 라고 하면
<뉴런을 본떠서 만든 Perceptron>
입력 X를 받아서 W를 곱한 후에, 함수 f(x)를 거쳐서 0 또는 1의 결과를 내는 Y를 낸다.
즉 입력 X를 받아서 참(1)인지 거짓(0) 인지를 판별해주는 계산 유닛을 Perceptron이라고 한다.
이 Perceptron은 결국 W*X+b인 선을 그려서 이 선을 기준으로 1 또는 0을 판단하는 알고리즘이다.
예를 들어서 동물의 크기 (X1)와 동물의 복종도 (X2)라는 값을 가지고, 개인지 고양이인지를 구별하는 Perceptron이 있을때,
W*X+b로 그래프를 그려보면 (X=[X1,X2], W=[W1,W2] 다음과 같은 직선이 되고, 이 직선 윗부분이면 개, 아랫 부분이면 고양이 식으로 분류가 가능하다.
이 Perceptron은 입력에 따라서 Y를 1,0으로 분류해주는 알고리즘으로 앞에서 설명한 로지스틱 회귀 알고리즘을 사용할 수 있는데, 이때 로지스틱 회귀에서 사용한 함수 f(x)는 sigmoid 함수를 사용하였기 때문에, 여기서는 f(x)를 이 sigmoid 함수를 사용했다. 이 함수 f(x)를 Activation function이라고 한다. 이 Activation function은 중요하니 반드시 기억해놓기 바란다.
( 참고. 손쉬운 이해를 위해서 로지스틱 회귀와 유사하게 sigmoid 함수를 사용했지만, sigmoid 함수이외에 다양한 함수를 Activation 함수로 사용할 수 있으며, 요즘은 sigmoid 함수의 정확도가 다른 Activation function에 비해 떨어지기 때문에, ReLu와 같은 다른 Activation function을 사용한다. 이 Activation function)에 대해서는 나중에 설명하겠다.)
Perceptron의 XOR 문제
그런데 이 Perceptron는 결정적인 문제를 가지고 있는데, 직선을 그려서 AND,OR 문제를 해결할 수 는 있지만, XOR 문제를 풀어낼 수 가 없다는 것이다.
다음과 같은 Perceptron이 있을때
다음 그림 처럼 AND나 OR 문제는 직선을 그려서 해결이 가능하다.
그러나 다음과 같은 XOR 문제는 WX+b의 그래프로 해결이 가능할까?
<그림 XOR 문제>
하나의 선을 긋는 Perceptron으로는 이 문제의 해결이 불가능하다.
MLP (Multi Layer Perceptron) 다중 계층 퍼셉트론의 등장
이렇게 단일 Perceptron으로 XOR 문제를 풀 수 없음을 증명되었는데, 1969년에 Marvin Minsky 교수가, 이 문제를 해결 하는 방법으로 Perceptron을 다중으로 겹치면 이 문제를 해결할 수 있음을 증명하였다.
<그림 Multi Layer Perceptron의 개념도>
그런데, 이 MLP 역시 다른 문제를 가지고 있는데, MLP에서 학습을 통해서 구하고자 하는 것은 최적의 W와 b의 값을 찾아내는 것인데, 레이어가 복잡해질 수 록, 연산이 복잡해져서 현실적으로 이 W와 b의 값을 구하는 것이 불가능 하다는 것을 Marvin Minsky 교수가 증명 하였다.
Back Propagation 을 이용한 MLP 문제 해결
이런 문제를 해결 하기 위해서 Back propagation이라는 알고리즘이 도입되었는데, 기본 개념은
뉴럴 네트워크를 순방향으로 한번 연산을 한 다음에, 그 결과 값을 가지고, 뉴럴 네트워크를 역방향 (backward)로 계산하면서 값을 구한다는 개념이다.
Backpropagation의 개념에 대해서는 다음글에서 자세하게 설명하도록 한다.
Back Propagation 문제와 ReLu를 이용한 해결
그러나 이 Back Propagation 역시 문제를 가지고 있었는데, 뉴럴 네트워크가 깊어질 수 록 Backpropagation이 제대로 안된다.
즉 순방향(foward)한 결과를 역방향(backward)로 반영하면서 계산을 해야 하는데, 레이어가 깊을 수 록 뒤에 있는 값이 앞으로 전달이 되지 않는 문제 이다. 이를 Vanishing Gradient 문제라고 하는데, 그림으로 개념을 표현해보면 다음과 같다.
뒤에서 계산한 값이 앞의 레이어로 전달이 잘 되지 않는 것을 표현하기 위해서 흐리게 네트워크를 표현하였다.
이는 ReLu라는 activation function (앞에서는 sigmoid 함수를 사용했다.)으로 해결이 되었다.
뉴럴 네트워크의 초기값 문제
이 문제를 캐나다 CIFAR 연구소의 Hinton 교수님이 “뉴럴네트워크는 학습을 할때 초기값을 잘 주면 학습이 가능하다” 라는 것을 증명하면서 깊은 레이어를 가진 뉴럴 네트워크의 사용이 가능하게 된다.
이때 소개된 알고리즘이 초기값을 계산할 수 있는 RBM (Restricted Boltzmann Machine)이라는 알고리즘으로 이 알고리즘을 적용한 뉴럴 네트워크는 특히 머신러닝 알고리즘을 테스트 하는 ImageNet에서 CNN (Convolutional Neural Network)가 독보적인 성능을 내면서 뉴럴 네트워크가 주목 받기 시작하였다.
딥러닝
딥러닝이라는 어원은 새로운 알고리즘이나 개념을 이야기 하는 것이 아니고, 뉴럴 네트워크가 새롭게 주목을 받기 시작하면서 Hinton 교수님 등이 뉴럴네트워크에 대한 리브랜딩의 의미로 뉴럴 네트워크를 새로운 이름 “딥러닝”으로 부르기 시작하면서 시작 되었다.
추가
뉴럴네트워크와 딥러닝의 대략적인 개념과 역사에 대해서 알아보았다.
이 글에서는 뉴럴 네트워크에 대한 대략적인 개념만을 설명하고 있는데, 주로 언급되는 단어를 중심으로 기억하기를 바란다.
Perceptron
MLP (Multi Layer Perceptron)
Back propagation
ReLu
RBM
이외에도, Drop Out, Mini Batch, Ensemble 과 같은 개념이 있는데, 이 개념은 추후에 다시 설명하고, 딥러닝에서 이미지 인식에 많이 사용되는 CNN (Convolutional Neural Network)을 나중에 소개하도록 하겠다.
출처: https://bcho.tistory.com/1147 [조대협의 블로그]
딥러닝 – 컨볼루셔널 네트워크를 이용한 이미지 인식의 개념
이번 글에서는 딥러닝 중에서 이미지 인식에 많이 사용되는 컨볼루셔널 뉴럴 네트워크 (Convolutional neural network) 이하 CNN에 대해서 알아보도록 하자.
이 글을 읽기에 앞서서 머신러닝에 대한 기본 개념이 없는 경우는 다음 글들을 참고하기 바란다.
머신러닝의 개요 http://bcho.tistory.com/1140
머신러닝의 기본 원리는 http://bcho.tistory.com/1139
이산 분류의 원리에 대해서는 http://bcho.tistory.com/1142
인공 신경망에 대한 개념은 http://bcho.tistory.com/1147
CNN은 전통적인 뉴럴 네트워크 앞에 여러 계층의 컨볼루셔널 계층을 붙인 모양이 되는데, 그 이유는 다음과 같다. CNN은 앞의 컨볼루셔널 계층을 통해서 입력 받은 이미지에 대한 특징(Feature)를 추출하게 되고, 이렇게 추출된 특징을 기반으로 기존의 뉴럴 네트워크를 이용하여 분류를 해내게 된다.
컨볼루셔널 레이어 (Convolutional Layer)
컨볼루셔널 레이어는 앞에서 설명 했듯이 입력 데이타로 부터 특징을 추출하는 역할을 한다.
컨볼루셔널 레이어는 특징을 추출하는 기능을 하는 필터(Filter)와, 이 필터의 값을 비선형 값으로 바꾸어 주는 액티베이션 함수(Activiation 함수)로 이루어진다.
그럼 각 부분의 개념과 원리에 대해서 살펴보도록 하자.
<그림 Filter와 Activation 함수로 이루어진 Convolutional 계층>
필터 (Filter)
필터 개념 이해
필터는 그 특징이 데이타에 있는지 없는지를 검출해주는 함수이다. 예를 들어 아래와 같이 곡선을 검출해주는 필터가 있다고 하자.
필터는 구현에서는 위의 그림 좌측 처럼 행렬로 정의가 된다.
입력 받은 이미지 역시 행렬로 변환이 되는데, 아래 그림을 보자.
쥐 그림에서 좌측 상단의 이미지 부분을 잘라내서 필터를 적용하는 결과이다.
잘라낸 이미지와, 필터를 곱하면
과 같이 결과 값이 매우 큰 값이 나온다.
만약에 아래 그림처럼 쥐 그림에서 곡선이 없는 부분에 같은 필터를 적용해보면
결과 값이 0에 수렴하게 나온다.
즉 필터는 입력받은 데이타에서 그 특성을 가지고 있으면 결과 값이 큰값이 나오고, 특성을 가지고 있지 않으면 결과 값이 0에 가까운 값이 나오게 되서 데이타가 그 특성을 가지고 있는지 없는지 여부를 알 수 있게 해준다.
다중 필터의 적용
입력값에는 여러가지 특징이 있기 때문에 하나의 필터가 아닌 여러개의 다중 필터를 같이 적용하게 된다.
다음과 같이 |,+,- 모양을 가지고 있는 데이타가 있다고 하자
각 데이타가 |와 – 의 패턴(특징을) 가지고 있는지를 파악하기 위해서 먼저 | (세로) 필터를 적용해보면 다음과 같은 결과가 나온다.
(맨앞의 상자는 필터이다.) 두번째 상자부터 원본 이미지에 세로선(|) 이 없는 경우 결과 이미지에 출력이 없고, 세로선이 있는 경우에는 결과 이미지에 세로 선이 있는 것을 확인할 수 있다.
마찬가지로 가로선(-) 특징이 있는지 가로 선을 추출하는 필터를 적용해보면 다음과 같은 결과를 얻을 수 있다.
이렇게 각기 다른 특징을 추출하는 필터를 조합하여 네트워크에 적용하면, 원본 데이타가 어떤 형태의 특징을 가지고 있는지 없는지를 판단해 낼 수 있다. 다음은 하나의 입력 데이타에 앞서 적용한 세로와 가로선에 대한 필터를 동시에 적용한 네트워크의 모양이다.
Stride
그러면 이 필터를 어떻게 원본 이미지에 적용할까? 큰 사진 전체에 하나의 큰 필터 하나만을 적용할까?
아래 그림을 보자, 5×5 원본 이미지가 있을때, 3×3인 필터를 좌측 상단에서 부터 왼쪽으로 한칸씩 그 다음 한줄을 내려서 또 왼쪽으로 한칸씩 적용해서 특징을 추출해낸다.
오른쪽 Convolved Feature 행렬이 바로 원본 이미지에 3×3 필터를 적용하여 얻어낸 결과 이다.
이렇게 필터를 적용 하는 간격 (여기서는 우측으로 한칸씩 그리고 아래로 한칸씩 적용하였다.) 값을 Stride라고 하고, 필터를 적용해서 얻어낸 결과를 Feature map 또는 activation map 이라고 한다.
Padding
앞에서 원본 데이타에 필터를 적용한 내용을 보면 필터를 적용한 후의 결과값은 필터 적용전 보다 작아졌다. 5×5 원본 이미지가 3×3의 1 stride 값을 가지고 적용되었을때, 결과 값은 3×3으로 크기가 작아졌다.
그런데, CNN 네트워크는 하나의 필터 레이어가 아니라 여러 단계에 걸쳐서 계속 필터를 연속적으로 적용하여 특징을 추출하는 것을 최적화 해나가는데, 필터 적용 후 결과 값이 작아지게 되면 처음에 비해서 특징이 많이 유실 될 수 가 있다. 필터를 거쳐감에 따라서 특징이 유실되는 것을 기대했다면 문제가 없겠지만, 아직까지 충분히 특징이 추출되기 전에, 결과 값이 작아지면 특징이 유실된다. 이를 방지 하기 위한 방법으로 padding 이라는 기법이 있는데, padding은 결과 값이 작아지는 것을 방지하기 위해서 입력값 주위로 0 값을 넣어서 입력 값의 크기를 인위적으로 키워서, 결과값이 작아지는 것을 방지 하는 기법이다.
다음 그림을 보자, 32x32x3 입력값이 있을때, 5x5x3 필터를 적용 시키면 결과값 (feature map)의 크기는 28x28x3 이 된다. 이렇게 사이즈가 작아지는 것을 원하지 않았다면 padding을 적용하는데, input 계층 주위로 0을 둘러 싸서, 결과 값이 작아지고 (피쳐가 소실 되는것)을 막는다
32x32x3 입력값 주위로 2 두깨로 0을 둘러싸주면 36x36x3 이 되고 5x5x3 필터 적용하더라도, 결과값 은 32x32x3으로 유지된다.
< 그림, 32x32x3 데이타에 폭이 2인 padding을 적용한 예 >
패딩은 결과 값을 작아지는 것을 막아서 특징이 유실되는 것을 막는 것 뿐 아니라, 오버피팅도 방지하게 되는데, 원본 데이타에 0 값을 넣어서 원래의 특징을 희석 시켜 버리고, 이것을 기반으로 머신러닝 모델이 트레이닝 값에만 정확하게 맞아 들어가는 오버피팅 현상을 방지한다.
오버 피팅에 대해서는 별도의 다른 글을 통해서 설명한다.
필터는 어떻게 만드는 것일까?
그렇다면 CNN에서 사용되는 이런 필터는 어떻게 만드는 것일까? CNN의 신박한 기능이 바로 여기에 있는데, 이 필터는 데이타를 넣고 학습을 시키면, 자동으로 학습 데이타에서 학습을 통해서 특징을 인식하고 필터를 만들어 낸다.
Activation function
필터들을 통해서 Feature map이 추출되었으면, 이 Feature map에 Activation function을 적용하게 된다.
Activation function의 개념을 설명하면, 위의 쥐 그림에서 곡선값의 특징이 들어가 있는지 안들어가 있는지의 필터를 통해서 추출한 값이 들어가 있는 예에서는 6000, 안 들어가 있는 예에서는 0 으로 나왔다.
이 값이 정량적인 값으로 나오기 때문에, 그 특징이 “있다 없다”의 비선형 값으로 바꿔 주는 과정이 필요한데, 이 것이 바로 Activation 함수이다.
예전에 로지스틱 회귀 ( http://bcho.tistory.com/1142 )에서 설명하였던 시그모이드(sigmoid) 함수가 이 Activation 함수에 해당한다.
간단하게 짚고 넘어가면, 결과 값을 참/거짓 으로 나타내는 것이 아니라, 참에 가까워면 0.5~1사이에서 1에 가까운 값을 거짓에 가까우면 0~0.5 사이의 값으로 리턴하는 것이다.
<그림. Sigmoid 함수>
뉴럴 네트워크나 CNN (CNN도 뉴럴 네트워크이다.) 이 Activation 함수로 이 sigmoid 함수는 잘 사용하지 않고, 아래 그림과 같은 ReLu 함수를 주요 사용한다.
<그림. ReLu 함수>
이 함수를 이용하는 이유는 뉴럴 네트워크에서 신경망이 깊어질 수 록 학습이 어렵기 때문에, 전체 레이어를 한번 계산한 후, 그 계산 값을 재 활용하여 다시 계산하는 Back propagation이라는 방법을 사용하는데, sigmoid 함수를 activation 함수로 사용할 경우, 레이어가 깊어지면 이 Back propagation이 제대로 작동을 하지 않기 때문에,(값을 뒤에서 앞으로 전달할때 희석이 되는 현상. 이를 Gradient Vanishing 이라고 한다.) ReLu라는 함수를 사용한다.
풀링 (Sub sampling or Pooling)
이렇게 컨볼루셔날 레이어를 거쳐서 추출된 특징들은 필요에 따라서 서브 샘플링 (sub sampling)이라는 과정을 거친다.
컨볼루셔널 계층을 통해서 어느정도 특징이 추출 되었으면, 이 모든 특징을 가지고 판단을 할 필요가 없다.
쉽게 예를 들면, 우리가 고해상도 사진을 보고 물체를 판별할 수 있지만, 작은 사진을 가지고도 그 사진의 내용이 어떤 사진인지 판단할 수 있는 원리이다.
그래서, 추출된 Activation map을 인위로 줄이는 작업을 하는데, 이 작업을 sub sampling 도는 pooling 이라고 한다. Sub sampling은 여러가지 방법이 있는데, max pooling, average pooling, L2-norm pooling 등이 있고, 그중에서 max pooling 이라는 기법이 많이 사용된다.
Max pooling (맥스 풀링)
맥스 풀링은 Activation map을 MxN의 크기로 잘라낸 후, 그 안에서 가장 큰 값을 뽑아내는 방법이다.
아래 그림을 보면 4×4 Activation map에서 2×2 맥스 풀링 필터를 stride를 2로 하여 2칸씩 이동하면서 맥스 풀링을 한 예인데, 좌측 상단에서는 6이 가장 큰 값이기 때문에 6을 뽑아내고, 우측 상단에는 2,4,7,8 중 8 이 가장 크기 때문에 8을 뽑아 내었다.
맥스 풀링은 특징의 값이 큰 값이 다른 특징들을 대표한다는 개념을 기반으로 하고 있다.
(주의 풀링은 액티베이션 함수 마다 매번 적용하는 것이 아니라, 데이타의 크기를 줄이고 싶을때 선택적으로 사용하는 것이다.)
이런 sampling 을 통해서 얻을 수 있는 장점은 다음과 같다.
전체 데이타의 사이즈가 줄어들기 때문에 연산에 들어가는 컴퓨팅 리소스가 적어지고
데이타의 크기를 줄이면서 소실이 발생하기 때문에, 오버피팅을 방지할 수 있다.
컨볼루셔널 레이어
이렇게 컨볼루셔널 필터와 액티베이션 함수 (ReLU) 그리고 풀링 레이어를 반복적으로 조합하여 특징을 추출한다.
아래 그림을 보면 여러개의 컨볼루셔널 필터(CONV)와 액티베이션 함수 (RELU)와 풀링 (POOL) 사용된것을 볼 수 있다.
Fully connected Layer
컨볼루셔널 계층에서 특징이 추출이 되었으면 이 추출된 특징 값을 기존의 뉴럴 네트워크 (인공 신경 지능망)에 넣어서 분류를 한다.
그래서 CNN의 최종 네트워크 모양은 다음과 같이 된다.
<그림. CNN 네트워크의 모양>
Softmax 함수
Fully connected network (일반적인 뉴럴 네트워크)에 대해서는 이미 알고 있겠지만, 위의 그림에서 Softmax 함수가 가장 마지막에 표현되었기 때문에, 다시 한번 짚고 넘어가자.
Softmax도 앞에서 언급한 sigmoid나 ReLu와 같은 액티베이션 함수의 일종이다.
Sigmoid 함수가 이산 분류 (결과값에 따라 참 또는 거짓을 나타내는) 함수라면, Softmax 는 여러개의 분류를 가질 수 있는 함수이다. 아래 그림이 Softmax 함수의 그림이다.
이것이 의미하는 바는 다음과 같다. P3(x)는 특징(feature) x에 대해서 P3일 확률, P1(x)는 특징 x 에 대해서 P1인 확률이다.
Pn 값은 항상 0~1.0의 범위를 가지며, P1+P2+…+Pn = 1이 된다.
예를 들어서 사람을 넣었을때, 설현일 확률 0.9, 지현인 확율 0.1 식으로 표시가 되는 것이다.
Dropout 계층
위 CNN 그래프에서 특이한 점중 하나는 Fully connected 네트워크와 Softmax 함수 중간에 Dropout layer (드롭아웃) 라는 계층이 있는 것을 볼 수 있다.
드롭 아웃은 오버피팅(over-fit)을 막기 위한 방법으로 뉴럴 네트워크가 학습중일때, 랜덤하게 뉴런을 꺼서 학습을 방해함으로써, 학습이 학습용 데이타에 치우치는 현상을 막아준다.
<그림. 드롭 아웃을 적용한 네트워크 >
그림 출처 : https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/dropout_layer.html
일반적으로 CNN에서는 이 드롭아웃 레이어를 Fully connected network 뒤에 놓지만, 상황에 따라서는 max pooling 계층 뒤에 놓기도 한다.
다음은 드롭아웃을 적용하고 학습시킨 모델과 드롭 아웃을 적용하지 않은 모델 사이의 예측 정확도를 비교한 결과 이다.
<그림. 드룹아웃을 적용한 경우와 적용하지 않고 학습한 경우, 에러율의 차이 >
이렇게 복잡한데 어떻게 구현을 하나요?
대략적인 개념은 이해를 했다. 그렇다면 구현을 어떻게 해야 할까? 앞에서 설명을 할때, softmax 나 뉴런에 대한 세부 알고리즘 ReLu 등과 같은 알고리즘에 대한 수학적인 공식을 설명하지 않았다. 그렇다면 이걸 하나하나 공부해야 할까?
아니다. 작년에 구글에서 머신러닝용 프로그래밍 프레임워크로 텐서 플로우라는 것을 발표했다.
이 텐서 플로우는 (http://www.tensorflow.org)는 이런 머신 러닝에 특화된 프레임웍으로, 머신러닝에 필요한 대부분의 함수들을 이미 구현하여 제공한다.
실제로 CNN을 구현한 코드를 보자. 이 코드는 홍콩 과학기술 대학교의 김성훈 교수님의 강의를 김성훈님이란 분이 텐서 플로우 코드로 구현하여 공유해놓은 코드중 CNN 구현 예제이다. https://github.com/FuZer/Study_TensorFlow/blob/master/08%20-%20CNN/CNN.py
첫번째 줄을 보면, tf.nn.conv2d 라는 함수를 사용하였는데, 이 함수는 컨볼루셔널 필터를 적용한 함수 이다. 처음 X는 입력값이며, 두번째 w 값은 필터 값을 각각 행렬로 정의 한다. 그 다음 strides 값을 정의해주고, 마지막으로 padding 인자를 통해서 padding 사이즈를 정한다.
컨볼루셔널 필터를 적용한 후 액티베이션 함수로 tf.nn.relu를 이용하여 ReLu 함수를 적용한 것을 볼 수 있다.
다음으로는 tf.nn.max_pool 함수를 이용하여, max pooling을 적용하고 마지막으로 tf.nn.dropout 함수를 이용하여 dropout을 적용하였다.
전문적인 수학 지식이 없이도, 이미 잘 추상화된 텐서플로우 함수를 이용하면, 기본적인 개념만 가지고도 머신러닝 알고리즘 구현이 가능하다.
텐서 플로우를 공부하는 방법은 여러가지가 있겠지만, 유투브에서 이찬우님이 강의 하고 계신 텐서 플로우 강의를 듣는 것을 추천한다. 한글이고 설명이 매우 쉽다. 그리고 매주 일요일에 생방송을 하는데, 궁금한것도 물어볼 수 있다.
https://www.youtube.com/channel/UCRyIQSBvSybbaNY_JCyg_vA
그리고 텐서플로우 사이트의 튜토리얼도 상당히 잘되어 있는데, https://www.tensorflow.org/versions/r0.12/tutorials/index.html 를 보면 되고 한글화도 잘 진행되고 있다. 한글화된 문서는 https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/ 에서 찾을 수 있다.
구현은 할 수 있겠는데, 그러면 이 모델은 어떻게 만드나요?
그럼 텐서플로우를 이용하여 모델을 구현할 수 있다는 것은 알았는데, 그렇다면 모델은 어떻게 만들까? 정확도를 높이려면 수십 계층의 뉴럴 네트워크를 설계해야 하고, max pooling 함수의 위치와 padding등 여러가지를 고려해야 하는데, 과연 이게 가능할까?
물론 전문적인 지식을 가진 데이타 과학자라면 이런 모델을 직접 설계하고 구현하고 테스트 하는게 맞겠지만, 이런 모델들은 이미 다양한 모델이 만들어져서 공개 되어 있다.
그중에서 CNN 모델은 매년 이미지넷 (http://www.image-net.org/) 이라는데서 추최하는 ILSVRC (Large Scale Visual Recognition Competition) 이라는 대회에서, 주최측이 제시하는 그림을 누가 잘 인식하는지를 겨루는 대회이다.
<그림. 이미지넷 대회에 사용되는 이미지들 일부>
이 대회에서는 천만장의 이미지를 학습하여, 15만장의 이미지를 인식하는 정답률을 겨루게 된다. 매년 알고리즘이 향상되는데, 딥러닝이 주목 받은 계기가된 AlexNet은 12년도 우승으로, 8개의 계층으로 16.4%의 에러율을 내었고, 14년에는 19개 계층을 가진 VGG 알고리즘이 7.3%의 오차율을 기록하였고, 14년에는 구글넷이 22개의 레이어로 6.7%의 오차율을 기록하였다. 그리고 최근에는 마이크로소프트의 152개의 레이어로 ResNet이 3.57%의 오차율을 기록하였다. (참고로 인간의 평균 오류율은 5% 내외이다.)
현재는 ResNet을 가장 많이 참고해서 사용하고 있고, 쉽게 사용하려면 VGG 모델을 사용하고 있다.
결론
머신러닝과 딥러닝에 대해서 공부를 하면서 이게 더이상 수학자나 과학자만의 영역이 아니라 개발자도 들어갈 수 있는 영역이라는 것을 알 수 있었고, 많은 딥러닝과 머신러닝 강의가 복잡한 수학 공식으로 설명이 되지만, 이건 아무래도 설명하는 사람이 수학쪽에 배경을 두고 있기 때문 일것이고, 요즘은 텐서플로우 프레임웍을 사용하면 복잡한 수학적인 지식이 없이 기본적인 머신러닝에 대한 이해만을 가지고도 머신러닝 알고리즘을 개발 및 서비스에 적용이 가능한 시대가 되었다고 본다.
그림 출처 및 참고 문서
김성훈 교수님의 모두를 위한 딥러닝 https://hunkim.github.io/ml/
A Beginner’s guide to understanding convolutional network https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner’s-Guide-To-Understanding-Convolutional-Neural-Networks/
출처: https://bcho.tistory.com/1149 [조대협의 블로그]
머신러닝알고리즘의이해 – 한양대학교
주제분류 공학 >컴퓨터ㆍ통신 >컴퓨터공학
강의학기 2021년 2학기
조회수 5,030
강의계획서
본 교과목에서는 머신러닝 기초 이론부터 다양한 알고리즘을 학습한다. 그리고 복잡한 프로그래밍은 최소화하고 넘파이, 판다스, 시본, 케라스, 사이킷런 등 파이썬 라이브러리를 활용하여 코랩에서 분류와 회귀에 대한 실습 교육을 진행하여 머신러닝 학습에 대한 이해를 높인다.
머신 러닝의 모델 평가와 모델 선택, 알고리즘 선택 – 1장. 기초
이 글은 파이썬 머신 러닝의 저자 세바스찬 라쉬카(Setabstian Raschka)가 쓴 ‘Model evaluation, model selection, and algorithm selection in machine learning Part I – The basics‘를 원저자의 동의하에 번역한 것입니다. 이 시리즈 글의 전체 번역은 Model evaluation, selection and algorithm selection에 있습니다.
소개
머신 러닝machine learning은 소비자나 고객으로서 또 연구자나 기술자 입장에서도 우리 생활의 중심이 되었습니다. 예측 모델을 연구나 비즈니스에 적용할 때 공통으로 원하는 한가지는 바로 “좋은” 예측입니다. 훈련 데이터에 모델을 학습시키는 것도 중요하지만 이 모델이 이전에 본 적이 없는 데이터에도 잘 일반화 될지 어떻게 알 수 있을까요? 입력한 훈련 데이터를 단순히 기억하는 것이 아니라 미래의 데이터, 즉 한 번도 본 적이 없는 데이터에 대해 좋은 예측을 만들 것이라고 어떻게 알 수 있을까요? 어떻게 한번에 좋은 모델을 선택할 수 있을까요? 혹시 문제에 더 잘 맞는 다른 머신 러닝 알고리즘이 있는 건 아닐까요?
모델 평가가 머신 러닝 파이프라인pipeline의 종착지는 아닙니다. 어떤 데이터를 다루던지 사전에 계획을 세우고 목적에 맞는 방법을 사용해야 합니다. 이 글에서는 이런 방법들 중 하나를 선택해서, 좀 더 큰 그림의 전형적인 머신 러닝 워크플로우workflow에 적용하는 방법을 살펴 보겠습니다.
성능 추정: 일반화 성능 vs 모델 선택
간단한 절의 응답으로 시작해 보겠습니다.
Q: “어떻게 머신 러닝 모델의 성능을 추정하나요?”
A: “첫째 모델을 학습시키기 위해 알고리즘에 훈련 데이터를 주입합니다. 둘째 테스트 세트의 레이블을 예측합니다. 셋째 테스트 세트에서 잘못 예측한 수를 카운트해서 모델의 예측 정확도를 계산합니다.”
그리 간단하지 않군요. 목적에 따라서 모델의 성능을 추정하는 일은 그리 쉽지 않습니다. 앞의 질문을 다른 각도로 봐야할지 모릅니다. “왜 성능 추정이 중요한가요?” 이상적으로는 추정된 모델의 성능이 새로운 데이터에 모델이 얼마나 잘 작동하는지를 말해 줍니다. 미래의 데이터에 대해 예측하는 것이 종종 새로운 알고리즘의 개발이나 머신 러닝 애플리케이션에서 우리가 풀려고 하는 주된 문제입니다. 전형적으로 머신 러닝은 많은 실험을 해야 합니다. 예를 들면 알고리즘 내부 설정인 하이퍼파라미터hyperparameter를 튜닝하는 일입니다. 훈련 데이터셋에 대해 다른 하이퍼파라미터 설정으로 알고리즘을 학습시키면 다른 모델이 만들어집니다. 이 중에서 가장 잘 작동하는 모델을 선택하고 싶기 때문에 각각의 성능을 추정하여 순위를 매기기는 방법이 필요합니다. 알고리즘을 세세하게 튜닝하는 것에서 더 나아가 주어진 환경에서 최선의 솔루션을 찾기 위해 하나의 알고리즘만 테스트하지 않습니다. 예측 성능과 연산 성능 측면에서 종종 다른 알고리즘들을 서로 비교할 때가 많습니다.
왜 우리가 모델의 예측 성능을 평가해야 하는지 요약해 보겠습니다.
모델이 미래의 (처음 본) 데이터에 대한 예측 성능인 일반화 정확도generalization accuracy를 추정하고 싶습니다. 학습 알고리즘을 튜닝하고 주어진 가설 공간hypothesis space안에서 가장 성능 좋은 모델을 골라 예측 성능을 높이고 싶습니다. 문제 해결에 가장 적합한 머신 러닝 알고리즘을 찾길 원합니다. 즉 알고리즘의 가설 공간에서 최대 성능의 모델을 찾는 것은 물론 최대 성능을 내는 알고리즘을 선택하기 위해 여러 알고리즘들을 비교하고 싶습니다.
위에 나열한 세 개의 작업은 모두 공통으로 모델의 성능을 추정해야 하지만 각기 다른 접근 방법이 필요합니다. 이 글에서 이 세 가지 작업을 위한 각기 다른 방법에 대해 다루어 보겠습니다.
당연하게 모델의 미래 성능을 가능한 정확하게 예측하고 싶습니다. 그러나 이 글에서 딱 하나를 얻어 갈 것이 있다면, 모델과 알고리즘 선택에서 편향bias이 모든 모델에 동일하게 영향을 미친다면 편향된 성능 추정이 아무런 문제가 안된다는 사실입니다. 우리가 가장 높은 성능의 모델을 선택하기 위해 여러가지 모델과 알고리즘의 랭킹을 매길때 필요한 것은 상대적인 성능입니다. 예를 들어 우리의 성능 평가가 매우 편향되어 있어서 10%정도 과소 평가되더라도 순위에는 영향을 미치지 않습니다. 정확히 말해서 세 개 모델의 예측 성능 평가가
M2: 75% > M1: 70% > M3: 65%
이라면 10% 비관적인 편향을 더하더라도 순위는 같습니다.
M2: 65% > M1: 60% > M3: 55%
하지만 가장 좋은 모델(M2)의 예측 정확도가 65%라고 보고한다면 이는 매우 잘못된 것입니다. 모델의 절대적인 성능을 추정하는 것은 아마도 머신 러닝 분야에서 가장 어려운 과제 중 하나일 것입니다.
가정과 용어
모델 평가는 진짜 복잡한 주제입니다. 핵심에서 너무 벗어나지 않기 위해 필요한 가정과 이 글에서 사용할 기술 용어를 살펴 보겠습니다.
i.i.d
우리는 샘플이 i.i.d(독립적이고 동일한 확률분포independent and identically distributed)라고 가정합니다. 즉 모든 샘플은 동일한 확률 분포로 선택되어지고 통계적으로 서로 독립적입니다. 샘플이 독립적이지 않는 경우는 일시적인 데이터나 시계열 데이터를 다룰 때 입니다.
지도 학습과 분류
이 글은 머신 러닝의 하위 분야로서 데이터셋에 타깃 값이 들어 있는 지도 학습supervised learning에 촛점을 맞출 것입니다. 여러가지 개념이 회귀regression에도 적용될 수 있지만, 범주형의 타깃 레이블을 샘플에 할당하는 분류classification 문제에 집중하겠습니다.
0-1 손실과 예측 정확도
다음으로 예측 정확도에 대해 알아 보겠습니다. 예측 정확도는 예측이 맞는 샘플 수를 전체 샘플 수 n 으로 나눈 것입니다. 또는 수식으로는 예측 정확도 ACC를 다음과 같이 정의합니다
예측 오차 ERR 은 데이터셋 S 에서 샘플 n 에 대해 0-1 손실의 기대값입니다:
0-1 손실 L(·) 은 아래와 같이 정의 됩니다
여기서 는 i 번째 샘플의 정답 클래스 레이블이며 는 i 번째 샘플에 대해 예측한 클래스 레이블입니다.
우리의 목적은 일반화 성능이 좋은 모델 h 를 학습시키는 것입니다. 그 모델은 예측 성능을 극대화하거나 반대로 잘못된 예측 가능성 C(h) 를 최소화합니다.
D 는 데이터를 구성하는 분포를 나타내고 x 는 샘플의 특성 벡터, y 는 클래스 레이블입니다.
마지막으로 우리는 대부분 이 글에서 (에러 대신) 예측 정확도를 언급하기 때문에 디렉 델타 함수Dirac Delta function를 사용하겠습니다.1
그러므로
이고
입니다.
편향
이 글에서 편향bias이란 용어를 사용할 땐 (머신 러닝 시스템에서의 편향이 아니라) 통계적인 편향을 의미합니다. 일반적인 용어로 추정량estimator 의 편향은 기대값 과 추정되어야할 진짜 사이의 차이입니다.
그래서 만약 이면 는 의 편향되지 않은 추정량입니다. 좀 더 명확하게 말하면 모델의 예측 정확도 기대값과 진짜 예측 정확도 값 사이의 차이인 예측 편향을 계산합니다. 예를 들어 훈련 세트를 사용하여 예측 정확도를 계산하면 진짜 정확도보다 과대 추정되기 때문에 모델의 정확도 값을 낙관적으로 편향된 추정을 하게 됩니다.
분산
분산variance은 추정량 와 기대값 2 의 단순한 통계적 분산입니다.
분산은 우리가 훈련 세트를 조금씩 변화시키면서 학습 과정을 반복할 때 모델의 예측의 변화량을 측정한 것입니다. 모델 구축 프로세스가 데이터의 변화에 민감할수록 분산은 더 커집니다.
마지막으로 모델, 가설, 분류기, 학습 알고리즘, 파라미터 용어를 정리하겠습니다:
목적 함수 target function : 예측 모델링에서는 전형적으로 특정 프로세스를 모델링하게 됩니다. 즉 어떤 알려지지 않은 함수를 학습 또는 근사하는 것입니다. 목적 함수 f(x) = y 는 우리가 모델링 하려고 하는 진짜 함수 f(·) 입니다.
: 예측 모델링에서는 전형적으로 특정 프로세스를 모델링하게 됩니다. 즉 어떤 알려지지 않은 함수를 학습 또는 근사하는 것입니다. 목적 함수 f(x) = y 는 우리가 모델링 하려고 하는 진짜 함수 f(·) 입니다. 가설 hypothesis : 가설은 우리가 모델링하려는 타깃 함수, 즉 진짜 함수와 비슷할거라 믿는 (혹은 희망하는) 어떤 함수입니다. 스팸 분류에서라면 스팸 이메일을 구분하는 분류 규칙이 됩니다.
: 가설은 우리가 모델링하려는 타깃 함수, 즉 진짜 함수와 비슷할거라 믿는 (혹은 희망하는) 어떤 함수입니다. 스팸 분류에서라면 스팸 이메일을 구분하는 분류 규칙이 됩니다. 모델: 머신 러닝 분야에서는 가설과 모델이 종종 혼용되어 사용됩니다. 다른 과학 분야에서는 이 둘이 다른 의미를 가지기도 합니다. 가설은 과학자에 의해 성립된 추측이고 모델은 이 가설을 테스트하기 위한 추측의 구현체입니다.
학습 알고리즘: 우리의 목표는 목적 함수를 찾거나 근사하는 것이고, 학습 알고리즘은 훈련 데이터셋을 사용해 목적 함수를 모델링하려는 일련의 명령 집합입니다. 학습 알고리즘은 가설 공간을 동반하며 미지의 목적 함수를 모델링하기 위해 가능한 가설들을 탐색하여 최종 가설을 만듭니다.
분류기 classifier : 분류기는 가설의 (요즘엔 종종 머신 러닝 알고리즘으로 학습된) 특별한 경우입니다. 하나의 개개의 데이터 포인트에 (범주형) 클래스 레이블을 지정하는 가설 또는 이산값 discrete value 을 출력하는 함수입니다. 이메일 분류의 경우 스팸 또는 스팸이 아닌 것으로 이메일을 분류하기 위한 하나의 가설이 분류기가 될 수 있습니다. 그러나 가설이 분류기와 동의로 사용되어서는 안됩니다. 다른 애플리케이션의 경우엔 가설이 학생의 학습시간과 교육 이력을 (연속형이므로 회귀에 적합한) 앞으로 받을 SAT 점수와 매핑하는 하나의 함수일 수 있습니다.
: 분류기는 가설의 (요즘엔 종종 머신 러닝 알고리즘으로 학습된) 특별한 경우입니다. 하나의 개개의 데이터 포인트에 (범주형) 클래스 레이블을 지정하는 가설 또는 이산값 을 출력하는 함수입니다. 이메일 분류의 경우 스팸 또는 스팸이 아닌 것으로 이메일을 분류하기 위한 하나의 가설이 분류기가 될 수 있습니다. 그러나 가설이 분류기와 동의로 사용되어서는 안됩니다. 다른 애플리케이션의 경우엔 가설이 학생의 학습시간과 교육 이력을 (연속형이므로 회귀에 적합한) 앞으로 받을 SAT 점수와 매핑하는 하나의 함수일 수 있습니다. 하이퍼파라미터: 하이퍼파라미터는 머신 러닝 알고리즘의 튜닝 파라미터입니다. 예를 들면, 회귀 분석의 평균 제곱 오차mean squared error 비용 함수cost function에서 L2 페널티penalty의 규제regularization 강도나 결정 트리의 최대 깊이 설정 값입니다. 반대로 모델 파라미터는 학습 알고리즘이 훈련 데이터에서 학습하는 파라미터입니다. 즉 모델 자체가 가지고 있는 파라미터입니다. 예를 들어 선형 회귀의 가중치 계수coefficient(또는 기울기)와 편향3(또는 y 축의 절편)이 모델 파라미터입니다.
재치환 검증과 홀드아웃 방법
홀드아웃holdout 방법은 아주 단순한 모델 평가 방법입니다. 레이블된 데이터셋을 훈련 세트와 테스트 세트 두 부분으로 나눕니다. 그런 다음 훈련 데이터에서 모델을 학습시키고 테스트 세트의 레이블을 예측합니다. 정확한 예측의 비율이 예측 정확도에 대한 추정치가 됩니다. 물론 예측하는 동안 테스트 레이블은 감추어져 있습니다. 우리는 같은 훈련 데이터셋으로 모델을 훈련하고 평가하고 싶지 않습니다(이를 재치환 평가resubstitution evaluation라고 부릅니다). 왜냐하면 과대적합overfitting으로 인해 편향이 매우 감소하기 때문입니다. 다른 말로하면 모델이 단순히 훈련 데이터를 모두 외워버린게 아닌지 또는 새로 처음 본 데이터에 잘 일반화 되었는지를 말할 수 없습니다.(다시말해 훈련 정확도와 테스트 정확도의 차이인 편향을 낙관적으로 추정하게 됩니다)
전형적으로 데이터셋을 훈련 세트와 테스트 세트로 나누는 것은 간단한 랜덤 서브샘플링random subsampling입니다. 모든 데이터는 동일한 확률 분포(각 클래스에 대해)로 부터 추출된다고 가정합니다. 이 샘플의 2/3 정도를 훈련 세트로 하고 1/3을 테스트 세트로 합니다. 그런데 여기에 두 가지 문제가 있습니다.
계층 샘플링
우리가 가진 데이터셋은 어떤 확률 분포에서 추출한 랜덤 샘플이라는 것을 기억하세요. 즉 이 샘플이 진짜 분포를 어느정도 대표한다고 가정합니다. 이 데이터셋을 중복없이 다시 샘플링4하면 샘플의 통계(평균, 비율, 분산)가 변경됩니다. 중복없는 서브샘플링subsampling이 통계에 미치는 정도는 샘플의 사이즈에 반비례합니다. Iris 데이터셋을 이용해 예를 들어 보겠습니다. 랜덤하게 2/3 은 훈련 데이터로 1/3 은 테스트 데이터로 나눕니다.
(소스 코드는 여기에서 확인할 수 있습니다)
데이터셋을 훈련 세트와 테스트 세트로 랜덤하게 나눌 때 통계적 독립성statistical independence의 가정을 위반하고 있습니다. Iris 데이터셋은 50개의 Setosa, 50개의 Versicolor, 50개의 Virginica 품종으로 구성되어 있습니다. 즉 꽃의 품종이 균일하게 분포되어 있습니다.
33.3% Setosa
33.3% Versicolor
33.3% Virginica
랜덤 함수가 붓꽃의 2/3을 (100개) 훈련 세트로 1/3을 (50개) 테스트 세트로 나눌 때 아래와 같은 분포를 만들었습니다.
훈련 세트 → 38 × Setosa, 28 × Versicolor, 34 × Virginica
테스트 세트 → 12 × Setosa, 22 × Versicolor, 16 × Virginica
Iris 데이터셋이 진짜 분포를 대변한다고 가정하면 (예를 들어 자연에서 이 세 품종이 균일하게 분포되어 있다고 가정하면), 우리는 불균형한, 즉 균일하지 않은 클래스 분포를 가진 데이터를 만든 셈입니다. 학습 알고리즘이 모델을 학습시키기 위해 사용할 클래스 비율은 “38% / 28% / 34%” 입니다. 그런 다음 모델을 평가할 때에 사용할 데이터셋은 거꾸로 불균형한 “24% / 44% / 32%” 의 클래스 비율을 가집니다. 학습 알고리즘이 이런 불균형에 완전히 무감하지 않는한 바람직한 상황이 아닙니다. 데이터셋의 클래스 불균형이 커지면 문제는 더 심각해 집니다. 최악의 경우 테스트 세트에는 소수 클래스의 샘플이 하나도 들어 있지 않을 수도 있습니다. 그러므로 데이터셋을 나눌때 계층적stratified 방식이 일반적인 관례입니다. 계층 샘플링stratification은 각 클래스가 훈련 세트와 테스트 세트에 정확하게 분포되도록 데이터셋을 랜덤하게 나눕니다.
아주 크고 균형있는 데이터셋에서 비계층적non-stratified 방식을 사용해 랜덤 서브샘플링random subsampling하는 것은 큰 문제되지 않습니다. 그러나 개인적으로 계층 샘플링은 머신 러닝 애플리케이션에 일반적으로 도움이 됩니다. 더군다나 계층 샘플링은 매우 쉽게 구현할 수 있습니다. Ron Kohavi는 계층 샘플링이 이 글의 뒷 부분에 설명할 k-겹 교차 검증k-fold cross validation에서 추정치의 분산과 편향에 긍정적인 효과를 준다는 것을 입증하였습니다.(Kohavi 1995)
홀드아웃
홀드아웃 검증 방법의 장단점으로 들어가기 전에 전체 과정을 그림으로 요약해 보겠습니다.
① 첫번째 단계에서, 가용 데이터를 훈련 세트와 테스트 세트 두 부분으로 랜덤하게 나눕니다. 테스트 데이터를 따로 두는 것은 데이터나 리소스 부족같은 현실적인 문제와 더 많은 데이터를 모을 수 없을 때를 위한 해결책입니다. 테스트 세트는 학습 알고리즘을 위한 새로운, 본 적이 없는 데이터의 역할을 합니다. 일반화 정확도를 추정할 때 어떤 편향도 만들지 않도록 테스트 세트는 한 번만 사용해야 합니다. 보통 2/3을 훈련 세트로, 1/3을 테스트 세트로 만듭니다. 다른 경우엔 훈련/테스트 비율을 60/40, 70/30, 80/20 또는 90/10으로 할 때도 있습니다.
② 테스트 샘플을 떼어 놓은 후에 주어진 문제에 적합한 학습 알고리즘을 고릅니다. 위 그림에 나타난 Hyperparameter Values 가 무엇일까요? 간단하게 소개하면 하이퍼파라미터는 학습 알고리즘의 파라미터 또는 메타 파라미터입니다. 하이퍼파라미터는 수동으로 지정해야 합니다. 학습 알고리즘은 모델 파라미터와는 달리 훈련 데이터로부터 하이퍼파라미터를 학습할 수 없습니다.
하이퍼파라미터는 모델이 학습하는 동안 학습되지 않기 때문에 이들을 별도로 최적화하기 위한 추가적인 과정 또는 외부 루프5가 필요합니다. 홀드아웃 방식은 이 작업에는 적합하지 않습니다. 여기서는 어떤 고정된 하이퍼파라미터를 사용해 진행합니다. 직관에 따라 정할 수도 있고 또는 머신 러닝 라이브러리를 사용한다면 알고리즘에 내장된 기본값을 사용할 수도 있습니다.
③ 학습 알고리즘이 이전 단계에서 모델을 학습시켰습니다. 다음 질문은 “이 모델이 얼마나 좋은가?”입니다. 이제 테스트셋이 사용될 차례입니다. 알고리즘은 이전에 테스트 세트를 본 적이 없으므로 새로운 처음 본 데이터에 대해 편향되지 않는 성능 추정을 합니다. 그러므로 해야 할 일은 모델을 사용해 테스트 세트의 클래스 레이블을 예측하는 것입니다. 그런 다음 일반화 성능을 추정하기 위해 예측된 클래스 레이블과 진짜 레이블을 비교를 합니다.
④ 결국 우리는 새로운 데이터에 대해 모델이 얼마나 잘 작동하는지 추정했습니다. 그러므로 더 이상 테스트 데이터를 따로 떼어 놓을 필요가 없습니다.
우리는 샘플이 독립적이고 동일한 분포를 가진다고 가정했으므로 가용한 모든 데이터를 주입한다고 해서 모델의 성능이 더 나빠질 이유가 없습니다. 통상적으로 모델의 성능이 한계치에 이르기 전에는 알고리즘에 유용한 데이터를 더 제공할수록 일반화 성능은 좋아집니다.
비관적인 편향
훈련 세트와 테스트 세트를 나누는 것에 대해 이야기할 때 언급한 두가지 문제를 기억하나요? 첫번째 문제는 독립성의 위반과 서브샘플링으로 인한 클래스 비율의 변화입니다. 두번째 문제는 홀드아웃 그림을 살펴 보면서 다루었습니다. 네번째 단계에서 모델의 성능 한계에 대해 이야기했고 추가 데이터가 유용할지 안할지 이야기했습니다. 성능 한계 이슈를 따라가 보면, 우리 모델이 성능 한계에 도달하지 않았을 경우 성능 추정은 비관적으로 편향되어 있을 수 있습니다. 알고리즘이 더 많은 데이터로 나은 모델을 학습시킬 수 있다고 가정하면, 일반화 성능을 재기위해 떼어 놓았던 (예를 들면 테스트 데이터) 가용한 데이터를 가로막고 있던 셈입니다. 네번째 단계에서 완전한 데이터셋으로 모델을 학습시킵니다. 그러나 테스트 데이터셋을 사용했기 때문에 일반화 성능을 추정할 수 없습니다. 실제 애플리케이션에서는 피할 수 없는 딜레마로 일반화 성능의 추정은 비관적으로 편향되어 있다는 것을 인지해야 합니다.
신뢰구간
위에서 사용한 홀드아웃 방법을 사용하면 모델의 일반화 정확도에 대한 점추정point estimate를 계산한 것입니다. 어떤 애플리케이션에서는 이 추정치 근방의 신뢰 구간confidence interval이 더 유용하고 필요할 뿐만 아니라 특정한 훈련/테스트 세트 묶음에 점추정이 민감할 수도 있습니다(즉 분산이 큰 경우).
실전에서 자주 사용되는 (하지만 저는 추천하지 않습니다) 다른 간단한 방법은 정규 분포Normal Distribution를 가정한 친숙한 공식을 사용하여 중심 극한 정리central limit theorem로 하나의 훈련, 테스트 분할로 만든 평균의 신뢰 구간을 계산하는 것입니다.
확률 이론에서 중심 극한 정리(CLT)란 주어진 조건하에서 잘 정의된 기대값, 분산으로 독립 확률 변수를 충분히 많이 반복하여 계산한 산술 평균은 실제 데이터 분포에 상관없이 정규 분포에 가깝다는 것을 말합니다. [https://en.wikipedia.org/wiki/Central_limit_theorem]
이 단순한 방식을 정규 근사 구간normal approximation interval이라고 부릅니다. 어떻게 작동하는 것일까요? 예측 정확도는 다음과 같이 계산합니다.
여기서 L(·) 은 0-1 손실 함수이고 n 은 테스트 세트에 있는 샘플의 수, 는 예측된 클래스 레이블, y 는 i 번째 샘플의 진짜 클래스 레이블입니다. 그래서 각 예측은 베르누이 시행Bernoulli trial으로 볼 수 있으므로 올바른 예측 수 X 는 이항 분포binomial distribution X ~ B(n, p) 가 되고 n 은 샘플, k 는 시도 횟수이며 n ∈ N, p ∈ [0, 1] 입니다.6
k = 0, 1, 2, …, n 일 때
(p 는 성공 확률이고 (1 – p) 는 실패 확률-잘 못된 예측-입니다)
이제 예상되는 성공 횟수는 μ = np 로 계산되므로 예측기가 50% 성공 확률을 가진다면 40개의 예측에서 20개를 맞출 것입니다. 성공 횟수에 대한 추정은 σ2 = np(1 – p) = 10 분산을 가지고, 표준 편차는
입니다. 그런데 우리는 정확한 값이 아니라 성공의 평균 횟수에 관심이 있으므로 정확도 추정의 분산을 다음과 같이 계산합니다.7
이에 대응하는 표준 편차는
정규 분포로 근사하면 신뢰 구간을 아래와 같이 쓸 수 있습니다.
여기에서 α 는 에러의 분위quantile를 나타내고 z 는 표준 정규 분포의 분위를 나타냅니다. 전형적인 신뢰 구간인 95%(alpha=5%)에서 z=1.96 입니다.8
그러나 실제적으로 훈련-테스트 세트를 여러번 분할해서 만든 평균 추정치(각 반복 결과의 평균)로 신뢰 구간을 계산하는 것을 추천합니다. 여기에서 기억해야 할 것은 테스트 세트에 샘플 수가 적으면 분산이 커지고(n 이 분수의 분모이므로) 따라서 신뢰 구간의 폭이 넓어진다는 것입니다.
다음에는
전체 글이 꽤 장문이므로 여러 파트로 나누었습니다. 다음에는 아래 내용에 대해 이야기 하겠습니다.
모델링 불확실성을 위한 반복 홀드아웃 검증과 부트스트랩 방법 (2장)
하이퍼파라미터 튜닝을 위한 홀드아웃 방법 – 데이터셋의 훈련, 테스트, 검증 세트 분할 (3장).
K-겹 교차 검증: 모델 선택의 유명한 방법 (3장).
Nested cross-validation, probably the most common technique for model evaluation with hyperparameter tuning or algorithm selection. (Part IV).
참고문헌
Kohavi, R., 1995. A study of cross-validation and bootstrap for accuracy estimation and model selection. In Ijcai (Vol. 14, No. 2, pp. 1137-1145). [Citation source] [PDF]
Efron, B. and Tibshirani, R.J., 1994. An introduction to the bootstrap. CRC press. [Citation source] [PDF]
(역주)
디렉 델타 함수는 일종의 이산 함수로 크로네커 델타 함수Kronecker Delta Function와 동일한 의미로 많이 사용됩니다. 즉 손실 함수 L(·) 이 0일 때 델타 함수 값이 1이 되고 그 외에 델타 함수 값은 0입니다. 기대값 는 추정량의 평균을 의미합니다. 여기서 말하는 편향은 머신 러닝에서 흔히 말하는 선형 모델에 추가되는 상수항을 의미합니다. 중복없이 샘플링한다는 것은 샘플링 과정에서 추출한 샘플은 다시 원본 데이터셋에 돌려놓지 않는다는 뜻으로 서브샘플링으로 추출한 데이터에는 동일한 샘플이 중복되어 들어가 있지 않습니다. 하이퍼파라미터를 최적화하려면 코드의 바깥쪽 루프에서 하이퍼파라미터 셋팅을 바꾸어 가며 k-폴드 크로스밸리데이션을 반복해서 수행해야 합니다. 파이썬 머신 러닝 라이브러리인 사이킷런scikit-learn에서는 이를 위해 GridSearchCV 와 같은 클래스를 제공합니다. 이항분포 공식은 이산적인 이벤트가 여러번 일어났을 때 성공, 실패의 확률 와 성공, 실패가 나타난 조합의 수 를 곱합니다. CLT를 적용하려고 앞의 표준편차 공식을 n 으로 나누어 평균을 내고 제곱을 하여 분산을 계산합니다. CLT에서 정규분포의 양끝 꼬리의 에러 분위를 고려해야 하므로 의 표준점수 z 는 1.96입니다.
머신러닝(Machine Learning) 이란? -정의, 유형, 적용 사례 TIL 정리
FIFO
2019/11/13 wed.
머신러닝(Machine learning) 이란?
기계 학습또는 머신 러닝은 인공 지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 가령, 기계 학습을 통해서 수신한 이메일이 스팸인지 아닌지를 구분할 수 있도록 훈련할 수 있다.
기계 학습의 핵심은 표현(representation)과 일반화(generalization)에 있다. 표현이란 데이터의 평가이며, 일반화란 아직 알 수 없는 데이터에 대한 처리이다. 이는 전산 학습 이론 분야이기도 하다.
1959년, 아서 사무엘은 기계 학습을 “컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 실행하는 능력에 대한 연구 분야”라고 정의하였다. [출처-위키피디아]
🔥<<간단 정리>>🔥
머신 러닝 기술은 명시적으로 프로그래밍하는 것이 아니라 데이터로부터의 학습을 통해 작업을 수행하는 방법을 컴퓨터에 가르치는 것이다.
머신러닝 소개(SAP 기준)
머신 러닝은 대량의 빅데이터로부터 ‘학습’하기 위한 정교한 알고리즘을 활용한다. 알고리즘이 액세스할 수 있는 데이터가 많을수록 학습량도 많아진다. 실생활에 사용되는 머신 러닝의 예는 어디에나 있다. Amazon의 맞춤식 제품 추천, Facebook의 안면 인식 또는 Google Maps의 빠른 경로 추천이 바로 그러한 예다.
머신러닝의 유형
신경망
신경망(즉, 인공 신경망)은 사람의 뇌에서 뉴런이 작동하는 방식과 유사한 머신 러닝 유형이다. 병렬로 작동하는 여러 계층의 노드(또는 ‘뉴런’)를 사용하여 일을 배우고 패턴을 인식하며 사람과 유사한 방식으로 의사 결정을 내리는 컴퓨터 프로그램이다.
딥러닝
딥 러닝은 여러 층의 뉴런과 방대한 양의 데이터를 포함하는 ‘심층적인’ 신경망 이다. 이 고급 유형의 머신 러닝은 복잡하고 비선형적인 문제를 해결할 수 있으며 NLP(자연어 처리), 개인 디지털 도우미 및 자율 운전 자동차 등 혁신적인 AI를 담당 한다.
지도 vs 자율학습 *아래에서 더 자세히 설명
지도 학습 알고리즘은 올바른 정답이 포함된 데이터를 사용하여 학습이 수행된다. 데이터를 정답에 매핑하는 모델을 개발한 후 향후 처리를 위해 이러한 모델을 활용한다. 자율 학습 알고리즘은 올바른 정답이 주어지지 않은 상태로 데이터를 학습한다. 대량의 다양한 데이터 세트를 활용하여 자체적으로 개선된다.
지도vs자율학습(널리 사용되고 있는 기법)에 대한 인사이트
지도학습
실제 출력값과 정확한 출력값을 서로 비교하여 오류를 검출하면서 알고리즘 학습 이 이루어진다.
지난 데이터를 기반으로 앞으로 있을 이벤트를 예측 하는 데 지도 학습이 가장 보편적으로 사용된다. 예를 들어, 신용 카드 거래의 사기성이나 보험 가입자의 보험금 청구 가능성 여부 등을 예측하는 데 효과적이다.
비지도 학습
이 시스템에는 “정답”이 없기 때문 에 알고리즘을 통해 현재 무엇이 출력되고 있는지 알 수 있어야 한다.
따라서 데이터를 탐색하여 내부 구조를 파악하는 것이 목적 이다. 비지도 학습은 트랜잭션 데이터에서 특히 효과적이다. 예를 들어 유사한 속성의 고객 세그먼트를 식별한 후 그 유사성을 근거로 마케팅 캠페인에서 고객 세그먼트를 관리 하거나 고객 세그먼트의 구분 기준이 되는 주요 속성 을 찾을 수도 있다.
강화 학습
로봇, 게임 및 내비게이션에 많이 이용된다. 강화 학습 알고리즘은 시행착오를 거쳐 보상을 극대화할 수 있는 행동을 찾아낸다. 이러한 유형의 학습은 기본적으로 에이전트(학습자 또는 의사결정권자), 환경(에이전트가 상호작용하는 모든 대상), 동작(에이전트 활동)이라는 세 가지 요소로 구성된다. 이 알고리즘의 목적은 에이전트가 일정한 시간 내에 예상되는 보상을 극대화할 수 있는 동작을 선택하도록 하는 데 있다. 따라서 강화 학습의 목표는 최선의 정책을 학습하는 것이라고 할 수 있다.
주요 부문에서의 머신러닝 사용 사례
제조
제조업체는 공 장 센서 및 사물인터넷(IoT)에서 엄청난 양의 데이터를 수집하며 이는 머신 러닝에 이상적 이다. 컴퓨터 시각 및 이상 감지 알고리즘은 품질 관리에 활용되며 사전 예방 유지보수 및 수요 예측부터 새로운 서비스 제공까지 모든 것에 머신 러닝 알고리즘이 활용된다.
재무
대량의 데이터와 이력 레코드가 제공되는 금융은 머신 러닝에 가장 적합한 산업 이다. 주식 거래, 대출 승인, 사기 감지, 위험 평가 및 보험 인수에 알고리즘이 활용된다. 그리고 고객에 대한 ‘일상적인 자문’과 사용자 목표에 따른 포트폴리오 조정에도 활용된다.
의료
머신 러닝 알고리즘은 투자한 시간과 관계없이 연구 팀이나 의사들보다 더 많은 데이터를 처리하고 더 많은 패턴을 발견할 수 있다. IoT 기술을 이용해 환자의 건강 상태를 실시간으로 파악할 수 있는 웨어러블 장치와 센서 덕분에 의료 산업은 머신러닝이 빠르게 성장하는 주 무대 가 되고 있다.
마케팅 및 영업
구매자가 좋아할 만한 상품을 추천하는 웹사이트도 머신러닝을 활용 할 수 있다. 과거 구매자의 검색 및 구매 기록을 분석하여 상품 추천 및 홍보에 사용할 수 있다. 이렇게 데이터를 포착하여 활용해서 쇼핑 경험을 개별화(또는 마케팅 캠페인 실행)하는 추세가 산업의 미래로 다가오고 있다.
정부
공공의 안전을 담당하는 정부 부처와 공공 서비스를 제공하는 기관에서는 다양한 데이터를 가지고 있기 때문에 머신러닝으로 인사이트를 획득할 수 있는 기회가 특히 많다 . 예를 들어, 센서 데이터를 분석하여 효율성을 높이고 비용을 절감할 수 있는 방법을 찾아낼 수도 있고 머신러닝을 이용하여 사기를 감지하고 개인정보 도용을 최소화할 수도 있다.
운송
수익성을 높이기 위해 이동 경로를 효율적으로 배치하고 잠재적인 문제를 예측해야 하는 운송 업계에서도 데이터를 분석하여 패턴과 트렌드를 찾아내는 기술이 핵심 기술로 대두되고 있다. 따라서 택배 업체, 대중 교통 서비스 및 기타 운송 기업은 머신러닝의 데이터 분석과 모델링 기술을 중요한 분석 솔루션으로 이용하고 있다.
<<인공지능, 머신러닝, 딥러닝의 관계도>>
데이터 마이닝, 머신러닝, 딥러닝의 차이점?
이 세 가지 방법은 모두 인사이트, 패턴 및 관계를 도출하여 의사 결정에 이용한다는 동일한 목적을 가지고 있지만 접근 방식과 해낼 수 있는 역할에 차이가 있다.
데이터 마이닝 (Data Mining)
데이터 마이닝은 데이터로부터 인사이트를 도출해내기 위한 많은 방법들의 상위 개념 으로 볼 수 있다. 여기에는 전통적인 의미의 통계 기법과 머신러닝도 포함 된다. 데이터 마이닝은 다양한 영역의 기법을 적용하여 이전에 데이터에서 발견하지 못한 패턴을 찾아낼 수 있는데, 여기에는 통계적 알고리즘, 머신러닝, 텍스트 분석, 시계열 분석 등 기타 다양한 영역의 분석 기법이 포함된다.
머신러닝(Machine Learning)
머신러닝의 주요 차이점은 데이터 구조를 파악할 목적으로 데이터에 이론적 분포를 적용 한다는 점이다. 머신러닝은 데이터의 구조 유무를 탐색할 수 있는 컴퓨터의 능력을 기반으로 개발되었다. 머신러닝 모델에 대한 테스트는 새로운 데이터에 대한 검증 오차를 통해 이루어진다. 머신러닝은 반복적인 접근 방식으로 데이터를 통해 학습하기 때문에 손쉽게 자동화 할 수 있다. 이후 데이터를 통해 패스를 반복하며 강력한 패턴을 발견하게 된다.
딥러닝(Deep Learning)
딥러닝은 향상된 컴퓨팅 파워와 특수한 유형의 신경망을 서로 결합하여 대용량의 데이터에서 복잡한 패턴을 학습한다. 오늘날 딥러닝은 기법은 이미지에서 개체를, 사운드에서 단어를 식별하는 최첨단 기술로 인정받고 있다. 그 밖에 연구기관들도 자동 언어 번역, 의학적 진단, 그 밖에 중요한 사회 및 비즈니스 문제 등 복잡한 과제에 이러한 성공적인 패턴 인식 기술을 적용하려는 모습도 보이고 있다.
“ 일반적으로 사람이 1주일에 생성할 수 있는 양질의 모델은 1~2개에 불과하지만 머신러닝은 같은 기간에 수천 개의 모델을 생성할 수 있습니다.”
Thomas H. Davenport, 분석 기술의 권위자
The Wall Street Journal 발췌
머신러닝 적용 사례
구글의 마젠타 프로젝트
2017년, 미국 구글 본사에서는 인간의 예술을 이해하고 이를 재창작하는 ‘마젠타 프로젝트’를 발표했다. 예술 창작 학습 AI 알고리즘을 설계하는 ‘마젠타 프로젝트’ 는 1천여 가지 악기와 30여만 가지의 음이 담긴 데이터베이스를 구축하고 이를 AI에 학습시켜 새로운 소리, 음악을 만들어냈다.
머신러닝이 인간의 고유 영역이었던 ‘예술분야’까지 섭렵할 미래가 곧 다가올지 모르는 현실을 여실히 보여준 사례 이다.
얼굴합성 영상기술
최근에는 머신러닝의 한 분야이면서도 더 앞서 나간 ‘딥러닝’을 활용한 얼굴합성 영상기술 이 등장했다. 지난 7월, 대화형 인공지능 스타트업 머니브레인은 ‘딥러닝 얼굴합성 기술’로 새롭게 창조한 문재인 대통령 영상을 선보였다.
얼굴 특징 추출과 피부합성, 감정표현 등 첨단기술을 적용하고 영상과 음성을 결합해 훈련 과정을 거쳐 실제 사람을 닮은 AI 영상을 제작한 것이다.
인공지능 앵커 는 기자들이 뉴스 기사를 입력하면 인공지능이 앵커의 목소리와 제스처로 똑같이 말할 수 있는 기술이다. 인공지능 앵커를 통해 TV 뉴스의 제작 효율을 높이고 비용을 절감 하며, 긴급 보도 시 관련 영상을 빠르게 만들 수 있다는 장점까지 있다. 업계 관계자는 얼굴합성 기술을 이용해 향 후 인공지능 뉴스뿐 아니라 엔터테인먼트, 커머스 분야까지 확대 제공할 예정 이라고 전하기도 했다.
사람의 음성을 알아서 녹취하다
머신러닝이 이룩한 또 다른 성공 사례로는 약 95% 정확도를 자랑하는 녹취타이핑 서비스 가 있다. 한국의 액션파워라는 기업은 지난 4월 음성을 그대로 받아써주는 ‘다글로’를 출시 했다. 자체 개발 기술로 정확도가 최대 95%에 이르는 다글로는 가장 빠르고 쉽게 메시지를 전달할 수 있는 방법인 ‘음성’을 글자로 입력해주는 서비스 다.
60~70%의 정확도를 가진 구글 음성인식 텍스트 변환 서비스보다 훌륭한 성과 를 보였다. 기자부터 애널리스트, 속기사, 일반 회사원들까지 인터뷰나 미팅에서 나온 녹음 자료를 손쉽게 정리할 수 있게 된 것이다.
머신러닝으로 구현하는 배터리 효율
얼마 전, 아이폰11 시리즈에는 iOS 13이 적용되었다. 여기에는 머신러닝을 기반으로 한 배터리 최적화 기능이 탑재되어 있는데 이는 배터리 상태를 파악하고 배터리의 노화를 늦추는 기능 이다. 리튬이온배터리는 충·방전을 반복하면 수명이 짧아지며, 100% 충전은 배터리 노화를 앞당기는 것으로 알려져 있다.
평소 배터리 잔량을 40-80% 수준으로 유지하면 더 오래 사용할 수 있다. 이에 iOS 13에 탑재된 ‘최적화된 배터리 충전’ 옵션은 머신러닝을 통해 사용자의 사용 습관을 학습하고 충전 용량을 결정한다. 전에는 충전 케이블 연결 시, 무조건 100% 충전이 되었던 반면에 옵션이 활성화되면 일단 80%까지 충전이 되고 나머지는 사용자가 아이폰을 사용할 때 충전이 되는 방식이다.
🔗 http://media.fastcampus.co.kr/knowledge/data-science/ai2019/ 기사 발췌
머신러닝의 중요성
데이터 분야가 성장하면서 모든 산업군에서 머신러닝의 활용도와 중요도는 높아지고 있다. 기업들은 주요 의사 결정을 데이터 기반으로 하기 시작했고, 이에 데이터를 다루고 처리하는 사람은 점점 사회에서 중요한 입지를 꿰차고 있다. 누군가는 진작에 흐름을 파악하고, 데이터 전문가의 길로 들어섰다.
테리 세즈노스키 USCD 명예교수는 “데이터는 새로운 석유”라며 “하지만 데이터라는 석유를 정제할 수 있는 머신러닝 없이는 테라급 데이터가 있어도 무용지물”이라고 머신러닝의 중요성을 강조했다.
🔗 https://www.zdnet.co.kr/view/?no=20181129153613 기사 발췌
🔗 참고 site
https://www.sas.com/ko_kr/insights/analytics/machine-learning.html
https://1boon.kakao.com/gilbut/5a710121ed94d2000165fb01
https://www.sap.com/korea/products/leonardo/machine-learning/what-is-machine-learning.html
키워드에 대한 정보 머신 러닝 알고리즘 정리
다음은 Bing에서 머신 러닝 알고리즘 정리 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 Machine learning 1 – 2. 머신러닝이란?
- 생활코딩
- opentutorials.org
- 코딩
- 프로그래밍
- 머신러닝
- 머신러닝야학
- machine learning
- 인공지능
- ai
Machine #learning #1 #- #2. #머신러닝이란?
YouTube에서 머신 러닝 알고리즘 정리 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 Machine learning 1 – 2. 머신러닝이란? | 머신 러닝 알고리즘 정리, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.