SlideShare une entreprise Scribd logo
1  sur  85
머신 러닝 및 딥러닝 기초
2020년 1월 7일 

작성자: 정교윤
목차
• 인공지능(AI)에 대한 소개
• 데이터(Data)의 형태
• 머신러닝 기초 (Machine Learning Basics)
• 신경망과 딥러닝 (Neural Network & Deep Learning)
• 머신러닝 프레임워크 소개 및 실습
2
인공지능(AI)에 대한 소개
4
AI(Artificial Intelligence)란?
AI는 인공지능이라는 뜻 외에 머신러닝과 딥러닝을 포괄하는 용어로 사용된다.
1950년대부터 AI라는 용어가 등장했으며 오늘날의 컴퓨터와 인공지능에 대한 최초의 개념은 앨런 튜링(Alan Turing)이라는 영국 출신의 암
호해독가이자 수학자 1950년에 ‘계산 기계와 지능(Computing Machinery and Intelligence)’라는 논문을 발표하면서 알려지기 시작했
고, 해당 논문의 기술을 현실화한 튜링 머신은 존 폰 노이만 교수에게 영향을 주어 현대 컴퓨터 구조의 표준이 되었으며 그 이후 컴퓨터의 성능
이 급속히 발전하면서 1980년대 이후 데이터를 컴퓨터가 스스로 학습한다는 머신러닝(Machine Learning)이란 용어가 등장했고, 1990년
대로 접어들면서 인간의 두뇌를 본따서 만든 인공신경망(Artificial Neural Network)이 등장하였고 Hidden Layer가 2개 이상 연결되어 있
는 Deep Neural Network의 등장과 함께 딥러닝(Deep Learning)이란 용어가 등장했다.
출처: A brief history of AI, machine learning, artificial neural networks, and deep learning 출처: Nvidia Deep Learning Blog
5
Analytics와 AI
출처: Introduction to Machine Learning
Analytics:
‣ 사람이 모든 알고리즘을 작성
‣ Insight의 두 가지 종류:
- Descriptive: 과거 데이터를 묘사하며 설명
- Predictive: 과거 데이터를 기반으로 미래를 예측
AI
‣ AI 스스로 가정, 예측, 테스트, 학습, 적응함
‣ 알고리즘이 스스로 적응함
‣ 인간의 능력을 넘어선 깊이와 디테일이 존재
‣ Narrow AI: 특정 도메인에서만 가져온 데이터를
통해 구체적 결과에 맞게 최적화하는 인공지능
‣ 데이터 저변에 내재된 데이터 구조를 스스로 이해
6
Agent로부터 스스로 학습하는 AI
Agent의 의미와 AI와의 관계
Agent는 개인, 소프트웨어, 회사가 의사결정을 내리는 것 자체를 말하는데 AI 시스템은 이 Agent와 Agent를 둘러싼 Enviroment로 구성되
기 때문에 AI는 Agent를 통해 스스로 학습을 할 수 있다. 

Agent는 보통 Agent가 실행하는 머신을 의미하는 Architecture와 Agent의 Function의 구현을 의미하는 Agent Program이 결합된 용어
이다. Architecutre는 robotic car, camera 혹은 PC가 될 수 있고 Agent Function은 특정 날짜까지 Agent가 인지한 모든 것의 기록을 의
미한다. 

AI는 이 Agent로부터 학습을 해서 스스로 진화한다.
출처: Agents in Artificial Intelligence 출처: Introduction to Machine Learning
7
머신러닝과 딥러닝의 의미 및 특징
머신러닝은 명시적인 프로그래밍이 없이도 컴
퓨터가 스스로 학습하는 기법을 말하며 특징
과 예시는 아래와 같다.
‣ 사람이 데이터 파싱
‣ 사람이 모델을 만든 후 파싱된 데이터를 입력해서 모
델이 스스로 패턴을 인지하고 그 패턴으로부터 학습
함
‣ 모델이 테스트 데이터를 통해 어떤 것을 결정하거나
예측
‣ 사람이 모델의 파라메터를 조정함 (예: Weight)
‣ 다중 분류 모델 (Multi-class classification
model): Support Vector, Bayesian, Neural
Network)
신경망 (Neural Network)
‣ 인간의 뇌 안에 무작위로 연결된 뉴런의 연결을 모방
한 네트워크이며, 입력층(Input Layer)와 출력층
(Output Layer)사이에 Hidden Layer가 존재한다.
Hidden Layer를 구성하는 기본 단위가 인공 뉴런
(Neuron)이며 노드(Node)라고도 부른다.
‣ Hidden Layer (히든 레이어): input(입력)과
output(출력) 사이에 존재하는 인공 뉴런을 연결한 층
을 의미
‣ Deep Learning (딥러닝): 여러 개의 hidden layer
를 가진 neural network (신경망)
‣ GPU 지원 없이는 모델의 학습속도가 매우 느리다.
‣ 머신러닝과 달리 데이터가 많아지면 많아질 수록 학
습 결과가 더 좋아지며, 비정형 데이터로 분류되는 이
미지, 음성, 자연어처리 학습에 용이하다.
8
머신러닝과 딥러닝 관련 주요 용어 (1)
Terminology
‣ Algorithm (알고리즘): Machine이 특정 목표를 달성하기 위해 따르는 규칙의 집합을 의미하며 입력값들(Inputs)과 결과값(Output) 및 관련 모든
과정을 설계한 Recipe로도 볼 수 있음
‣ Machine Learning (머신러닝): Computer가 Data로부터 학습을 하고 스스로 예측하고 예측 성능을 개선할 수 있게 만든 방법들의 집합으로 볼
수 있고 인간이 모든 명령을 직접 다 입력하여 만든 기존의 프로그래밍 방법과는 완전 다른 새로운 방법이라고 볼 수 있음
‣ Learner or Machine Learning Algorithm (머신러닝 알고리즘) : Data로부터 Machine Learning Model을 학습시키는 데 사용되는 Program
을 말하며 다른 용어로는 “inducer”라는 용어가 있다. (예: “tree inducer)
‣ Machine Learning Model (머신러닝 모델) : 입력값들(Inputs)과 예측값들을 매핑시키는 학습된 프로그램이며 이 프로그램은 linear model 혹
은 neural network에 대한 가중치(Weights)를 가지고 있고 “model” 혹은 “predictor”로 부르기도 하며 Task에 따라 “classifier” 혹은
“regression model”로 부르기도 하며 보통 f(x)라는 형태로 표시하며 neural network의 경우 Weight와 Bias가 반영됨
‣ Black Box Model (블랙박스 모델): 내부 메커니즘이 공개되지 않은 시스템을 의미하며, 머신러닝 분야에서는 neural network 처럼 해당 모델이
가지고 있는 parameter (weights 와 biases)로는 인간이 이해할 수 없는 “black box”를 지칭할 때 사용되는 용어임
출처: Interpretable Machine Learning
9
머신러닝과 딥러닝 관련 주요 용어 (2)
Terminology
‣ Dataset: Machine이 학습하려는 데이터를 가지고 있는 테이블을 의미하며 이 테이블은 Feature 와 예측하고자 하는 Target을 포함하고
있으며 이 Dataset이 Model을 생성 및 훈련시키기 위해 사용된다면 Training Data라고 부를 수 있음
‣ Instance (인스턴스): Dataset에서 하나의 행을 의미하며 Feature에 해당하는 값들과 Target에 해당하는 결과값을 가지고 있으며, 다른 의
미로는 예측하려는 대상 자체를 의미하기도 하고 만약 웹페이지를 “고양이와 관련”, “고양이와 무관”으로 분류하려는 문제의 경우 웹페이지
가 인스턴스임
‣ Target: Machine이 예측하기 위해 학습하는 하나의 결과값 정보(열)이며, 분류(Classification) 문제의 경우에는 Target에 정답에 해당하
는 Label을 부여하며 Model의 출력값인 Y로 정의함
‣ Label : 예측 작업에 관한 답으로, 머신러닝 시스템이 도출하거나 학습 데이터에서 제공된 정답
‣ Feature : 예측 작업에 사용되는 인스턴스의 속성. ‘웹페이지에 고양이란 단어가 나온 횟수’ 등을 예로 들 수 있으며, 쉽게 말해서 예측이나
분류를 위해 사용되는 여러 개의 입력값 정보(열)을 의미하며 Model에 입력값으로 들어갈 X로 정의함
‣ Feature Column : 관련된 feature의 집합. 예를 들어 사용자가 거주할 수 있는 모든 국가의 집합. Feature column은 Google에서만 사용
되는 용어고, Yahoo/Microsoft에선 namespace라고 함
‣ Example : Instance(Feature와 Target 포함) 및 Label
‣ Machine Learning Task: Feature 와 Target을 포함한 Dataset의 조합을 의미하며 Target의 유형에 따라 해당 Task가 Classification
에 속할 것인지 Regression에 속할 것인지 Clustering에 속할 것인지 판단할 수 있음
10
머신러닝과 딥러닝 관련 주요 용어 (3)
Terminology
‣ Model : 예측 작업의 통계적 표현(statistical representation)을 의미하며 Example을 사용해 Model을 학습시킨 후, 그 Model을 사용해 예측함 / 분류
(Classfication)를 하는 Model일 경우 Classifier (분류기)로 부르기도 함
‣ Parameter: Model의 Weights(가중치)와 Bias(편향치)를 말하며 훈련이 될 때마다 이 두 개의 값들은 계속 수정됨
‣ Metric : 모델 평가 측면에서 관심이 있는 수치. 직접 최적화될 수 있고, 아닐수도 있음 (예: Accuracy(정확도))
‣ Objective : 알고리즘에서 최적화하려는 Metric
‣ Pipeline : 머신러닝 알고리즘을 둘러싼 인프라. 프론트엔드는 데이터를 수집하고, Train 데이터 저장, 모델 Train, 모델 Production으로 내보내는 것을 포
함함
‣ SOTA (State-Of-The-Art) : 어떤 모델이 동종 모델 대비 최고 성능을 기록했을 때 “This model got a state-of-the-art result from the test.” 이런 식
으로 표현할 수 있음
‣ Epoch: 한 번의 epoch는 전체 데이터 셋에 대하여 한 번 학습을 완료한 상태를 의미하며, epoch 100 이라는 말은 전체 데이터를 100번 학습 했다는 뜻
임
‣ Batch size: batch라는 것은 한 번의 학습이라는 뜻이고, batch size라는 것은 한 번에 학습할 때, 이용하는 데이터의 개수를 의미함. 가령 고양이와 강아지
인식 학습에서 batch size가 100이라면, 인공신경망에 한 번에 넣는 이미지의 개수가 100개라는 뜻임
‣ Iteration: iteration은 epoch의 전체 데이터 개수와 batch size에 의하여 결정되며, 한 번의 batch에서 100개를 학습하고, 전체 데이터가 5000개라면
전체 iteration은 5000/100 = 50이 됨
‣ Learning rate(lr) or Alpha: Iteration 별로 변화하는 양을 말하고 Hyper Parameter이며, 한 번 학습할 때 얼마만큼 학습해야 하는지에 대한 것을 의미
하며 Learning rate에 해당하는 한 번의 학습량으로 학습한 이후에는 Parameter인 Weight와 Bias가 갱신됨
11
머신러닝과 딥러닝의 차이
머신러닝에는 인간이 주도하는 작업이 존재하나 딥러닝에는 그러한 작업이 빠져있다.
인공신경망(Artificial Neural Network)에 기반한 딥러닝은 머신러닝 안의 하나의 작은 분야로 볼 수 있지만 그 영역은 점점 커지고 있다. 머
신러닝을 통해 인간이 문제를 해결할 때에는 인간이 스스로 데이터를 보고 특징(Feature)를 추출(Extraction)해서 모델을 만들고 인간이 작
성한 머신러닝 알고리즘을 통해 모델이 학습을 하는 과정이 포함이 되어있지만, 딥러닝을 통해 문제를 해결하는 경우에는 모델 안에 존재하는
Deep Neural Network (Hidden Layer가 2개 이상인 인공신경망) 스스로가 특징을 추출하고 분류해서 결과를 보여주기 때문에 인간이 개
입하는 프로세스가 없다.
출처: Introduction to Machine Learning
12
머신러닝에서 사용되는 학습방법 (Algorithm)
출처: Reinforcement Learning: What is, Algorithms, Applications, Example
머신러닝을 통해 AI 시스템은 어떻게 스스로 학습을 할 수 있는 것인가?
결론부터 말하자면, 머신러닝은 확률과 통계에 기반하여 어떤 데이터를 분류하거나 예측하는 것이다.

머신러닝에서 사용되는 학습방법은 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning) 및 강화학습
(Reinforcement Learning) 총 세 가지로 분류된다.
출처: Introduction to Machine Learning
데이터(Data)의 형태
14
정형 데이터 (Structured Data)
정형 데이터의 의미
정형 데이터는 데이터 자체 내의 미리 정해진 구조가 존재하며 데이터에 속한 값들은 미리 정해진 데이터 타입이 있는 것이 특징이며, 관계형
데이터베이스에 저장된 데이터들이 대개 정형 데이터이다. 전 세계 기업에서 쓰이는 전체 디지털 데이터 중 약 20%를 차지하고 있다.
출처: Introduction to Machine Learning 출처: Pandas dataframe an example to structured data
15
비정형 데이터 (Unstructured Data)
비정형 데이터의 의미
비정형 데이터는 고정된 구조나 형태가 없는 것이 특징이며, 앞서 언급한 관계형 데이터베이스에 저장되지 않는 정보를 의미하며, 표준 프로
그래밍 방식을 사용하여 처리하기에는 매우 어렵다. 전 세계의 기업에서 사용되는 디지털 데이터 중 80% 이상을 차지하는 데이터이다.
출처: Introduction to Machine Learning 출처: SAP HANA Text Analysis
16
정형 데이터 vs 비정형 데이터
정형 데이터와 비정형 데이터간 비교
관계형 데이터바이스에 저장된 형태냐 아니냐에 따라 정형 데이터인지 비정형 데이터인지 판단할 수 있다. 기업 내에 사용되는 데이터 중 정형
데이터는 관리가 용이하고 변경 및 삭제가 가능해서 이를 활용한 업무 프로세스 개선은 활발히 이루어지고 있는 반면, 비정형 데이터의 경우
관리하기도 어렵고 이를 분석하기도 쉽지 않아 기존 관계형 데이터베이스가 아닌 인메모레 데이터베이스와 같은 고성능 빅데이터 분석용 데
이터베이스를 활용해 이 데이터들을 활용할 방안에 대해 연구하기 시작했고 머신러닝 및 딥러닝 기술의 발전과 더불어 점점 비정형 데이터를
정제해서 모델링한 후 기업 내 경영에 활용하는 사례가 점점 증가하고 있다.
출처: Mining unstructured data using machine learning 출처: Structured Data vs. Unstructured Data: what are they and why care?
17
반정형 데이터 (Semi-structured Data)
반정형 데이터의 의미
반정형 데이터는 JSON 또는 XML 파일처럼 고정된 구조로 연결된 데이터라고 보면 되며, 사실상 여러분들이 보는 SNS의 Feed의 경우 대부분
반정형 데이터라고 볼 수 있다.
출처: Introduction to Machine Learning
18
데이터의 차원 (Dimension of Data)
AI 분야에서 사용되는 데이터의 차원은 인간이 인지할 수 있는 차원보다 더 높다.
보통 사람이 인지할 수 있는 차원은 3차원인데 실제 AI분야에서 쓰는 데이터의 차원은 3차원 이상이라 시각화를 하려면 차원을 축소해서 보여
준다. 

고차원 데이터의 패턴은 인간의 눈으로 확인하긴 어렵다.
출처: Introduction to Machine Learning
19
차원의 표현 (Dimension Representation)
AI 분야에서 사용되는 데이터의 차원을 표현하는 용어가 따로 존재한다.
차원이 0인 데이터를 Scalar라고 표현하며 1인 경우 Vector, 2인 경우 Matrix, 3부터는 Tensor로 표현한다. 또는, Tensor의 최소 차원이
3차원이므로 이를 기준으로 Scalar를 0D Tensor, Vector를 1D Tensor, Matrix를 2D Tensor로 표현하기도 한다.
출처: Introduction to Machine Learning
출처: [딥러닝]02.신경망을 위한 데이터 표현
머신러닝 기초
(Machine Learning Basics)
21
머신러닝 프로세스 (Machine Learning Process)
출처: Introduction to Machine Learning
22
머신러닝 워크플로우 (Machine Learning Workflow)
출처: Workflow of a Machine Learning project 출처: What is Machine Learning?
23
End-to-End ML Workflow
출처: End-to-End ML Workflow with Python
24
End-to-End ML Workflow (Unstructured Data)
출처: End-to-End ML Workflow
Unstructured Data를 이용할 때는
Machine Learning Algorithm 중
Neural Network 만 사용!
25
머신러닝 종류 (Types of Machine Learning)
출처: https://swalloow.github.io/pyml-intro1
26
머신러닝 알고리즘 (Machine Learning Algorithms)
출처: Workflow of a Machine Learning project
27
Supervised vs Unsupervised
출처: Supervised Learning vs Unsupervised Learning. Which is better?
지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning)간 비교
지도학습은 data의 태그에 정답을 의미하는 정확한 label이 부착된 labeled data를 가지고 학습을 해서 test data가 들어왔을 때 AI가 그 데이
터가 어느 labelled data와 일치하는지 여부를 판단하는 학습방법을 의미한다. 즉, 정답을 미리 정해놓고 학습을 시키는 방법이라고 보면 된다.
실생활에서 이메일이 스팸메일인지 정상적인 메일인지 판단하는 문제를 해결할 때 이 학습방법을 사용한다. 

비지도학습은 label이 없는 Unlabeled data를 가지고 학습을 해서 이 데이터로부터 숨어있는 형태나 패턴을 찾아내기 위한 학습방법을 의미한
다. 비지도학습에 비해 정답이 없는 데이터로부터 미래를 예측해야 하기 때문에 훨씬 어려운 학습방법이다. 실생활에서 법률 계약서에서 공통적
인 문법을 가진 특징에 기반하여 계약들을 여러 개의 그룹으로 그룹화해야 할 때 이 학습방법을 사용할 수 있다.
28
Supervised Learning - Classification
출처: GIF: www.cs.toronto.edu
지도학습(Supervised Learning)에 속한 Classification의 의미
Classification은 지도학습에 속한 학습방법으로서 데이터를 주어진 카테고리에 따라 분류하는 문제를 의미하며 최근에 많이 사용하는 이미지
분류도 Classification에 속한다. 보통 분류 문제를 말할 때 정답이다 아니다라고 분류를 하는데 이를 Binary Classification이라고 칭한다. 그
러나, 분류 문제는 꼭 정답이다 아니다의 문제로만 보는 게 아니라 학생의 전공 점수가 Pass 냐 Fail로 예측하는 문제도 분류 문제에 속하며 역시
Binary Classification으로 볼 수 있다.

이외에, 학생의 전공점수를 A/B/C/D/E로 분류해야 하는 문제는 Multi-label classification이라고 한다.
29
Logistic Regression (로지스틱 회귀)
출처: GIF: www.cs.toronto.edu
분류(Classification) 측면에서 Logistic Regression의 의미
쉽게 말해서 어떤 구간까지를 변수로 보는 범주형 변수를 다음 장에 언급할 회귀(Regression) 문제, 더 자세하게는 다중 선형 회귀(Multi-
linear Regression)으로 보고 풀기는 어렵기 때문에 등장한 개념이며, 종속변수인 범주형 변수를 단순히 범주 1이 아니라 범주 1이 될 확률로
보고 문제를 푸는 것을 의미합니다.

보통 범주가 2개인 문제를 풀 때 종속변수가 연속형 변수가 아닌 범주형 변수일 때는 회귀 모델을 적용할 수 없으므로 범주 1이 될 확률로 치환하
고 이를 식으로 치환하면 Logistic Function의 형태가 나타나기 때문에 Logistic Regression이라는 이름이 붙은 것이다. 범주가 2개인 문제
를 풀 때는 범주 1에 속할 확률이 있다 아니다라는 식으로 분류를 하기 때문에 이항 로지스틱 회귀라고 부르며 이것은 Binary Classification에
속합니다.
출처: 로지스틱 회귀
Fully connected neural
Network에 Activation
Function으로 Sigmoid를
쓰면 이항 로지스틱 회귀임
Neural Network
30
실습 - Logistic Regression
금융 분야에서 Logistic Regression 활용 사례
고객이 정기 예금에 가입할 것이냐 말 것이냐에 대해 Logistic Regression 을 활용해 모델을 만들고 예측해보는 것에 대해 코드를 보고 실행해
보면서 가볍게 살펴볼 것이다.
31
Supervised Learning - Regression
출처: GIF: Introduction to Linear Regression
지도학습(Supervised Learning)에 속한 Regression의 의미
Regression도 지도학습에 속한 학습방법인데 Classification과 달리 고정된 값이 아니라 연속된 값을 예측하는 문제를 의미하며 주로 어떤 패턴
이나 트렌드를 예측할 때 이 학습방법을 사용한다.

실생활에서 집의 크기에 따른 매매가격을 예측을 할 때 이 학습방법을 사용할 수 있다.
32
Linear Regression (선형 회귀)
출처: 머신러닝 알고리즘: 선형회귀
회귀(Regression)문제 해결 측면에서 Linear Regression의 의미
앞서 언급한 지도학습에 속한 회귀 문제를 해결을 할 때 반드시 알아야 될 개념이 Linear Regression이며 간단히 말하자면 y = WX + b 라는 형
식으로 선형 함수를 만들고 이 함수가 그려내는 직선을 바탕으로 예측을 하는 것을 말한다.

선형 함수가 그려내는 직선에 모든 데이터들이 걸쳐있다면 예측값과 실제값의 차이가 0이므로 완벽한 예측을 한 셈인데 실제로는 그렇게 데이터
가 분포하지 않아서 데이터가 위치한 점과 직선의 점과의 차이를 에러로 보고 이 에러를 최소화시키는 목적으로 예측을 하게 된다. 이를 넓이로 보
기 위해 실제 데이터의 y값과 예측 데이터의 y값의 차이를 제곱해서 square error라는 구한 후 각각의 square error를 데이터 개수로 나눈
mean square error를 최소화시키는 목적으로 모델을 만들어서 훈련시키는 것이다. 넓이로 보는 이유는 딥러닝 알고리즘인 Gradient Descent
의 Back Propagation을 수행할 때 계산이 용이하게 가중치로 편미분할 수 있기 때문이다.
33
Linear Regression (선형 회귀)
출처: 머신러닝 알고리즘: 선형회귀
회귀(Regression)문제 해결 측면에서 Linear Regression의 의미
또한, 실제값과 예측값의 차이를 제곱해서 평균낸 개념을 cost function(비용 함수 또는 오차 함수)라고 하는데 이는 최소화될 목적을 갖고 있다
고 해서 목적 함수(object function)이라고 부른다. 

cost function을 최소화할 수 있도록 직선을 그리는 것이 모델을 훈련시키는 것이며 이 훈련에 사용되는 알고리즘 Gradient Descent 알고리즘
이다.
34
Unsupervised Learning - Clustering
출처: Clustering with Scikit with GIFs
비지도학습(Supervised Learning)에 속한 Clustering의 의미
Clustering은 비지도학습에 속한 학습방법으로서 Unlabeled data인 여러 개의 입력 데이터가 주어졌을 때 Cluster로 그룹화해주는 학습방
법을 의미한다. 실제로 이 데이터의 label이나 category가 무엇인지 알 수 없는 경우가 많기 때문에 이러한 학습방법은 중요하다고 볼 수 있다.
35
Reinforcement Learning
출처: https://swalloow.github.io/pyml-intro1
강화학습(Reinforcement Learning)의 의미
Reinforcement Learning은 앞서 언급한 지도학습과 비지도학습과는 완전히 다른 개념으로서 데이터가 정답이 있는 것도 아니고 주어진 데이
터가 없을 수도 있다. 이 학습기법은 자신이 한 행동에 대한 “보상”을 알 수 있어서 그로부터 학습하는 것을 의미한다.

예를 들면 아이가 걷는 것을 배우는 것처럼 어떻게 행동할 줄 모르지만 환경과 상호작용하며 걷는 법을 알아가는 것과 같은 학습방법을
Reinforcement Learning이라고 한다. 

Reinforcement Learning은 게임에 적용이 많이 되고 있고 아타리 게임을 예로 들자면 학습대상(agent)는 움직이면서 적을 물리치는 존재이
고 이 학습대상은 움직이면서 적을 물리치면 보상(reward)를 받게 된다. 이러한 과정을 반복학습 (Trial and Error)를 통해 점수를 최대화하는
것이 목표가 된다.
36
머신러닝 프레임워크 (Machine Learning Framework)
출처: Which Machine Learning Frameworks To Try In 2019-20
37
End-to-End Predictive Modeling
End-to-End Predictive Modeling 소개 및 실습
앞서 언급한 머신러닝 워크플로우에 관련된 작업을 모두 진행해서 예측 모델링을 진행하는 것을 End-to-End Predictive Modeling이라고
하는데 이와 관련된 소스코드를 보면서 어떤 식으로 흐름이 이어지는 지 이해하는 게 이번 실습의 목표이다.

이번 실습을 통해 머신러닝 프로젝트 관련 표준이 된 CRISP-DM의 영역을 다수 커버할 수 있다. CRISP-DM은 Cross-industry standard
process for data mining의 줄임말이며 IBM에서 2015년에 출시한 Analytics Solutions Unified Method for Data Mining/Predictive
Analytics라고 불리는 방법론의 확장판이라고 볼 수 있다. CRISP-DM은 Business Understanding, Data Understanding, Data
Preparation, Modeling, Evaluation, Deployment 총 6단계로 data mining 프로세스를 정의하였다.
출처: End to End — Predictive model using Python framework 출처: Wikepedia
38
End-to-End Predictive Modeling
Load Dataset - Data Understanding
Pandas 라이브러리로 은행 관련 데이터를 읽어들이고 확인하는 단계
39
End-to-End Predictive Modeling
Convert Taget to 1/0 and Descriptive Stats
Target의 라벨을 1과 0으로 바꾸고 1과 0의 비율을 확인
40
End-to-End Predictive Modeling
Descriptive Stats
DataFrame 의 Type 확인 후 연관성 파악을 위해 Seaborn 라이브러리를 이용해 Heat Map 작성
41
End-to-End Predictive Modeling
Variable Selection - Vote based approach
Modeling 하기 전에 필요한 변수들을 선택하고 정제하는 단계
42
End-to-End Predictive Modeling
WOE and IV
WOE: Weight of Evidence / IV: Information Value

Logistic Regression 에서 진화된 개념으로 신용 위험 모델링이나 고객 이탈 모델링을 연구할 때 쓰는 개념

관련링크: https://skappal7.wordpress.com/2019/09/03/woe-weight-of-evidence-information-value-iv-methods-for-
variable-selection-in-machine-learning/
43
End-to-End Predictive Modeling
Descriptive Stats - Visualization
최종 선택된 변수들을 이용하여 시각화하여 현재 상태 파악
44
End-to-End Predictive Modeling
Descriptive Stats - Visualization
최종 선택된 변수들을 이용하여 시각화하여 현재 상태 파악
45
End-to-End Predictive Modeling
Model
머신러닝 알고리즘을 정한 후 모델 생성 및 훈련 단계
46
End-to-End Predictive Modeling
Performance Tunning
머신러닝 알고리즘을 써서 훈련된 모델의 예측성능을 높이기 위해 Hyper Parameter를 Tunning하는 단계
47
End-to-End Predictive Modeling
Final Model and Model Performance
훈련된 모델 중에 가장 좋은 모델을 선택한 후 다시 훈련 후 성능 평가
신경망과 딥러닝
(Neural Network &
Deep Learning)
49
퍼셉트론 (Perceptron)
단층 퍼셉트론 (Single-layer Perceptron)에서 다층 퍼셉트론(Multi-layer Perceptron)으로의 진화
퍼셉트론(Perceptron)은1957년 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트(Frank Rosenblatt)에 의해 고안된
알고리즘이며 오늘날의 신경망(Neural Network)의 기원이 되는 알고리즘이다. 입력층(Input Layer)과 출력층(Output Layer)만 존재하
는 형태여서 입력층을 제외하고 층이 출력층 1개만 존재하는 단층 퍼셉트론으로 분류된다. 이 퍼셉트론은 입력 벡터를 두 부류로 구분하는 선
형 분류기(Linear Classifier)였다. 

퍼셉트론의 경우 선형성(직선 형태)을 띠고 있는 OR Gate, AND Gate, NAND Gate 는 구현가능하지만 비선형성(곡선 형태)을 띠고 있는
XOR Gate를 구현하지 못하는 한계가 있었으며, 결국 입력층과 출력층 사이에 은닉층(Hidden Layer) 1개를 추가한 2층 퍼셉트론이 등장하
면 XOR Gate를 구현해낼 수 있었고 이를 다층 퍼셉트론이라 부른다.

다층 퍼셉트론은 선형성 혹은 비선형성 문제를 모두 학습을 해서 해결할 수 있는 비선형 분류기(Non-linear Classifier)이며 오늘날의 인공신
경망(Artificial Neural Network)의 시초가 된다.
출처: 단층 퍼셉트론과 다층 퍼셉트론
단층 퍼셉트론 구조 선형성을 띤 문제 비선형성을 띤 문제 다층 퍼셉트론 구조
50
실습 (1) - 퍼셉트론 구현
출처: 퍼셉트론
51
실습 (1) - 퍼셉트론 구현
52
실습 (1) - 퍼셉트론 구현
53
딥러닝 - 신경망 (Deep Learning - Neural Network)
신경망(Neural Network)와 딥러닝(Deep Learning)의 의미
Neural Network는 인간의 뇌를 “느슨하게” 흉내내어 설계한 시스템이라고 말할 수 있으며 이전 장에서 언급한 오늘날의 인공신경망
(Artificial Neural Network / ANN)을 통칭할 때 사용되는 용어이다. 인공신경망은 Hidden Layer를 최소 한 개 이상 포함하고 있는데
Hidden Layer 가 1개인 신경망을 Simple Neural Network 혹은 Shallow Neural Network라고 통칭한다. Hidden Layer 안에는 1개 이
상의 뉴런(Neuron)으로 구성이 되어있고 뉴런 안에는 활성화 함수(Activation Function)가 존재하는 것이 특징이며, 이 점이 앞서 설명한
단층 퍼셉트론과 다른 점이다. 

Hidden Layer 가 2개 이상인 신경망을 Deep Neural Network (DNN) 혹은 Deep Learning Neural Network라고 통칭하며 우리가 말하
는 딥러닝(Deep Learning)은 바로 Hidden Layer가 2개 이상인 Deep Neural Network를 의미하는 용어이다. 

Neural Network는 데이터 안에서 패턴을 인식하기 위해 많은 연산을 수행할 때 사용되는 네트워크로서 주로 비정형데이터를 다룰 때 많이 사
용된다. Neural Network안의 연산 과정은 각각의 Layer 안에 캡슐화되어 있고, 하나의 Neural Network 안에서 여러 개의 Layer들이 서로
각각 다 연결되어 있다.
출처: Artificial Neural Network (Deep Learning)출처: Introduction to Machine Learning
HiddenLayer의수:1개 HiddenLayer의수:4개
노드(Noder)혹은뉴런(Neuron)
54
Fully Connected Neural Networks
Fully Connected Neural Networks or Densely Connected Neural Network (기본적인 신경망)
‣ 앞서 언급한 가장 기본적인 Neural Network를 말하며, 이전 Hidden Layer의 모든 노드(Node)가 다음 Hidden Layer의 모든 노드에 연결된 구
조를 가진 Neural Network를 의미하며, 여기서 노드(Node)는 뉴런(Neuron)이란 용어와 뜻이 동일함
‣ 뉴런(neuron)은 인간의 뇌에서 신경계를 구성하는 기본 단위의 세포를 말하는데, 인공신경망에서는 Hidden Layer를 구성하는 기본 단위가 되고,
Hidden Layer는 여러 개의 뉴런을 가질 수 있고, 갯수에는 제한이 없음
‣ 각각의 뉴런은 weights와 bias로 구성되어 있고, weight의 개수는 이전 레이어의 뉴런 갯수와 동일하고, 여기에 bias가 1개씩 추가된다.
‣ 첫 번째 Hidden Layer의 뉴런은 입력 레이어(Input Layer)를 구성하는 입력 파라메터의 갯수만큼 weight들을 갖게 되고 마지막 Hidden Layer
의 뉴런 갯수는 출력 레이어(Output Layer)를 구성하는 출력 파라메터의 갯수와 같아야 한다.
출처: Quora
Input Layer
Output Layer
Hidden Layer
Neuron
Input Layer의
파라메터 개수: 4개
첫번째 Hidden Layer의 각
Neuron이 가지는 Weight의 개
수는 4개이고 Bias의 개수는 1개
-> Weight와 Bias 초기값 세팅
Output Layer 의
파라메터 개수: 3개
마지막 Hidden Layer의
Neuron 개수: 3개
세 번째 Hidden Layer의 각
Neuron이 가지는 Weight의 개
수는 5개이고 Bias의 개수는 1개
55
Feedforward Propagation (순전파)
Feedforward Propagation
‣ Forward Propagation라고도 불리우며 뉴럴 네트워크 모델(neural network model)의 입력층부터 출력층까지 순서대로 매개변수들
(Parameter)을 계산하고 저장하는 것을 의미함
‣ 뉴럴 네트워크(Neural Network)의 개별 뉴런에 들어오는 입력신호의 총합을 출력신호로 변환하는 함수를 활성화함수(activation function)라고
하며 역치(threshold value)가 넘으면 산출값을 내놓음
‣ 활성화함수는 대개 비선형함수(non-linear function)를 사용해야만 하는데, 그 이유는 예를 들어 3층의 네트워크를 선형함수 y(x)=h(h(h(x)))로
표현하면 이 식은 그냥 y(x) = a(x)와 동일한 식이 되어서 hidden layer가 없는 네트워크가 되어버리므로 실질적으로 층을 쌓는 효과를 누릴 수가 없
어서임
출처: https://databuzz-team.github.io/2018/11/05/Back-Propagation/
활성화 함수 (Logistic Sigmoid) 활성화 함수 (Softmax)
56
Back Propagation (역전파)
Back Propagation
‣ 뉴럴 네트워크의 파라미터들에 대한 그래디언트(gradient)를 계산하는 방법을 의미하며, 미적분의 ’체인룰(chain rule)’에 따라 뉴럴 네트워크의 각
층과 관련된 목적 함수(objective function)의 중간 변수들과 파라미터들의 그래디언트(gradient)를 출력층에서 입력층 순으로 계산하고 저장
‣ 역전파 계산에 사용될 기본적인 도함수는 Sigmoid, Softmax, Cross Entropy 이며, 예측값(y_pred)와 실제값(y_true)의 차이를 보여주는 오차함
수(cost function)을 weight 와 bias로 미분하여, 매 step에서 weight와 bias들이 크고 작아짐에 따라 영향을 미치는 영향(기울기/gradient)을
보며 weight와 bias를 수정하는 과정임
‣ Hidden Layer가 많아질수록 보통 Sigmoid함수가 발생시키는 Gradient Vanishing 문제(Input Layer에 가장 가까운 Hidden Layer의 weight
와 bias가 수정이 되지 않는문제) 때문에 보통 Relu로 대체한다.
출처: https://danthetech.netlify.com/DataScience/neural-network-back-propagation-part-2
Back propagating the error (Output Layer-> K Layer2) Back propagating the error (K Layer2 -> J Layer1)
57
Tensorflow Playground - 3 hidden layers/lr = 1.0
출처: Tensorflow Playground
Weight, Bias가 전달
Weight, Bias 초기값 세팅
58
실습 (2) - XOR Gate / 3개의 Hidden Layer, Bias 없음
59
실습 (2) - XOR Gate / 3개의 Hidden Layer, Bias 없음
60
Convolutional Neural Networks (CNNs)
Convolutional Neural Networks (CNNs)
‣ 앞서 언급한 Fully Connected Neural Network의 경우, 미리 정해진 Feature를 가진 데이터만 원활히 학습
이 되고 시시각각 Feature가 변하는 이미지에서는 학습이 제대로 되지 않는 단점이 있어서 이를 보완하기 위해
만든 Neural Network
‣ 데이터를 구성하는 같은 크기의 일정한 영역들에 대해 작은 특징(Feature)에서 큰 특징으로 추상화
‣ 필터를 통해 특징들을 추출하여 하나의 Convolutional Layer를 만들고 이 특징들에서 좀 더 복잡한 특징을 추
출하는 새로운 레이어를 추가하는 방식으로 여러 개의 Convolutional Layer들을 연결하고 마지막에는 Back
Proprogation을 통해 Parameter 업데이트를 하면서 Neural Network를 학습시키며, 추상화 단계별로
Neural Network가 스스로 학습을 통해 필터를 만들어냄
‣ 이미지 인식 뿐만 아니라 텍스트 분류에도 사용이 되고 있음
출처: Introduction to Machine Learning
이미지를 구성하는 각 영역에 대해 작은 특징에서 큰 특징으로 추상화
출처: 딥러닝 합성곱 신경망(CNN) 개요
61
Recurrent Neural Networks (RNNs)
Recurrent Neural Networks (RNNs)
‣ 기존 Neural Network는 이전 상태를 기억할 수가 없고 이전 상태를 전부 초기화
하고 다시 처음부터 학습을 하는 구조여서 문제가 있었는데, RNN을 통해 이 문제
를 해결하였음
‣ 일부 Layer들의 Output을 다시 같은 Layer의 Input으로 다시 전달되는 구조이
며 이 Layer의 노드들은 방향을 가진 엣지로 연결된 순환 구조를 가지고 있음
‣ Memory를 가진 모델로서 Text-To-Speech 분야에 종종 사용됨
‣ 시간에 관한 구간이 존재하는 Time Series Data를 기반으로 한 학습에 용이함
출처: Introduction to Machine Learning
순환구조
출처: Ratsgo's Blog
RNN의 기본구조 Input: ‘hell’ -> Output: ‘hello’
출처: Understanding LSTMs
Unrolled RNN
62
Long Short Term Memory networks (LSTMs)
Long Short Term Memory networks (LSTMs)
‣ 새로운 종류의 RNN이라고 보면 되며 기존 RNN의 경우 관련 정보와 그 정보를 사
용하는 지점 사이의 거리가 멀 경우 Back propagation (역전파) 수행시 gradient
가 줄어들어 학습능력이 저하되는 문제가 있었는데 이를 해결한 것이 LSTM임
‣ RNN의 hidden state에 cell state를 추가한 구조를 지니고 있음
‣ 과거 정보를 잊기 위한 gate인 forget gate와 현재 정보를 기억하기 위한 gate
인 input gate로 구성됨
출처: Ratsgo's Blog
출처: Ratsgo's Blog
Forget gate / Input gate LSTM의 순전파 LSTM의 역전파
63
딥러닝 모델 훈련 (Training a Deep Learning model)
딥러닝 모델 훈련시 알아두어야 할 사항
‣ Matrix Multiplication (행렬 곱)이 사용됨
‣ 첫 번째 행렬의 첫 번째 행의 각 요소들은 두 번째 행렬의 첫 번째 열의 요소들과 곱해지고 이
곱한 값들을 서로 더함
‣ 첫 번째 행렬을 신경망의 입력으로 고려할 수 있고 두 번째 행렬을 이 신경망의 weight으로
볼 수 있음
‣ VGG16 (16개의 hidden layer를 가진 CNN) 규모가 큰 모델은 weight와 bias에 해당하는
parameter의 수가 140만개 이상임
출처: Introduction to Machine Learning
출처: ResearchGate.net
64
Underfitting and Overfitting
딥러닝 모델 훈련 후 평가시 발생하는 문제
‣ Model을 생성 후 Training을 시킨 후 이 Model 예측 성능이 너무 나빠서도 안 되고 너무 좋
아서도 안 된다. 정확도 기준으로 100%에 너무 가까워도 문제가 생긴다. 왜냐하면 기존 데이
터에는 학습이 너무 잘 되는데 새로운 데이터에는 학습을 하지 못하는 상황이 발생하기 때문이
다.
‣ Model이 테스트 데이터에 대한 정확도가 너무 떨어지고 필요한 Signal을 충분히 반영하지
못했을 때 Model이 Underfitting되었다고 말하며 정확도가 너무 높은 반면 필요한 noise를
충분히 반영하지 못한 경우 Model이 Overfitting되었다고 말한다.
‣ 보통 데이터를 계속 증가시키고 엄청난 양의 데이터를 넣어서 모델을 Training시키기 때문
에 Underfitting 문제는 생각보다 크지 않은데 Overfitting이 되었을 때 이를 해결한 후 정
확도를 몇%에 맞출 것인지에 대해 고민을 하게 되는데 이는 경험적 접근이라 공식이 따로 없
다.
‣ 보통 Overfitting 방지를 위해서는 데이터를 더 증가시키고 Model의 Hyper Parameter를
Tunning하거나 혹은 X에 해당하는 Feature의 수를 줄이는 방법도 있으며, 이를 방지하기 위
한 Dropout, L1 & L2 정규화 기법도 존재한다.
출처: Overfitting과 Underfitting
65
Overfitting 방지 기법 - L1 & L2 Regularization
L1 and L2 정규화 기법
‣ Model이 Overfitting되었을 경우 가중치(Weights)를 감소시키는 방법을 사용하는데 감소를 시키기 위해서는 정규화(Regularization)을 쓰게 되
며 이 방법에는 L1 정규화 기법과 L2 정규화 기법이 있다.
‣ L2 정규화 : 각 가중치 제곱의 합에 규제 강도(Regularization Strength) λ를 곱한다. 그 값을 손실함수에 더한다. λ를 크게 하면 가중치가 더 많이
감소되고(규제를 중요시함), λ를 작게 하면 가중치가 증가한다(규제를 중요시하지 않음). 가중치를 갱신할 때, 손실함수의 미분값을 이전 가중치에서
빼서 다음 가중치를 계산한다. 따라서 가중치가 크면 손실 함수가 커지고, 다음 가중치가 크게 감소된다.
‣ L1 정규화 : L2 정규화와 달리 가중치의 제곱의 합이 아닌 가중치의 합을 더한 값에 규제 강도(Regularization Strength) λ를 곱하여 오차에 더한
다. 이렇게 하면 L2 규제와는 달리 어떤 가중치는 실제로 0이 된다. 즉, 모델에서 완전히 제외되는 특성이 생기는 것이다. 일부 계수를 0으로 만듦으로
써 모델을 이해하기 쉬워지고, 모델의 가장 중요한 특성이 무엇인지 드러나는 것이다. 그러나 L2 규제가 L1 규제에 비해 더 안정적이라 일반적으로는
L2규제가 더 많이 사용된다.
출처: 오버피팅 억제
L1 & L2 정규화
66
Overfitting 방지 기법 - Dropout
Dropout 기법
‣ Model이 Overfitting되었을 경우 가중치(Weights)를 감소시키는 방법 외에 Hidden Layer의 뉴런(Neuron)을 임의로 삭제하는 기법도 있다.
‣ 드롭아웃(Dropout) 기법은 Model에서 은닉층(Hidden Layer)의 뉴런을 무작위로 골라 해당 뉴런을 임의로 삭제하면서 학습하는 방법이며, 훈련
(Training) 때에는 데이터를 흘릴 때마다 삭제할 뉴런을 무작위로 선택하고, 시험(Testing) 때는 모든 뉴런에 신호를 전달한다. 단, 시험 때는 각 뉴런
의 출력에 훈련 때 삭제한 비율을 곱하여 출력한다.
출처: 오버피팅 억제
Dropout
67
딥러닝 모델 구축 (Building a Deep Learning model)
출처: Introduction to Machine Learning
딥러닝 모델 구축시 알아두어야 할 사항
‣ 딥러닝 모델의 각 Layer는 Weight와 Bias로 나열되어 있다.
‣ Weight와 Bias들은 딥러닝 모델이 보다 높은 정확도를 가지기 위해 훈련을 하는 동안 수정된다.
‣ Weight와 Bias는 각각 행렬로 구성되어 있다.
‣ 각 iteration 별로 변화되는 양을 learning rate라고 하며 이는 hyper parameter에 속한다.
68
딥러닝 모델 구축 (Building a Deep Learning model)
출처: Introduction to Machine Learning
훈련이 된 딥러닝 모델이 포함하는 것
‣ 각 Layer들을 서술한 network definition 파일
‣ 해당 신경망 내에 각 Layer에 대한 Weight과 Bias정보
69
Image Recognition and Deep Learning
이미지 인식(Image Recognition) 종류
‣ Classification: 이미지 전체를 대상으로 Object의 종류(Class or Label)를 구분
‣ Localization: 모델이 주어진 이미지 안의 Object 가 이미지 안의 어느 위치에 있는지 위치 정보를 출력해주는 것으로, 주로 Bounding box 를 많
이 사용하며 주로 bounding box 의 네 꼭지점 pixel 좌표가 출력되는 것이 아닌 left top, right, bottom 좌표를 출력함
‣ Object Detection: 보통 Classification 과 Localization을 동시에 수행하는 것을 말하지만 아래 그림의 경우 이미지 위에 모델이 학습한 Object
위치만 bounding box 로 표현되고 Class 종류는 구분하지 않음
‣ Instance Segmentation: Object Segmentation 기법을 써서 Object Detection 을 통해 검출된 Object 의 형상을 따라서 Object 의 영역을
표시하고, 같은 Class 더라도 서로 다른 Instance를 구분해주는 기법
출처1: Review of Deep Learning Algorithms for Object Detection
출처2: 이미지 인식 용어 정리
70
모델 배포 (Deployment)
모델 배포와 관련하여 알아두어야 할 사항
‣ 훈련된 모델은 새로운 데이터에 기반하여 결과 예측을 할 때 사용될 수 있다.
‣ 모델은 Inference 혹은 Scoring을 위해 배포될 수 있다. Inference 혹은 Scoring은 훈련된 모델로 이미지 인식과 같은 실제 서비스를 수행하는
과정을 의미한다.
‣ 모델 배포시 딥러닝 프레임워크의 경량화 버전을 주로 이용한다. 예를 들자면 스마트폰에서도 실행할 수 있게 Tensorflow 대신 Tensorflow Lite
를 쓰는 경우를 말한다.
‣ 모델 배포시 가장 일반적으로 사용하는 방법을 해당 모델과 연결할 Application Programming Interface (API)를 만드는 것이다. 좀 더 기술적
으로 말하자면 RESTful API를 만들어 URL 호출을 통해 모델을 테스트한다.
출처: Introduction to Machine Learning
모델 배포 후 서비스를 하고 있는 실제 사이트
출처: reiinakano.com
71
모델 평가 (Model Evaluation)
모델 평가시 알아두어야 할 사항
‣ 훈련된 모델에 대해 Inference를 하면 confidence라는 value가 제공이 된다. 그런데 이 value는 해당 예측할 때에만 관련이 있다.
‣ 모델의 정확도(accuracy)는 과거에 모델 훈련에 이용했던 Test Dataset 혹은 Validation Dataset 안의 데이터가 얼마나 정확히 예측했는지에
따라 결정이 된다.
‣ 정확도(accuracy)는 모델(model)과 관련 있고, confidence는 예측(prediction)과 관계가 있다.
출처: Introduction to Machine Learning
72
Training vs Inference
Training과 비교하여 Inference 수행시 고려해야 할 사항
‣ Training 과 달리 Feedforward propagation 수행 후 Back propagation 을 수행하지 않아 Weight와 Bias가 업데이트되지 않는다.
‣ Inference 속도를 고려하여 일부 layer들을 병합(Merge) 혹은 제거(Prune)할 수 있다.
‣ Weight들을 양자화(quantize)를 통해 자연수로 셀 수 있는 양으로 변경할 수 있다. (FP32 -> INT16/8/4)
‣ 신경망(Neural Network)에 대해 속도(speed)에 주안점을 둘 것이냐 아니면 정확도(accuracy)에 주안점을 둘 것인지 고려해서 재설계해야 한다.
‣ 많은 양의 데이터로 모델을 훈련시켰는데 Inference시 너무 적은 데이터가 들어오면 결과를 도출하는 데 있엇 지연시간(Latency)이 길어질 수 있다. 그리고,
Throughput은 초단위로 모델 훈련을 위해 처리되고 사용될 수 있는 최대 training sample의 개수를 말하는데 Inference시 이것에 대해서도 고려를 해야 한다. 예
를 들면, 우리가 batch size를 4로 설정 후 DenseNet40을 훈련시켰을 때, 우리는 1초 후 5개의 training step을 끝낼 수 있다. 그리고, 각 training step에서 4개
의 image들이 처리된다. 그러므로, DenseNet40이란 모델을 훈련시키기 위한 throughput 은 초당 20개의 샘플이다.
‣ Latency와 Throughput은 상충관계여서 Latency가 높아지면 Throughput은 낮아진다.
출처1: Discover the Difference Between Deep Learning Training and Inference 출처2: Performance Analysis and Characterization of Training Deep Learning Models on Mobile Devices
머신러닝 프레임워크 소개 및 실습
74
Tensorflow 2.0 + Keras
Tensorflow 2.0 과 Keras 란?
‣ Tensorflow 2.0 은 구글(Google)이 공개한 오픈소스 기반의 머신러닝 프레임워크로서 기업용 머신러닝 솔루션으로서는 독보적인 위치를 차지하
고 있고 사용하기 어려웠던 1.x 버전에 비해 4년간 개발자들의 피드백을 수집하고 이를 반영한 결과, 코딩하기가 훨씬 쉬워졌고 직관적으로 모델을
생성하고 학습할 수 있도록 최적화되었다.
‣ Keras는 프랑소와 쏠레(François Chollet)라는 데이터 과학자가 이끄는 오픈소스재단에서 만든 프레임워크로서 연구자들이 굉장히 선호하는 프
레임워크이며 딥러닝 대회 우승자들 상당수가 Keras를 사용했을 정도로 굉장히 유명한 프레임워크이다.
‣ 구글이 Keras를 만든 오픈소스재단을 전격적으로 인수하였고 Tensorflow 2.0에 아예 Keras가 종속된 라이브러리로 포함이 되어서 이제는
Tensorflow 2.0을 쓰면 자연스레 Keras 프레임워크 기반 라이브러리를 사용한다고 보면 된다.
75
Tensorflow 2.0 + Keras 기초 실습
Tensorflow 2.0 과 Keras 기초
‣ Tensorflow 2.0 을 통한 연산방법, Linear Regression 관련 기법에 대해 실습한다.
‣ Tensorflow 2.0 에 종속된 Keras를 사용해 Fully Connected Neural Network를 만들어본다.
‣ 그 외에 모델 속도 향상 기법 및 MNIST 데이터셋을 통한 모델 훈련 기법에 대해서도 알아본다.
76
Tensorflow 2.0 + Keras 기초 실습
Fashion MNIST Dataset을 활용한 모델 훈련 (Fully Connected Neural Network)
‣ Tensorflow 2.0 에 종속된 Keras를 사용해 Fully Connected Neural Network를 만들고 Fashion MNIST 데이터셋으로 모델을 훈련시키고
예측하는 것을 해본다.
‣ Fashion MNIST 데이터셋은 10개의 category (class)와 70000개의 흑백이미지로 이루어져있고 각 이미지의 해상도는 28*28이다.
출처: Fashion MNIST Github
77
Tensorflow 2.0 + Keras 기초 실습
MNIST Dataset을 활용한 모델 훈련 (Convolutional Neural Network)
‣ Tensorflow 2.0 에 종속된 Keras를 사용해 Convolutional Neural Network를 만들고 MNIST 데이터셋으로 모델을 훈련시키고 예측하는 것을
해본다.
‣ MNIST 데이터셋은 10개의 category (class)와 70000개의 흑백이미지로 이루어져있고 손글씨로 숫자를 쓴 이미지로서 각 이미지의 해상도는
28*28이다.
출처: 딥러닝하기 5편. 신경망으로 손글씨 숫자 인식
78
Tensorflow 2.0 + Keras 기초 실습
Dogs vs Cats 라는 Kaggle Dataset 기반 모델 생성 후 개와 고양이 구분하기 (Convolutional Neural Network)
‣ 개와 고양이를 구분하는 신경망 모델을 CNN 기반으로 만든 후 개와 고양이를 구분하도록 모델을 훈련시킨다.
‣ 실행을 해보면서 이미지 예측을 더 좋게 하는 기법들을 확인해본다.
출처: Dogs vs Cats (Kaggle)
79
GitHub 링크
https://github.com/KyoYoon/machine_learning_basic_lecture
80
Reference (1)
• https://arxiv.org/pdf/1906.04278.pdf
• https://blog.exxactcorp.com/discover-difference-deep-learning-training-inference/
• https://juni5184.tistory.com/8
• https://medium.com/zylapp/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852?
• http://melonicedlatte.com/machinelearning/2019/06/23/154900.html
• https://www.researchgate.net/figure/A-diagram-of-the-deep-learning-training-process-including-the-online-training-
component_fig11_317994811
• https://bskyvision.com/163
• https://pythonkim.tistory.com/m/84
• https://ratsgo.github.io/deep%20learning/2017/04/22/NNtricks/
• https://towardsdatascience.com/end-to-end-python-framework-for-predictive-modeling-b8052bb96a78
81
Reference (2)
• https://databuzz-team.github.io/2018/11/05/Back-Propagation/
• https://sonofgodcom.wordpress.com/2018/12/31/cnn%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-fully-
connected-layer%EB%8A%94-%EB%AD%94%EA%B0%80/
• https://blog.goodaudience.com/most-intuitive-explanation-of-activation-functions-fdf6d9b4a53a
• https://towardsdatascience.com/gentle-dive-into-math-behind-convolutional-neural-networks-79a07dd44cf9
• http://taewan.kim/post/cnn/
• https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-7-K-%ED%8F%89%EA%B7%A0-
%EA%B5%B0%EC%A7%91%ED%99%94-K-means-Clustering
• https://de-novo.org/2018/04/17/%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D-
%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-2-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0%EA%B3%BC-
%EC%8B%A0%EA%B2%BD%EB%A7%9D/
• https://de-novo.org/2018/04/17/%ec%9d%b8%ea%b3%b5%ec%8b%a0%ea%b2%bd%eb%a7%9d-
%ec%9d%b4%ed%95%b4%ed%95%98%ea%b8%b0-1/
• https://www.samsungsds.com/global/ko/support/insights/091517_CX_CVP3.html
82
Reference (3)
• http://aidev.co.kr/deeplearning/782
• https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/
• https://swalloow.github.io/pyml-intro1
• https://www.cs.toronto.edu/~frossard/post/classification/
• https://towardsdatascience.com/workflow-of-a-machine-learning-project-ec1dba419b94
• https://lawtomated.com/supervised-vs-unsupervised-learning-which-is-better/
• http://docs.likejazz.com/lstm/
• https://ratsgo.github.io/deep%20learning/2017/05/14/backprop/
• https://eehoeskrap.tistory.com/137
• https://www.thepythoncode.com/article/use-transfer-learning-for-image-flower-classification-keras-python?
fbclid=IwAR3aeeMN4xu8aiHhiK93T7IFM3tixK3T3sObTAYHhF2jiXxorBgtxCc2rBQ
83
Reference (4)
• https://ssungkang.tistory.com/entry/
%EB%94%A5%EB%9F%AC%EB%8B%9D02%EC%8B%A0%EA%B2%BD%EB%A7%9D%EC%9D%84-%EC%9C%84%ED%95%9C-
%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%91%9C%ED%98%84
• https://www.ibm.com/ru-ru/events/think-summit/assets/pdf/Ekaterina_Guryankina.pdf
• https://www.youtube.com/watch?v=Ilg3gGewQ5U
• https://m.blog.naver.com/PostView.nhn?blogId=acwboy&logNo=220614586502&proxyReferer=https%3A%2F%2Fwww.google.com%2F
• https://ko.d2l.ai/chapter_deep-learning-basics/backprop.html
• https://sacko.tistory.com/38
• http://codepad.org/WFV7rolV
• https://ratsgo.github.io/deep%20learning/2017/04/22/NNtricks/
• https://chih-ling-hsu.github.io/2017/08/30/NN-XOR
84
Reference (5)
• https://nittaku.tistory.com/284
• https://m.blog.naver.com/samsjang/220955881668
• https://www.tensorflow.org/tutorials/images/cnn?hl=ko
• https://acdongpgm.tistory.com/archive/201910
• https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/images/classification.ipynb#scrollTo=KwQtSOz0VrVX
• https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8
• https://towardsdatascience.com/setting-up-kaggle-in-google-colab-ebb281b61463
• https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/
• https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/images/classification.ipynb#scrollTo=KwQtSOz0VrVX
• https://www.tensorflow.org/tutorials/images/cnn
감사합니다.

Contenu connexe

Tendances

DLLab 異常検知ナイト 資料 20180214
DLLab 異常検知ナイト 資料 20180214DLLab 異常検知ナイト 資料 20180214
DLLab 異常検知ナイト 資料 20180214Kosuke Nakago
 
データサイエンス概論第一=1-3 平均と分散
データサイエンス概論第一=1-3 平均と分散データサイエンス概論第一=1-3 平均と分散
データサイエンス概論第一=1-3 平均と分散Seiichi Uchida
 
머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)Byung-han Lee
 
相関分析と回帰分析
相関分析と回帰分析相関分析と回帰分析
相関分析と回帰分析大貴 末廣
 
SynFace: Face Recognition with Synthetic Data 論文紹介
SynFace:  Face Recognition with Synthetic Data 論文紹介SynFace:  Face Recognition with Synthetic Data 論文紹介
SynFace: Face Recognition with Synthetic Data 論文紹介Plot Hong
 
データサイエンス概論第一=1-1 データとは
データサイエンス概論第一=1-1 データとはデータサイエンス概論第一=1-1 データとは
データサイエンス概論第一=1-1 データとはSeiichi Uchida
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.Yongho Ha
 
서포트 벡터머신
서포트 벡터머신서포트 벡터머신
서포트 벡터머신Sunggon Song
 
딥러닝의 기본
딥러닝의 기본딥러닝의 기본
딥러닝의 기본deepseaswjh
 
SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習SSII
 
機械学習概論 講義テキスト
機械学習概論 講義テキスト機械学習概論 講義テキスト
機械学習概論 講義テキストEtsuji Nakai
 
[DL輪読会]Learning an Embedding Space for Transferable Robot Skills
[DL輪読会]Learning an Embedding Space for Transferable Robot Skills[DL輪読会]Learning an Embedding Space for Transferable Robot Skills
[DL輪読会]Learning an Embedding Space for Transferable Robot SkillsDeep Learning JP
 
顔認識アルゴリズム:Constrained local model を調べてみた
顔認識アルゴリズム:Constrained local model を調べてみた顔認識アルゴリズム:Constrained local model を調べてみた
顔認識アルゴリズム:Constrained local model を調べてみたJotaro Shigeyama
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムMiyoshi Yuya
 
第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchi第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchiAkira Taniguchi
 

Tendances (20)

Depth Estimation論文紹介
Depth Estimation論文紹介Depth Estimation論文紹介
Depth Estimation論文紹介
 
DLLab 異常検知ナイト 資料 20180214
DLLab 異常検知ナイト 資料 20180214DLLab 異常検知ナイト 資料 20180214
DLLab 異常検知ナイト 資料 20180214
 
Gan
GanGan
Gan
 
データサイエンス概論第一=1-3 平均と分散
データサイエンス概論第一=1-3 平均と分散データサイエンス概論第一=1-3 平均と分散
データサイエンス概論第一=1-3 平均と分散
 
画像処理基礎
画像処理基礎画像処理基礎
画像処理基礎
 
머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)
 
Jokyokai
JokyokaiJokyokai
Jokyokai
 
相関分析と回帰分析
相関分析と回帰分析相関分析と回帰分析
相関分析と回帰分析
 
SynFace: Face Recognition with Synthetic Data 論文紹介
SynFace:  Face Recognition with Synthetic Data 論文紹介SynFace:  Face Recognition with Synthetic Data 論文紹介
SynFace: Face Recognition with Synthetic Data 論文紹介
 
統計分析
統計分析統計分析
統計分析
 
データサイエンス概論第一=1-1 データとは
データサイエンス概論第一=1-1 データとはデータサイエンス概論第一=1-1 データとは
データサイエンス概論第一=1-1 データとは
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
 
서포트 벡터머신
서포트 벡터머신서포트 벡터머신
서포트 벡터머신
 
딥러닝의 기본
딥러닝의 기본딥러닝의 기본
딥러닝의 기본
 
SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習
 
機械学習概論 講義テキスト
機械学習概論 講義テキスト機械学習概論 講義テキスト
機械学習概論 講義テキスト
 
[DL輪読会]Learning an Embedding Space for Transferable Robot Skills
[DL輪読会]Learning an Embedding Space for Transferable Robot Skills[DL輪読会]Learning an Embedding Space for Transferable Robot Skills
[DL輪読会]Learning an Embedding Space for Transferable Robot Skills
 
顔認識アルゴリズム:Constrained local model を調べてみた
顔認識アルゴリズム:Constrained local model を調べてみた顔認識アルゴリズム:Constrained local model を調べてみた
顔認識アルゴリズム:Constrained local model を調べてみた
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
 
第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchi第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchi
 

Similaire à 머신러닝 및 딥러닝 기초 (2020.01.07)

파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)SK(주) C&C - 강병호
 
1.introduction(epoch#2)
1.introduction(epoch#2)1.introduction(epoch#2)
1.introduction(epoch#2)Haesun Park
 
한눈에 보는 머신러닝
한눈에 보는 머신러닝한눈에 보는 머신러닝
한눈에 보는 머신러닝주경 이
 
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI ) 파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI ) Yunho Maeng
 
2022 구로구 도시 정책 아이디어 경진대회.pdf
2022 구로구 도시 정책 아이디어 경진대회.pdf2022 구로구 도시 정책 아이디어 경진대회.pdf
2022 구로구 도시 정책 아이디어 경진대회.pdfchioh song
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론JeongDong Kim
 
[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래
[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래
[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래Taehoon Ko
 
Things Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindThings Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindDataya Nolja
 
언리얼 리플렉션 & CDO.pptx
언리얼 리플렉션 & CDO.pptx언리얼 리플렉션 & CDO.pptx
언리얼 리플렉션 & CDO.pptxMUUMUMUMU
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)Haezoom Inc.
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다Evion Kim
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usageTae Young Lee
 
2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence 2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence Jong MIn Yu
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScienceNAVER D2
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작Tae Young Lee
 
[코세나, kosena] 금융권의 머신러닝 활용사례
[코세나, kosena] 금융권의 머신러닝 활용사례[코세나, kosena] 금융권의 머신러닝 활용사례
[코세나, kosena] 금융권의 머신러닝 활용사례kosena
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System HistoryTae Young Lee
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 

Similaire à 머신러닝 및 딥러닝 기초 (2020.01.07) (20)

파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
Understanding MLOps
Understanding MLOpsUnderstanding MLOps
Understanding MLOps
 
1.introduction(epoch#2)
1.introduction(epoch#2)1.introduction(epoch#2)
1.introduction(epoch#2)
 
한눈에 보는 머신러닝
한눈에 보는 머신러닝한눈에 보는 머신러닝
한눈에 보는 머신러닝
 
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI ) 파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
 
2022 구로구 도시 정책 아이디어 경진대회.pdf
2022 구로구 도시 정책 아이디어 경진대회.pdf2022 구로구 도시 정책 아이디어 경진대회.pdf
2022 구로구 도시 정책 아이디어 경진대회.pdf
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래
[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래
[오컴 Clip IT 세미나] 머신러닝과 인공지능의 현재와 미래
 
Things Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindThings Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in Mind
 
언리얼 리플렉션 & CDO.pptx
언리얼 리플렉션 & CDO.pptx언리얼 리플렉션 & CDO.pptx
언리얼 리플렉션 & CDO.pptx
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence 2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작
 
[코세나, kosena] 금융권의 머신러닝 활용사례
[코세나, kosena] 금융권의 머신러닝 활용사례[코세나, kosena] 금융권의 머신러닝 활용사례
[코세나, kosena] 금융권의 머신러닝 활용사례
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 

머신러닝 및 딥러닝 기초 (2020.01.07)

  • 1. 머신 러닝 및 딥러닝 기초 2020년 1월 7일 작성자: 정교윤
  • 2. 목차 • 인공지능(AI)에 대한 소개 • 데이터(Data)의 형태 • 머신러닝 기초 (Machine Learning Basics) • 신경망과 딥러닝 (Neural Network & Deep Learning) • 머신러닝 프레임워크 소개 및 실습 2
  • 4. 4 AI(Artificial Intelligence)란? AI는 인공지능이라는 뜻 외에 머신러닝과 딥러닝을 포괄하는 용어로 사용된다. 1950년대부터 AI라는 용어가 등장했으며 오늘날의 컴퓨터와 인공지능에 대한 최초의 개념은 앨런 튜링(Alan Turing)이라는 영국 출신의 암 호해독가이자 수학자 1950년에 ‘계산 기계와 지능(Computing Machinery and Intelligence)’라는 논문을 발표하면서 알려지기 시작했 고, 해당 논문의 기술을 현실화한 튜링 머신은 존 폰 노이만 교수에게 영향을 주어 현대 컴퓨터 구조의 표준이 되었으며 그 이후 컴퓨터의 성능 이 급속히 발전하면서 1980년대 이후 데이터를 컴퓨터가 스스로 학습한다는 머신러닝(Machine Learning)이란 용어가 등장했고, 1990년 대로 접어들면서 인간의 두뇌를 본따서 만든 인공신경망(Artificial Neural Network)이 등장하였고 Hidden Layer가 2개 이상 연결되어 있 는 Deep Neural Network의 등장과 함께 딥러닝(Deep Learning)이란 용어가 등장했다. 출처: A brief history of AI, machine learning, artificial neural networks, and deep learning 출처: Nvidia Deep Learning Blog
  • 5. 5 Analytics와 AI 출처: Introduction to Machine Learning Analytics: ‣ 사람이 모든 알고리즘을 작성 ‣ Insight의 두 가지 종류: - Descriptive: 과거 데이터를 묘사하며 설명 - Predictive: 과거 데이터를 기반으로 미래를 예측 AI ‣ AI 스스로 가정, 예측, 테스트, 학습, 적응함 ‣ 알고리즘이 스스로 적응함 ‣ 인간의 능력을 넘어선 깊이와 디테일이 존재 ‣ Narrow AI: 특정 도메인에서만 가져온 데이터를 통해 구체적 결과에 맞게 최적화하는 인공지능 ‣ 데이터 저변에 내재된 데이터 구조를 스스로 이해
  • 6. 6 Agent로부터 스스로 학습하는 AI Agent의 의미와 AI와의 관계 Agent는 개인, 소프트웨어, 회사가 의사결정을 내리는 것 자체를 말하는데 AI 시스템은 이 Agent와 Agent를 둘러싼 Enviroment로 구성되 기 때문에 AI는 Agent를 통해 스스로 학습을 할 수 있다. Agent는 보통 Agent가 실행하는 머신을 의미하는 Architecture와 Agent의 Function의 구현을 의미하는 Agent Program이 결합된 용어 이다. Architecutre는 robotic car, camera 혹은 PC가 될 수 있고 Agent Function은 특정 날짜까지 Agent가 인지한 모든 것의 기록을 의 미한다. AI는 이 Agent로부터 학습을 해서 스스로 진화한다. 출처: Agents in Artificial Intelligence 출처: Introduction to Machine Learning
  • 7. 7 머신러닝과 딥러닝의 의미 및 특징 머신러닝은 명시적인 프로그래밍이 없이도 컴 퓨터가 스스로 학습하는 기법을 말하며 특징 과 예시는 아래와 같다. ‣ 사람이 데이터 파싱 ‣ 사람이 모델을 만든 후 파싱된 데이터를 입력해서 모 델이 스스로 패턴을 인지하고 그 패턴으로부터 학습 함 ‣ 모델이 테스트 데이터를 통해 어떤 것을 결정하거나 예측 ‣ 사람이 모델의 파라메터를 조정함 (예: Weight) ‣ 다중 분류 모델 (Multi-class classification model): Support Vector, Bayesian, Neural Network) 신경망 (Neural Network) ‣ 인간의 뇌 안에 무작위로 연결된 뉴런의 연결을 모방 한 네트워크이며, 입력층(Input Layer)와 출력층 (Output Layer)사이에 Hidden Layer가 존재한다. Hidden Layer를 구성하는 기본 단위가 인공 뉴런 (Neuron)이며 노드(Node)라고도 부른다. ‣ Hidden Layer (히든 레이어): input(입력)과 output(출력) 사이에 존재하는 인공 뉴런을 연결한 층 을 의미 ‣ Deep Learning (딥러닝): 여러 개의 hidden layer 를 가진 neural network (신경망) ‣ GPU 지원 없이는 모델의 학습속도가 매우 느리다. ‣ 머신러닝과 달리 데이터가 많아지면 많아질 수록 학 습 결과가 더 좋아지며, 비정형 데이터로 분류되는 이 미지, 음성, 자연어처리 학습에 용이하다.
  • 8. 8 머신러닝과 딥러닝 관련 주요 용어 (1) Terminology ‣ Algorithm (알고리즘): Machine이 특정 목표를 달성하기 위해 따르는 규칙의 집합을 의미하며 입력값들(Inputs)과 결과값(Output) 및 관련 모든 과정을 설계한 Recipe로도 볼 수 있음 ‣ Machine Learning (머신러닝): Computer가 Data로부터 학습을 하고 스스로 예측하고 예측 성능을 개선할 수 있게 만든 방법들의 집합으로 볼 수 있고 인간이 모든 명령을 직접 다 입력하여 만든 기존의 프로그래밍 방법과는 완전 다른 새로운 방법이라고 볼 수 있음 ‣ Learner or Machine Learning Algorithm (머신러닝 알고리즘) : Data로부터 Machine Learning Model을 학습시키는 데 사용되는 Program 을 말하며 다른 용어로는 “inducer”라는 용어가 있다. (예: “tree inducer) ‣ Machine Learning Model (머신러닝 모델) : 입력값들(Inputs)과 예측값들을 매핑시키는 학습된 프로그램이며 이 프로그램은 linear model 혹 은 neural network에 대한 가중치(Weights)를 가지고 있고 “model” 혹은 “predictor”로 부르기도 하며 Task에 따라 “classifier” 혹은 “regression model”로 부르기도 하며 보통 f(x)라는 형태로 표시하며 neural network의 경우 Weight와 Bias가 반영됨 ‣ Black Box Model (블랙박스 모델): 내부 메커니즘이 공개되지 않은 시스템을 의미하며, 머신러닝 분야에서는 neural network 처럼 해당 모델이 가지고 있는 parameter (weights 와 biases)로는 인간이 이해할 수 없는 “black box”를 지칭할 때 사용되는 용어임 출처: Interpretable Machine Learning
  • 9. 9 머신러닝과 딥러닝 관련 주요 용어 (2) Terminology ‣ Dataset: Machine이 학습하려는 데이터를 가지고 있는 테이블을 의미하며 이 테이블은 Feature 와 예측하고자 하는 Target을 포함하고 있으며 이 Dataset이 Model을 생성 및 훈련시키기 위해 사용된다면 Training Data라고 부를 수 있음 ‣ Instance (인스턴스): Dataset에서 하나의 행을 의미하며 Feature에 해당하는 값들과 Target에 해당하는 결과값을 가지고 있으며, 다른 의 미로는 예측하려는 대상 자체를 의미하기도 하고 만약 웹페이지를 “고양이와 관련”, “고양이와 무관”으로 분류하려는 문제의 경우 웹페이지 가 인스턴스임 ‣ Target: Machine이 예측하기 위해 학습하는 하나의 결과값 정보(열)이며, 분류(Classification) 문제의 경우에는 Target에 정답에 해당하 는 Label을 부여하며 Model의 출력값인 Y로 정의함 ‣ Label : 예측 작업에 관한 답으로, 머신러닝 시스템이 도출하거나 학습 데이터에서 제공된 정답 ‣ Feature : 예측 작업에 사용되는 인스턴스의 속성. ‘웹페이지에 고양이란 단어가 나온 횟수’ 등을 예로 들 수 있으며, 쉽게 말해서 예측이나 분류를 위해 사용되는 여러 개의 입력값 정보(열)을 의미하며 Model에 입력값으로 들어갈 X로 정의함 ‣ Feature Column : 관련된 feature의 집합. 예를 들어 사용자가 거주할 수 있는 모든 국가의 집합. Feature column은 Google에서만 사용 되는 용어고, Yahoo/Microsoft에선 namespace라고 함 ‣ Example : Instance(Feature와 Target 포함) 및 Label ‣ Machine Learning Task: Feature 와 Target을 포함한 Dataset의 조합을 의미하며 Target의 유형에 따라 해당 Task가 Classification 에 속할 것인지 Regression에 속할 것인지 Clustering에 속할 것인지 판단할 수 있음
  • 10. 10 머신러닝과 딥러닝 관련 주요 용어 (3) Terminology ‣ Model : 예측 작업의 통계적 표현(statistical representation)을 의미하며 Example을 사용해 Model을 학습시킨 후, 그 Model을 사용해 예측함 / 분류 (Classfication)를 하는 Model일 경우 Classifier (분류기)로 부르기도 함 ‣ Parameter: Model의 Weights(가중치)와 Bias(편향치)를 말하며 훈련이 될 때마다 이 두 개의 값들은 계속 수정됨 ‣ Metric : 모델 평가 측면에서 관심이 있는 수치. 직접 최적화될 수 있고, 아닐수도 있음 (예: Accuracy(정확도)) ‣ Objective : 알고리즘에서 최적화하려는 Metric ‣ Pipeline : 머신러닝 알고리즘을 둘러싼 인프라. 프론트엔드는 데이터를 수집하고, Train 데이터 저장, 모델 Train, 모델 Production으로 내보내는 것을 포 함함 ‣ SOTA (State-Of-The-Art) : 어떤 모델이 동종 모델 대비 최고 성능을 기록했을 때 “This model got a state-of-the-art result from the test.” 이런 식 으로 표현할 수 있음 ‣ Epoch: 한 번의 epoch는 전체 데이터 셋에 대하여 한 번 학습을 완료한 상태를 의미하며, epoch 100 이라는 말은 전체 데이터를 100번 학습 했다는 뜻 임 ‣ Batch size: batch라는 것은 한 번의 학습이라는 뜻이고, batch size라는 것은 한 번에 학습할 때, 이용하는 데이터의 개수를 의미함. 가령 고양이와 강아지 인식 학습에서 batch size가 100이라면, 인공신경망에 한 번에 넣는 이미지의 개수가 100개라는 뜻임 ‣ Iteration: iteration은 epoch의 전체 데이터 개수와 batch size에 의하여 결정되며, 한 번의 batch에서 100개를 학습하고, 전체 데이터가 5000개라면 전체 iteration은 5000/100 = 50이 됨 ‣ Learning rate(lr) or Alpha: Iteration 별로 변화하는 양을 말하고 Hyper Parameter이며, 한 번 학습할 때 얼마만큼 학습해야 하는지에 대한 것을 의미 하며 Learning rate에 해당하는 한 번의 학습량으로 학습한 이후에는 Parameter인 Weight와 Bias가 갱신됨
  • 11. 11 머신러닝과 딥러닝의 차이 머신러닝에는 인간이 주도하는 작업이 존재하나 딥러닝에는 그러한 작업이 빠져있다. 인공신경망(Artificial Neural Network)에 기반한 딥러닝은 머신러닝 안의 하나의 작은 분야로 볼 수 있지만 그 영역은 점점 커지고 있다. 머 신러닝을 통해 인간이 문제를 해결할 때에는 인간이 스스로 데이터를 보고 특징(Feature)를 추출(Extraction)해서 모델을 만들고 인간이 작 성한 머신러닝 알고리즘을 통해 모델이 학습을 하는 과정이 포함이 되어있지만, 딥러닝을 통해 문제를 해결하는 경우에는 모델 안에 존재하는 Deep Neural Network (Hidden Layer가 2개 이상인 인공신경망) 스스로가 특징을 추출하고 분류해서 결과를 보여주기 때문에 인간이 개 입하는 프로세스가 없다. 출처: Introduction to Machine Learning
  • 12. 12 머신러닝에서 사용되는 학습방법 (Algorithm) 출처: Reinforcement Learning: What is, Algorithms, Applications, Example 머신러닝을 통해 AI 시스템은 어떻게 스스로 학습을 할 수 있는 것인가? 결론부터 말하자면, 머신러닝은 확률과 통계에 기반하여 어떤 데이터를 분류하거나 예측하는 것이다. 머신러닝에서 사용되는 학습방법은 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning) 및 강화학습 (Reinforcement Learning) 총 세 가지로 분류된다. 출처: Introduction to Machine Learning
  • 14. 14 정형 데이터 (Structured Data) 정형 데이터의 의미 정형 데이터는 데이터 자체 내의 미리 정해진 구조가 존재하며 데이터에 속한 값들은 미리 정해진 데이터 타입이 있는 것이 특징이며, 관계형 데이터베이스에 저장된 데이터들이 대개 정형 데이터이다. 전 세계 기업에서 쓰이는 전체 디지털 데이터 중 약 20%를 차지하고 있다. 출처: Introduction to Machine Learning 출처: Pandas dataframe an example to structured data
  • 15. 15 비정형 데이터 (Unstructured Data) 비정형 데이터의 의미 비정형 데이터는 고정된 구조나 형태가 없는 것이 특징이며, 앞서 언급한 관계형 데이터베이스에 저장되지 않는 정보를 의미하며, 표준 프로 그래밍 방식을 사용하여 처리하기에는 매우 어렵다. 전 세계의 기업에서 사용되는 디지털 데이터 중 80% 이상을 차지하는 데이터이다. 출처: Introduction to Machine Learning 출처: SAP HANA Text Analysis
  • 16. 16 정형 데이터 vs 비정형 데이터 정형 데이터와 비정형 데이터간 비교 관계형 데이터바이스에 저장된 형태냐 아니냐에 따라 정형 데이터인지 비정형 데이터인지 판단할 수 있다. 기업 내에 사용되는 데이터 중 정형 데이터는 관리가 용이하고 변경 및 삭제가 가능해서 이를 활용한 업무 프로세스 개선은 활발히 이루어지고 있는 반면, 비정형 데이터의 경우 관리하기도 어렵고 이를 분석하기도 쉽지 않아 기존 관계형 데이터베이스가 아닌 인메모레 데이터베이스와 같은 고성능 빅데이터 분석용 데 이터베이스를 활용해 이 데이터들을 활용할 방안에 대해 연구하기 시작했고 머신러닝 및 딥러닝 기술의 발전과 더불어 점점 비정형 데이터를 정제해서 모델링한 후 기업 내 경영에 활용하는 사례가 점점 증가하고 있다. 출처: Mining unstructured data using machine learning 출처: Structured Data vs. Unstructured Data: what are they and why care?
  • 17. 17 반정형 데이터 (Semi-structured Data) 반정형 데이터의 의미 반정형 데이터는 JSON 또는 XML 파일처럼 고정된 구조로 연결된 데이터라고 보면 되며, 사실상 여러분들이 보는 SNS의 Feed의 경우 대부분 반정형 데이터라고 볼 수 있다. 출처: Introduction to Machine Learning
  • 18. 18 데이터의 차원 (Dimension of Data) AI 분야에서 사용되는 데이터의 차원은 인간이 인지할 수 있는 차원보다 더 높다. 보통 사람이 인지할 수 있는 차원은 3차원인데 실제 AI분야에서 쓰는 데이터의 차원은 3차원 이상이라 시각화를 하려면 차원을 축소해서 보여 준다. 고차원 데이터의 패턴은 인간의 눈으로 확인하긴 어렵다. 출처: Introduction to Machine Learning
  • 19. 19 차원의 표현 (Dimension Representation) AI 분야에서 사용되는 데이터의 차원을 표현하는 용어가 따로 존재한다. 차원이 0인 데이터를 Scalar라고 표현하며 1인 경우 Vector, 2인 경우 Matrix, 3부터는 Tensor로 표현한다. 또는, Tensor의 최소 차원이 3차원이므로 이를 기준으로 Scalar를 0D Tensor, Vector를 1D Tensor, Matrix를 2D Tensor로 표현하기도 한다. 출처: Introduction to Machine Learning 출처: [딥러닝]02.신경망을 위한 데이터 표현
  • 21. 21 머신러닝 프로세스 (Machine Learning Process) 출처: Introduction to Machine Learning
  • 22. 22 머신러닝 워크플로우 (Machine Learning Workflow) 출처: Workflow of a Machine Learning project 출처: What is Machine Learning?
  • 23. 23 End-to-End ML Workflow 출처: End-to-End ML Workflow with Python
  • 24. 24 End-to-End ML Workflow (Unstructured Data) 출처: End-to-End ML Workflow Unstructured Data를 이용할 때는 Machine Learning Algorithm 중 Neural Network 만 사용!
  • 25. 25 머신러닝 종류 (Types of Machine Learning) 출처: https://swalloow.github.io/pyml-intro1
  • 26. 26 머신러닝 알고리즘 (Machine Learning Algorithms) 출처: Workflow of a Machine Learning project
  • 27. 27 Supervised vs Unsupervised 출처: Supervised Learning vs Unsupervised Learning. Which is better? 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning)간 비교 지도학습은 data의 태그에 정답을 의미하는 정확한 label이 부착된 labeled data를 가지고 학습을 해서 test data가 들어왔을 때 AI가 그 데이 터가 어느 labelled data와 일치하는지 여부를 판단하는 학습방법을 의미한다. 즉, 정답을 미리 정해놓고 학습을 시키는 방법이라고 보면 된다. 실생활에서 이메일이 스팸메일인지 정상적인 메일인지 판단하는 문제를 해결할 때 이 학습방법을 사용한다. 비지도학습은 label이 없는 Unlabeled data를 가지고 학습을 해서 이 데이터로부터 숨어있는 형태나 패턴을 찾아내기 위한 학습방법을 의미한 다. 비지도학습에 비해 정답이 없는 데이터로부터 미래를 예측해야 하기 때문에 훨씬 어려운 학습방법이다. 실생활에서 법률 계약서에서 공통적 인 문법을 가진 특징에 기반하여 계약들을 여러 개의 그룹으로 그룹화해야 할 때 이 학습방법을 사용할 수 있다.
  • 28. 28 Supervised Learning - Classification 출처: GIF: www.cs.toronto.edu 지도학습(Supervised Learning)에 속한 Classification의 의미 Classification은 지도학습에 속한 학습방법으로서 데이터를 주어진 카테고리에 따라 분류하는 문제를 의미하며 최근에 많이 사용하는 이미지 분류도 Classification에 속한다. 보통 분류 문제를 말할 때 정답이다 아니다라고 분류를 하는데 이를 Binary Classification이라고 칭한다. 그 러나, 분류 문제는 꼭 정답이다 아니다의 문제로만 보는 게 아니라 학생의 전공 점수가 Pass 냐 Fail로 예측하는 문제도 분류 문제에 속하며 역시 Binary Classification으로 볼 수 있다. 이외에, 학생의 전공점수를 A/B/C/D/E로 분류해야 하는 문제는 Multi-label classification이라고 한다.
  • 29. 29 Logistic Regression (로지스틱 회귀) 출처: GIF: www.cs.toronto.edu 분류(Classification) 측면에서 Logistic Regression의 의미 쉽게 말해서 어떤 구간까지를 변수로 보는 범주형 변수를 다음 장에 언급할 회귀(Regression) 문제, 더 자세하게는 다중 선형 회귀(Multi- linear Regression)으로 보고 풀기는 어렵기 때문에 등장한 개념이며, 종속변수인 범주형 변수를 단순히 범주 1이 아니라 범주 1이 될 확률로 보고 문제를 푸는 것을 의미합니다. 보통 범주가 2개인 문제를 풀 때 종속변수가 연속형 변수가 아닌 범주형 변수일 때는 회귀 모델을 적용할 수 없으므로 범주 1이 될 확률로 치환하 고 이를 식으로 치환하면 Logistic Function의 형태가 나타나기 때문에 Logistic Regression이라는 이름이 붙은 것이다. 범주가 2개인 문제 를 풀 때는 범주 1에 속할 확률이 있다 아니다라는 식으로 분류를 하기 때문에 이항 로지스틱 회귀라고 부르며 이것은 Binary Classification에 속합니다. 출처: 로지스틱 회귀 Fully connected neural Network에 Activation Function으로 Sigmoid를 쓰면 이항 로지스틱 회귀임 Neural Network
  • 30. 30 실습 - Logistic Regression 금융 분야에서 Logistic Regression 활용 사례 고객이 정기 예금에 가입할 것이냐 말 것이냐에 대해 Logistic Regression 을 활용해 모델을 만들고 예측해보는 것에 대해 코드를 보고 실행해 보면서 가볍게 살펴볼 것이다.
  • 31. 31 Supervised Learning - Regression 출처: GIF: Introduction to Linear Regression 지도학습(Supervised Learning)에 속한 Regression의 의미 Regression도 지도학습에 속한 학습방법인데 Classification과 달리 고정된 값이 아니라 연속된 값을 예측하는 문제를 의미하며 주로 어떤 패턴 이나 트렌드를 예측할 때 이 학습방법을 사용한다. 실생활에서 집의 크기에 따른 매매가격을 예측을 할 때 이 학습방법을 사용할 수 있다.
  • 32. 32 Linear Regression (선형 회귀) 출처: 머신러닝 알고리즘: 선형회귀 회귀(Regression)문제 해결 측면에서 Linear Regression의 의미 앞서 언급한 지도학습에 속한 회귀 문제를 해결을 할 때 반드시 알아야 될 개념이 Linear Regression이며 간단히 말하자면 y = WX + b 라는 형 식으로 선형 함수를 만들고 이 함수가 그려내는 직선을 바탕으로 예측을 하는 것을 말한다. 선형 함수가 그려내는 직선에 모든 데이터들이 걸쳐있다면 예측값과 실제값의 차이가 0이므로 완벽한 예측을 한 셈인데 실제로는 그렇게 데이터 가 분포하지 않아서 데이터가 위치한 점과 직선의 점과의 차이를 에러로 보고 이 에러를 최소화시키는 목적으로 예측을 하게 된다. 이를 넓이로 보 기 위해 실제 데이터의 y값과 예측 데이터의 y값의 차이를 제곱해서 square error라는 구한 후 각각의 square error를 데이터 개수로 나눈 mean square error를 최소화시키는 목적으로 모델을 만들어서 훈련시키는 것이다. 넓이로 보는 이유는 딥러닝 알고리즘인 Gradient Descent 의 Back Propagation을 수행할 때 계산이 용이하게 가중치로 편미분할 수 있기 때문이다.
  • 33. 33 Linear Regression (선형 회귀) 출처: 머신러닝 알고리즘: 선형회귀 회귀(Regression)문제 해결 측면에서 Linear Regression의 의미 또한, 실제값과 예측값의 차이를 제곱해서 평균낸 개념을 cost function(비용 함수 또는 오차 함수)라고 하는데 이는 최소화될 목적을 갖고 있다 고 해서 목적 함수(object function)이라고 부른다. cost function을 최소화할 수 있도록 직선을 그리는 것이 모델을 훈련시키는 것이며 이 훈련에 사용되는 알고리즘 Gradient Descent 알고리즘 이다.
  • 34. 34 Unsupervised Learning - Clustering 출처: Clustering with Scikit with GIFs 비지도학습(Supervised Learning)에 속한 Clustering의 의미 Clustering은 비지도학습에 속한 학습방법으로서 Unlabeled data인 여러 개의 입력 데이터가 주어졌을 때 Cluster로 그룹화해주는 학습방 법을 의미한다. 실제로 이 데이터의 label이나 category가 무엇인지 알 수 없는 경우가 많기 때문에 이러한 학습방법은 중요하다고 볼 수 있다.
  • 35. 35 Reinforcement Learning 출처: https://swalloow.github.io/pyml-intro1 강화학습(Reinforcement Learning)의 의미 Reinforcement Learning은 앞서 언급한 지도학습과 비지도학습과는 완전히 다른 개념으로서 데이터가 정답이 있는 것도 아니고 주어진 데이 터가 없을 수도 있다. 이 학습기법은 자신이 한 행동에 대한 “보상”을 알 수 있어서 그로부터 학습하는 것을 의미한다. 예를 들면 아이가 걷는 것을 배우는 것처럼 어떻게 행동할 줄 모르지만 환경과 상호작용하며 걷는 법을 알아가는 것과 같은 학습방법을 Reinforcement Learning이라고 한다. Reinforcement Learning은 게임에 적용이 많이 되고 있고 아타리 게임을 예로 들자면 학습대상(agent)는 움직이면서 적을 물리치는 존재이 고 이 학습대상은 움직이면서 적을 물리치면 보상(reward)를 받게 된다. 이러한 과정을 반복학습 (Trial and Error)를 통해 점수를 최대화하는 것이 목표가 된다.
  • 36. 36 머신러닝 프레임워크 (Machine Learning Framework) 출처: Which Machine Learning Frameworks To Try In 2019-20
  • 37. 37 End-to-End Predictive Modeling End-to-End Predictive Modeling 소개 및 실습 앞서 언급한 머신러닝 워크플로우에 관련된 작업을 모두 진행해서 예측 모델링을 진행하는 것을 End-to-End Predictive Modeling이라고 하는데 이와 관련된 소스코드를 보면서 어떤 식으로 흐름이 이어지는 지 이해하는 게 이번 실습의 목표이다. 이번 실습을 통해 머신러닝 프로젝트 관련 표준이 된 CRISP-DM의 영역을 다수 커버할 수 있다. CRISP-DM은 Cross-industry standard process for data mining의 줄임말이며 IBM에서 2015년에 출시한 Analytics Solutions Unified Method for Data Mining/Predictive Analytics라고 불리는 방법론의 확장판이라고 볼 수 있다. CRISP-DM은 Business Understanding, Data Understanding, Data Preparation, Modeling, Evaluation, Deployment 총 6단계로 data mining 프로세스를 정의하였다. 출처: End to End — Predictive model using Python framework 출처: Wikepedia
  • 38. 38 End-to-End Predictive Modeling Load Dataset - Data Understanding Pandas 라이브러리로 은행 관련 데이터를 읽어들이고 확인하는 단계
  • 39. 39 End-to-End Predictive Modeling Convert Taget to 1/0 and Descriptive Stats Target의 라벨을 1과 0으로 바꾸고 1과 0의 비율을 확인
  • 40. 40 End-to-End Predictive Modeling Descriptive Stats DataFrame 의 Type 확인 후 연관성 파악을 위해 Seaborn 라이브러리를 이용해 Heat Map 작성
  • 41. 41 End-to-End Predictive Modeling Variable Selection - Vote based approach Modeling 하기 전에 필요한 변수들을 선택하고 정제하는 단계
  • 42. 42 End-to-End Predictive Modeling WOE and IV WOE: Weight of Evidence / IV: Information Value Logistic Regression 에서 진화된 개념으로 신용 위험 모델링이나 고객 이탈 모델링을 연구할 때 쓰는 개념 관련링크: https://skappal7.wordpress.com/2019/09/03/woe-weight-of-evidence-information-value-iv-methods-for- variable-selection-in-machine-learning/
  • 43. 43 End-to-End Predictive Modeling Descriptive Stats - Visualization 최종 선택된 변수들을 이용하여 시각화하여 현재 상태 파악
  • 44. 44 End-to-End Predictive Modeling Descriptive Stats - Visualization 최종 선택된 변수들을 이용하여 시각화하여 현재 상태 파악
  • 45. 45 End-to-End Predictive Modeling Model 머신러닝 알고리즘을 정한 후 모델 생성 및 훈련 단계
  • 46. 46 End-to-End Predictive Modeling Performance Tunning 머신러닝 알고리즘을 써서 훈련된 모델의 예측성능을 높이기 위해 Hyper Parameter를 Tunning하는 단계
  • 47. 47 End-to-End Predictive Modeling Final Model and Model Performance 훈련된 모델 중에 가장 좋은 모델을 선택한 후 다시 훈련 후 성능 평가
  • 49. 49 퍼셉트론 (Perceptron) 단층 퍼셉트론 (Single-layer Perceptron)에서 다층 퍼셉트론(Multi-layer Perceptron)으로의 진화 퍼셉트론(Perceptron)은1957년 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트(Frank Rosenblatt)에 의해 고안된 알고리즘이며 오늘날의 신경망(Neural Network)의 기원이 되는 알고리즘이다. 입력층(Input Layer)과 출력층(Output Layer)만 존재하 는 형태여서 입력층을 제외하고 층이 출력층 1개만 존재하는 단층 퍼셉트론으로 분류된다. 이 퍼셉트론은 입력 벡터를 두 부류로 구분하는 선 형 분류기(Linear Classifier)였다. 퍼셉트론의 경우 선형성(직선 형태)을 띠고 있는 OR Gate, AND Gate, NAND Gate 는 구현가능하지만 비선형성(곡선 형태)을 띠고 있는 XOR Gate를 구현하지 못하는 한계가 있었으며, 결국 입력층과 출력층 사이에 은닉층(Hidden Layer) 1개를 추가한 2층 퍼셉트론이 등장하 면 XOR Gate를 구현해낼 수 있었고 이를 다층 퍼셉트론이라 부른다. 다층 퍼셉트론은 선형성 혹은 비선형성 문제를 모두 학습을 해서 해결할 수 있는 비선형 분류기(Non-linear Classifier)이며 오늘날의 인공신 경망(Artificial Neural Network)의 시초가 된다. 출처: 단층 퍼셉트론과 다층 퍼셉트론 단층 퍼셉트론 구조 선형성을 띤 문제 비선형성을 띤 문제 다층 퍼셉트론 구조
  • 50. 50 실습 (1) - 퍼셉트론 구현 출처: 퍼셉트론
  • 51. 51 실습 (1) - 퍼셉트론 구현
  • 52. 52 실습 (1) - 퍼셉트론 구현
  • 53. 53 딥러닝 - 신경망 (Deep Learning - Neural Network) 신경망(Neural Network)와 딥러닝(Deep Learning)의 의미 Neural Network는 인간의 뇌를 “느슨하게” 흉내내어 설계한 시스템이라고 말할 수 있으며 이전 장에서 언급한 오늘날의 인공신경망 (Artificial Neural Network / ANN)을 통칭할 때 사용되는 용어이다. 인공신경망은 Hidden Layer를 최소 한 개 이상 포함하고 있는데 Hidden Layer 가 1개인 신경망을 Simple Neural Network 혹은 Shallow Neural Network라고 통칭한다. Hidden Layer 안에는 1개 이 상의 뉴런(Neuron)으로 구성이 되어있고 뉴런 안에는 활성화 함수(Activation Function)가 존재하는 것이 특징이며, 이 점이 앞서 설명한 단층 퍼셉트론과 다른 점이다. Hidden Layer 가 2개 이상인 신경망을 Deep Neural Network (DNN) 혹은 Deep Learning Neural Network라고 통칭하며 우리가 말하 는 딥러닝(Deep Learning)은 바로 Hidden Layer가 2개 이상인 Deep Neural Network를 의미하는 용어이다. Neural Network는 데이터 안에서 패턴을 인식하기 위해 많은 연산을 수행할 때 사용되는 네트워크로서 주로 비정형데이터를 다룰 때 많이 사 용된다. Neural Network안의 연산 과정은 각각의 Layer 안에 캡슐화되어 있고, 하나의 Neural Network 안에서 여러 개의 Layer들이 서로 각각 다 연결되어 있다. 출처: Artificial Neural Network (Deep Learning)출처: Introduction to Machine Learning HiddenLayer의수:1개 HiddenLayer의수:4개 노드(Noder)혹은뉴런(Neuron)
  • 54. 54 Fully Connected Neural Networks Fully Connected Neural Networks or Densely Connected Neural Network (기본적인 신경망) ‣ 앞서 언급한 가장 기본적인 Neural Network를 말하며, 이전 Hidden Layer의 모든 노드(Node)가 다음 Hidden Layer의 모든 노드에 연결된 구 조를 가진 Neural Network를 의미하며, 여기서 노드(Node)는 뉴런(Neuron)이란 용어와 뜻이 동일함 ‣ 뉴런(neuron)은 인간의 뇌에서 신경계를 구성하는 기본 단위의 세포를 말하는데, 인공신경망에서는 Hidden Layer를 구성하는 기본 단위가 되고, Hidden Layer는 여러 개의 뉴런을 가질 수 있고, 갯수에는 제한이 없음 ‣ 각각의 뉴런은 weights와 bias로 구성되어 있고, weight의 개수는 이전 레이어의 뉴런 갯수와 동일하고, 여기에 bias가 1개씩 추가된다. ‣ 첫 번째 Hidden Layer의 뉴런은 입력 레이어(Input Layer)를 구성하는 입력 파라메터의 갯수만큼 weight들을 갖게 되고 마지막 Hidden Layer 의 뉴런 갯수는 출력 레이어(Output Layer)를 구성하는 출력 파라메터의 갯수와 같아야 한다. 출처: Quora Input Layer Output Layer Hidden Layer Neuron Input Layer의 파라메터 개수: 4개 첫번째 Hidden Layer의 각 Neuron이 가지는 Weight의 개 수는 4개이고 Bias의 개수는 1개 -> Weight와 Bias 초기값 세팅 Output Layer 의 파라메터 개수: 3개 마지막 Hidden Layer의 Neuron 개수: 3개 세 번째 Hidden Layer의 각 Neuron이 가지는 Weight의 개 수는 5개이고 Bias의 개수는 1개
  • 55. 55 Feedforward Propagation (순전파) Feedforward Propagation ‣ Forward Propagation라고도 불리우며 뉴럴 네트워크 모델(neural network model)의 입력층부터 출력층까지 순서대로 매개변수들 (Parameter)을 계산하고 저장하는 것을 의미함 ‣ 뉴럴 네트워크(Neural Network)의 개별 뉴런에 들어오는 입력신호의 총합을 출력신호로 변환하는 함수를 활성화함수(activation function)라고 하며 역치(threshold value)가 넘으면 산출값을 내놓음 ‣ 활성화함수는 대개 비선형함수(non-linear function)를 사용해야만 하는데, 그 이유는 예를 들어 3층의 네트워크를 선형함수 y(x)=h(h(h(x)))로 표현하면 이 식은 그냥 y(x) = a(x)와 동일한 식이 되어서 hidden layer가 없는 네트워크가 되어버리므로 실질적으로 층을 쌓는 효과를 누릴 수가 없 어서임 출처: https://databuzz-team.github.io/2018/11/05/Back-Propagation/ 활성화 함수 (Logistic Sigmoid) 활성화 함수 (Softmax)
  • 56. 56 Back Propagation (역전파) Back Propagation ‣ 뉴럴 네트워크의 파라미터들에 대한 그래디언트(gradient)를 계산하는 방법을 의미하며, 미적분의 ’체인룰(chain rule)’에 따라 뉴럴 네트워크의 각 층과 관련된 목적 함수(objective function)의 중간 변수들과 파라미터들의 그래디언트(gradient)를 출력층에서 입력층 순으로 계산하고 저장 ‣ 역전파 계산에 사용될 기본적인 도함수는 Sigmoid, Softmax, Cross Entropy 이며, 예측값(y_pred)와 실제값(y_true)의 차이를 보여주는 오차함 수(cost function)을 weight 와 bias로 미분하여, 매 step에서 weight와 bias들이 크고 작아짐에 따라 영향을 미치는 영향(기울기/gradient)을 보며 weight와 bias를 수정하는 과정임 ‣ Hidden Layer가 많아질수록 보통 Sigmoid함수가 발생시키는 Gradient Vanishing 문제(Input Layer에 가장 가까운 Hidden Layer의 weight 와 bias가 수정이 되지 않는문제) 때문에 보통 Relu로 대체한다. 출처: https://danthetech.netlify.com/DataScience/neural-network-back-propagation-part-2 Back propagating the error (Output Layer-> K Layer2) Back propagating the error (K Layer2 -> J Layer1)
  • 57. 57 Tensorflow Playground - 3 hidden layers/lr = 1.0 출처: Tensorflow Playground Weight, Bias가 전달 Weight, Bias 초기값 세팅
  • 58. 58 실습 (2) - XOR Gate / 3개의 Hidden Layer, Bias 없음
  • 59. 59 실습 (2) - XOR Gate / 3개의 Hidden Layer, Bias 없음
  • 60. 60 Convolutional Neural Networks (CNNs) Convolutional Neural Networks (CNNs) ‣ 앞서 언급한 Fully Connected Neural Network의 경우, 미리 정해진 Feature를 가진 데이터만 원활히 학습 이 되고 시시각각 Feature가 변하는 이미지에서는 학습이 제대로 되지 않는 단점이 있어서 이를 보완하기 위해 만든 Neural Network ‣ 데이터를 구성하는 같은 크기의 일정한 영역들에 대해 작은 특징(Feature)에서 큰 특징으로 추상화 ‣ 필터를 통해 특징들을 추출하여 하나의 Convolutional Layer를 만들고 이 특징들에서 좀 더 복잡한 특징을 추 출하는 새로운 레이어를 추가하는 방식으로 여러 개의 Convolutional Layer들을 연결하고 마지막에는 Back Proprogation을 통해 Parameter 업데이트를 하면서 Neural Network를 학습시키며, 추상화 단계별로 Neural Network가 스스로 학습을 통해 필터를 만들어냄 ‣ 이미지 인식 뿐만 아니라 텍스트 분류에도 사용이 되고 있음 출처: Introduction to Machine Learning 이미지를 구성하는 각 영역에 대해 작은 특징에서 큰 특징으로 추상화 출처: 딥러닝 합성곱 신경망(CNN) 개요
  • 61. 61 Recurrent Neural Networks (RNNs) Recurrent Neural Networks (RNNs) ‣ 기존 Neural Network는 이전 상태를 기억할 수가 없고 이전 상태를 전부 초기화 하고 다시 처음부터 학습을 하는 구조여서 문제가 있었는데, RNN을 통해 이 문제 를 해결하였음 ‣ 일부 Layer들의 Output을 다시 같은 Layer의 Input으로 다시 전달되는 구조이 며 이 Layer의 노드들은 방향을 가진 엣지로 연결된 순환 구조를 가지고 있음 ‣ Memory를 가진 모델로서 Text-To-Speech 분야에 종종 사용됨 ‣ 시간에 관한 구간이 존재하는 Time Series Data를 기반으로 한 학습에 용이함 출처: Introduction to Machine Learning 순환구조 출처: Ratsgo's Blog RNN의 기본구조 Input: ‘hell’ -> Output: ‘hello’ 출처: Understanding LSTMs Unrolled RNN
  • 62. 62 Long Short Term Memory networks (LSTMs) Long Short Term Memory networks (LSTMs) ‣ 새로운 종류의 RNN이라고 보면 되며 기존 RNN의 경우 관련 정보와 그 정보를 사 용하는 지점 사이의 거리가 멀 경우 Back propagation (역전파) 수행시 gradient 가 줄어들어 학습능력이 저하되는 문제가 있었는데 이를 해결한 것이 LSTM임 ‣ RNN의 hidden state에 cell state를 추가한 구조를 지니고 있음 ‣ 과거 정보를 잊기 위한 gate인 forget gate와 현재 정보를 기억하기 위한 gate 인 input gate로 구성됨 출처: Ratsgo's Blog 출처: Ratsgo's Blog Forget gate / Input gate LSTM의 순전파 LSTM의 역전파
  • 63. 63 딥러닝 모델 훈련 (Training a Deep Learning model) 딥러닝 모델 훈련시 알아두어야 할 사항 ‣ Matrix Multiplication (행렬 곱)이 사용됨 ‣ 첫 번째 행렬의 첫 번째 행의 각 요소들은 두 번째 행렬의 첫 번째 열의 요소들과 곱해지고 이 곱한 값들을 서로 더함 ‣ 첫 번째 행렬을 신경망의 입력으로 고려할 수 있고 두 번째 행렬을 이 신경망의 weight으로 볼 수 있음 ‣ VGG16 (16개의 hidden layer를 가진 CNN) 규모가 큰 모델은 weight와 bias에 해당하는 parameter의 수가 140만개 이상임 출처: Introduction to Machine Learning 출처: ResearchGate.net
  • 64. 64 Underfitting and Overfitting 딥러닝 모델 훈련 후 평가시 발생하는 문제 ‣ Model을 생성 후 Training을 시킨 후 이 Model 예측 성능이 너무 나빠서도 안 되고 너무 좋 아서도 안 된다. 정확도 기준으로 100%에 너무 가까워도 문제가 생긴다. 왜냐하면 기존 데이 터에는 학습이 너무 잘 되는데 새로운 데이터에는 학습을 하지 못하는 상황이 발생하기 때문이 다. ‣ Model이 테스트 데이터에 대한 정확도가 너무 떨어지고 필요한 Signal을 충분히 반영하지 못했을 때 Model이 Underfitting되었다고 말하며 정확도가 너무 높은 반면 필요한 noise를 충분히 반영하지 못한 경우 Model이 Overfitting되었다고 말한다. ‣ 보통 데이터를 계속 증가시키고 엄청난 양의 데이터를 넣어서 모델을 Training시키기 때문 에 Underfitting 문제는 생각보다 크지 않은데 Overfitting이 되었을 때 이를 해결한 후 정 확도를 몇%에 맞출 것인지에 대해 고민을 하게 되는데 이는 경험적 접근이라 공식이 따로 없 다. ‣ 보통 Overfitting 방지를 위해서는 데이터를 더 증가시키고 Model의 Hyper Parameter를 Tunning하거나 혹은 X에 해당하는 Feature의 수를 줄이는 방법도 있으며, 이를 방지하기 위 한 Dropout, L1 & L2 정규화 기법도 존재한다. 출처: Overfitting과 Underfitting
  • 65. 65 Overfitting 방지 기법 - L1 & L2 Regularization L1 and L2 정규화 기법 ‣ Model이 Overfitting되었을 경우 가중치(Weights)를 감소시키는 방법을 사용하는데 감소를 시키기 위해서는 정규화(Regularization)을 쓰게 되 며 이 방법에는 L1 정규화 기법과 L2 정규화 기법이 있다. ‣ L2 정규화 : 각 가중치 제곱의 합에 규제 강도(Regularization Strength) λ를 곱한다. 그 값을 손실함수에 더한다. λ를 크게 하면 가중치가 더 많이 감소되고(규제를 중요시함), λ를 작게 하면 가중치가 증가한다(규제를 중요시하지 않음). 가중치를 갱신할 때, 손실함수의 미분값을 이전 가중치에서 빼서 다음 가중치를 계산한다. 따라서 가중치가 크면 손실 함수가 커지고, 다음 가중치가 크게 감소된다. ‣ L1 정규화 : L2 정규화와 달리 가중치의 제곱의 합이 아닌 가중치의 합을 더한 값에 규제 강도(Regularization Strength) λ를 곱하여 오차에 더한 다. 이렇게 하면 L2 규제와는 달리 어떤 가중치는 실제로 0이 된다. 즉, 모델에서 완전히 제외되는 특성이 생기는 것이다. 일부 계수를 0으로 만듦으로 써 모델을 이해하기 쉬워지고, 모델의 가장 중요한 특성이 무엇인지 드러나는 것이다. 그러나 L2 규제가 L1 규제에 비해 더 안정적이라 일반적으로는 L2규제가 더 많이 사용된다. 출처: 오버피팅 억제 L1 & L2 정규화
  • 66. 66 Overfitting 방지 기법 - Dropout Dropout 기법 ‣ Model이 Overfitting되었을 경우 가중치(Weights)를 감소시키는 방법 외에 Hidden Layer의 뉴런(Neuron)을 임의로 삭제하는 기법도 있다. ‣ 드롭아웃(Dropout) 기법은 Model에서 은닉층(Hidden Layer)의 뉴런을 무작위로 골라 해당 뉴런을 임의로 삭제하면서 학습하는 방법이며, 훈련 (Training) 때에는 데이터를 흘릴 때마다 삭제할 뉴런을 무작위로 선택하고, 시험(Testing) 때는 모든 뉴런에 신호를 전달한다. 단, 시험 때는 각 뉴런 의 출력에 훈련 때 삭제한 비율을 곱하여 출력한다. 출처: 오버피팅 억제 Dropout
  • 67. 67 딥러닝 모델 구축 (Building a Deep Learning model) 출처: Introduction to Machine Learning 딥러닝 모델 구축시 알아두어야 할 사항 ‣ 딥러닝 모델의 각 Layer는 Weight와 Bias로 나열되어 있다. ‣ Weight와 Bias들은 딥러닝 모델이 보다 높은 정확도를 가지기 위해 훈련을 하는 동안 수정된다. ‣ Weight와 Bias는 각각 행렬로 구성되어 있다. ‣ 각 iteration 별로 변화되는 양을 learning rate라고 하며 이는 hyper parameter에 속한다.
  • 68. 68 딥러닝 모델 구축 (Building a Deep Learning model) 출처: Introduction to Machine Learning 훈련이 된 딥러닝 모델이 포함하는 것 ‣ 각 Layer들을 서술한 network definition 파일 ‣ 해당 신경망 내에 각 Layer에 대한 Weight과 Bias정보
  • 69. 69 Image Recognition and Deep Learning 이미지 인식(Image Recognition) 종류 ‣ Classification: 이미지 전체를 대상으로 Object의 종류(Class or Label)를 구분 ‣ Localization: 모델이 주어진 이미지 안의 Object 가 이미지 안의 어느 위치에 있는지 위치 정보를 출력해주는 것으로, 주로 Bounding box 를 많 이 사용하며 주로 bounding box 의 네 꼭지점 pixel 좌표가 출력되는 것이 아닌 left top, right, bottom 좌표를 출력함 ‣ Object Detection: 보통 Classification 과 Localization을 동시에 수행하는 것을 말하지만 아래 그림의 경우 이미지 위에 모델이 학습한 Object 위치만 bounding box 로 표현되고 Class 종류는 구분하지 않음 ‣ Instance Segmentation: Object Segmentation 기법을 써서 Object Detection 을 통해 검출된 Object 의 형상을 따라서 Object 의 영역을 표시하고, 같은 Class 더라도 서로 다른 Instance를 구분해주는 기법 출처1: Review of Deep Learning Algorithms for Object Detection 출처2: 이미지 인식 용어 정리
  • 70. 70 모델 배포 (Deployment) 모델 배포와 관련하여 알아두어야 할 사항 ‣ 훈련된 모델은 새로운 데이터에 기반하여 결과 예측을 할 때 사용될 수 있다. ‣ 모델은 Inference 혹은 Scoring을 위해 배포될 수 있다. Inference 혹은 Scoring은 훈련된 모델로 이미지 인식과 같은 실제 서비스를 수행하는 과정을 의미한다. ‣ 모델 배포시 딥러닝 프레임워크의 경량화 버전을 주로 이용한다. 예를 들자면 스마트폰에서도 실행할 수 있게 Tensorflow 대신 Tensorflow Lite 를 쓰는 경우를 말한다. ‣ 모델 배포시 가장 일반적으로 사용하는 방법을 해당 모델과 연결할 Application Programming Interface (API)를 만드는 것이다. 좀 더 기술적 으로 말하자면 RESTful API를 만들어 URL 호출을 통해 모델을 테스트한다. 출처: Introduction to Machine Learning 모델 배포 후 서비스를 하고 있는 실제 사이트 출처: reiinakano.com
  • 71. 71 모델 평가 (Model Evaluation) 모델 평가시 알아두어야 할 사항 ‣ 훈련된 모델에 대해 Inference를 하면 confidence라는 value가 제공이 된다. 그런데 이 value는 해당 예측할 때에만 관련이 있다. ‣ 모델의 정확도(accuracy)는 과거에 모델 훈련에 이용했던 Test Dataset 혹은 Validation Dataset 안의 데이터가 얼마나 정확히 예측했는지에 따라 결정이 된다. ‣ 정확도(accuracy)는 모델(model)과 관련 있고, confidence는 예측(prediction)과 관계가 있다. 출처: Introduction to Machine Learning
  • 72. 72 Training vs Inference Training과 비교하여 Inference 수행시 고려해야 할 사항 ‣ Training 과 달리 Feedforward propagation 수행 후 Back propagation 을 수행하지 않아 Weight와 Bias가 업데이트되지 않는다. ‣ Inference 속도를 고려하여 일부 layer들을 병합(Merge) 혹은 제거(Prune)할 수 있다. ‣ Weight들을 양자화(quantize)를 통해 자연수로 셀 수 있는 양으로 변경할 수 있다. (FP32 -> INT16/8/4) ‣ 신경망(Neural Network)에 대해 속도(speed)에 주안점을 둘 것이냐 아니면 정확도(accuracy)에 주안점을 둘 것인지 고려해서 재설계해야 한다. ‣ 많은 양의 데이터로 모델을 훈련시켰는데 Inference시 너무 적은 데이터가 들어오면 결과를 도출하는 데 있엇 지연시간(Latency)이 길어질 수 있다. 그리고, Throughput은 초단위로 모델 훈련을 위해 처리되고 사용될 수 있는 최대 training sample의 개수를 말하는데 Inference시 이것에 대해서도 고려를 해야 한다. 예 를 들면, 우리가 batch size를 4로 설정 후 DenseNet40을 훈련시켰을 때, 우리는 1초 후 5개의 training step을 끝낼 수 있다. 그리고, 각 training step에서 4개 의 image들이 처리된다. 그러므로, DenseNet40이란 모델을 훈련시키기 위한 throughput 은 초당 20개의 샘플이다. ‣ Latency와 Throughput은 상충관계여서 Latency가 높아지면 Throughput은 낮아진다. 출처1: Discover the Difference Between Deep Learning Training and Inference 출처2: Performance Analysis and Characterization of Training Deep Learning Models on Mobile Devices
  • 74. 74 Tensorflow 2.0 + Keras Tensorflow 2.0 과 Keras 란? ‣ Tensorflow 2.0 은 구글(Google)이 공개한 오픈소스 기반의 머신러닝 프레임워크로서 기업용 머신러닝 솔루션으로서는 독보적인 위치를 차지하 고 있고 사용하기 어려웠던 1.x 버전에 비해 4년간 개발자들의 피드백을 수집하고 이를 반영한 결과, 코딩하기가 훨씬 쉬워졌고 직관적으로 모델을 생성하고 학습할 수 있도록 최적화되었다. ‣ Keras는 프랑소와 쏠레(François Chollet)라는 데이터 과학자가 이끄는 오픈소스재단에서 만든 프레임워크로서 연구자들이 굉장히 선호하는 프 레임워크이며 딥러닝 대회 우승자들 상당수가 Keras를 사용했을 정도로 굉장히 유명한 프레임워크이다. ‣ 구글이 Keras를 만든 오픈소스재단을 전격적으로 인수하였고 Tensorflow 2.0에 아예 Keras가 종속된 라이브러리로 포함이 되어서 이제는 Tensorflow 2.0을 쓰면 자연스레 Keras 프레임워크 기반 라이브러리를 사용한다고 보면 된다.
  • 75. 75 Tensorflow 2.0 + Keras 기초 실습 Tensorflow 2.0 과 Keras 기초 ‣ Tensorflow 2.0 을 통한 연산방법, Linear Regression 관련 기법에 대해 실습한다. ‣ Tensorflow 2.0 에 종속된 Keras를 사용해 Fully Connected Neural Network를 만들어본다. ‣ 그 외에 모델 속도 향상 기법 및 MNIST 데이터셋을 통한 모델 훈련 기법에 대해서도 알아본다.
  • 76. 76 Tensorflow 2.0 + Keras 기초 실습 Fashion MNIST Dataset을 활용한 모델 훈련 (Fully Connected Neural Network) ‣ Tensorflow 2.0 에 종속된 Keras를 사용해 Fully Connected Neural Network를 만들고 Fashion MNIST 데이터셋으로 모델을 훈련시키고 예측하는 것을 해본다. ‣ Fashion MNIST 데이터셋은 10개의 category (class)와 70000개의 흑백이미지로 이루어져있고 각 이미지의 해상도는 28*28이다. 출처: Fashion MNIST Github
  • 77. 77 Tensorflow 2.0 + Keras 기초 실습 MNIST Dataset을 활용한 모델 훈련 (Convolutional Neural Network) ‣ Tensorflow 2.0 에 종속된 Keras를 사용해 Convolutional Neural Network를 만들고 MNIST 데이터셋으로 모델을 훈련시키고 예측하는 것을 해본다. ‣ MNIST 데이터셋은 10개의 category (class)와 70000개의 흑백이미지로 이루어져있고 손글씨로 숫자를 쓴 이미지로서 각 이미지의 해상도는 28*28이다. 출처: 딥러닝하기 5편. 신경망으로 손글씨 숫자 인식
  • 78. 78 Tensorflow 2.0 + Keras 기초 실습 Dogs vs Cats 라는 Kaggle Dataset 기반 모델 생성 후 개와 고양이 구분하기 (Convolutional Neural Network) ‣ 개와 고양이를 구분하는 신경망 모델을 CNN 기반으로 만든 후 개와 고양이를 구분하도록 모델을 훈련시킨다. ‣ 실행을 해보면서 이미지 예측을 더 좋게 하는 기법들을 확인해본다. 출처: Dogs vs Cats (Kaggle)
  • 80. 80 Reference (1) • https://arxiv.org/pdf/1906.04278.pdf • https://blog.exxactcorp.com/discover-difference-deep-learning-training-inference/ • https://juni5184.tistory.com/8 • https://medium.com/zylapp/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852? • http://melonicedlatte.com/machinelearning/2019/06/23/154900.html • https://www.researchgate.net/figure/A-diagram-of-the-deep-learning-training-process-including-the-online-training- component_fig11_317994811 • https://bskyvision.com/163 • https://pythonkim.tistory.com/m/84 • https://ratsgo.github.io/deep%20learning/2017/04/22/NNtricks/ • https://towardsdatascience.com/end-to-end-python-framework-for-predictive-modeling-b8052bb96a78
  • 81. 81 Reference (2) • https://databuzz-team.github.io/2018/11/05/Back-Propagation/ • https://sonofgodcom.wordpress.com/2018/12/31/cnn%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-fully- connected-layer%EB%8A%94-%EB%AD%94%EA%B0%80/ • https://blog.goodaudience.com/most-intuitive-explanation-of-activation-functions-fdf6d9b4a53a • https://towardsdatascience.com/gentle-dive-into-math-behind-convolutional-neural-networks-79a07dd44cf9 • http://taewan.kim/post/cnn/ • https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-7-K-%ED%8F%89%EA%B7%A0- %EA%B5%B0%EC%A7%91%ED%99%94-K-means-Clustering • https://de-novo.org/2018/04/17/%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D- %EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-2-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0%EA%B3%BC- %EC%8B%A0%EA%B2%BD%EB%A7%9D/ • https://de-novo.org/2018/04/17/%ec%9d%b8%ea%b3%b5%ec%8b%a0%ea%b2%bd%eb%a7%9d- %ec%9d%b4%ed%95%b4%ed%95%98%ea%b8%b0-1/ • https://www.samsungsds.com/global/ko/support/insights/091517_CX_CVP3.html
  • 82. 82 Reference (3) • http://aidev.co.kr/deeplearning/782 • https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/ • https://swalloow.github.io/pyml-intro1 • https://www.cs.toronto.edu/~frossard/post/classification/ • https://towardsdatascience.com/workflow-of-a-machine-learning-project-ec1dba419b94 • https://lawtomated.com/supervised-vs-unsupervised-learning-which-is-better/ • http://docs.likejazz.com/lstm/ • https://ratsgo.github.io/deep%20learning/2017/05/14/backprop/ • https://eehoeskrap.tistory.com/137 • https://www.thepythoncode.com/article/use-transfer-learning-for-image-flower-classification-keras-python? fbclid=IwAR3aeeMN4xu8aiHhiK93T7IFM3tixK3T3sObTAYHhF2jiXxorBgtxCc2rBQ
  • 83. 83 Reference (4) • https://ssungkang.tistory.com/entry/ %EB%94%A5%EB%9F%AC%EB%8B%9D02%EC%8B%A0%EA%B2%BD%EB%A7%9D%EC%9D%84-%EC%9C%84%ED%95%9C- %EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%91%9C%ED%98%84 • https://www.ibm.com/ru-ru/events/think-summit/assets/pdf/Ekaterina_Guryankina.pdf • https://www.youtube.com/watch?v=Ilg3gGewQ5U • https://m.blog.naver.com/PostView.nhn?blogId=acwboy&logNo=220614586502&proxyReferer=https%3A%2F%2Fwww.google.com%2F • https://ko.d2l.ai/chapter_deep-learning-basics/backprop.html • https://sacko.tistory.com/38 • http://codepad.org/WFV7rolV • https://ratsgo.github.io/deep%20learning/2017/04/22/NNtricks/ • https://chih-ling-hsu.github.io/2017/08/30/NN-XOR
  • 84. 84 Reference (5) • https://nittaku.tistory.com/284 • https://m.blog.naver.com/samsjang/220955881668 • https://www.tensorflow.org/tutorials/images/cnn?hl=ko • https://acdongpgm.tistory.com/archive/201910 • https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/images/classification.ipynb#scrollTo=KwQtSOz0VrVX • https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8 • https://towardsdatascience.com/setting-up-kaggle-in-google-colab-ebb281b61463 • https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/ • https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/images/classification.ipynb#scrollTo=KwQtSOz0VrVX • https://www.tensorflow.org/tutorials/images/cnn