3. TENSORFLOW의 출현
• 기술의 변천
• CLOUD INFRA → BIG Data → IOT, IOE → 4차 산업혁명
• 통계 모델 (R, SPSS, SAS) → Machine Learning → Deep Learning
• Paradigm Shift
• Solution (해결책) → Optimize (최적화)
• SOA → MSA
4. 딥러닝 Project의 특징
머신러닝 프로젝트
R분석을 통한 PCA(주성분 분석)기반으로 Factor를 찾고 변수의 조정 및 변인의 조절을 통한
변수와의 관계를 규정한 뒤 앙상블 기법을 통한 예측 수행 능력을 확인
딥러닝 프로젝트
Data가 제공하는 factor들의 관계를 Vectorize화 하여 다양한 기법과 알고리즘을 적용하여
다차원 분포를 통한 Matching관계 정립을 한 후 차원 축소를 통한 정밀 분석을 수행 후 모델링화
하여 예측을 수행함
하지만 단순히 알고리즘을 적용하는 것이 아니라 데이터 특성에 맞추어 Customizing이
수반되어야 한다.
5. 딥러닝이란?
• Deep Insight (다양한 Factor들 간의 다차원 관계를 구성)
• Data Generation
• Model Optimization
•HYPER Parameter Tunning
•Accuracy rate
•Prediction
6.
7.
8.
9.
10.
11.
12.
13. Deep Learning Process
• 데이터 로딩 - ( 데이터 생성, 데이터 Agumentation(R-VAE))
• 학습 데이터/평가 데이터로 분리
• 학습 (Training) - DNN, RNN, CNN, VAE 다양한 알고리즘 Customizing
• 평가 - GAN
• 모델 저장 - Accuracy rate확인 및 Data 정제 수행
• 서비스 활용
16. TENSORFLOW PROJECT에서 만나는 문제
• version
• data 정합성 / 실 data 부족 / 현업 및 PM의 데이터에 대한 무지
• optimization
• si식으로 deep learning 프로젝트에 접근하는 개발 문화
17. Deep Learning을 이해하는 첫 걸음
SI 와 Deep Learning의 가장 근본적인 차이는
SI = SOLUTION
DEEP LEARNING = OPTIMIZATION
이라는 것이다
결과와 해결책 보다는 문제를 해결해가는 과정에 초점을 두어야 한다는 것이다
또한 이는 바로 현 시대의 불확실성과 연관이 있으며, 다양성을 인정하고 다름을
수용하는 문화적 기반이 뒷받침 되어야 한다는 의미다.
18. TENSORFLOW 환경 확인
import tensorflow as tf
dir(tf)
tf.__version__
Version확인을 통해 하위 호환성 지원이 되지 않는 tensorflow의 api확인
19. TENSORFLOW VERSION 문제
• Deprecated
• Tensorflow1.0.0
• tf.multiply, tf.subtract, tf.negative 가 추가되고 tf.mul, tf.sub, tf.neg 는 deprecated
• tf.scalar_summary, tf.histogram_summary 같은 summary 연산자가 삭제되고
tf.summary.scalar, tf.summary.histogram 이 추가
• TensorFlow 1.2.0-rc1
• https://github.com/tensorflow/tensorflow/releases
• 적용 스크립트
• http://github.com/Finfra/TensorflowInstallMultiVersionWithJupyter
22. TENSORFLOW 요소
• Operation
• 그래프 상의 노드는 Operation(op)로 불리고, 오퍼레이션은 하나 이상의 Tensor를 받을
수 있다.
• Tensor
• Tensor는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 강에는 텐서만이 전달됨
• Session
• Graph를 실행하기 위해서는 세션 객체가 필요, Session은 오퍼레이션의 실행 환경을
캡슐화한 것
• Variable
• 출처 : https://gist.github.com/haje01/202ac276bace4b25dd3f
25. Why Graphs?
1. 계산 저장 (가져올 값으로 연결되는 하위 그래프 만 실행)
2. 계산을 작은 차동 조각으로 나누어 자동 차별화를 촉진합니다.
3. 분산 컴퓨팅을 촉진하고 여러 CPU, GPU 또는 장치에 작업을
분산시킵니다.
4. 많은 일반적인 기계 학습 모델은 일반적으로 지시 그래프로 이미
가르쳐지고 시각화됩니다
26. GRADIENT DESCENT로 인자 찾아내기
import tensorflow as tf
import numpy as np
# Numpy random으로 100개의 가짜 데이터 2개 만들기
a_data = np.float32(np.random.rand(2, 100))
# Learning Lable은 아래 식으로 산출 (W = [0.1, 0.2], b = 0.3)
b_data = np.dot([0.100, 0.200], a_data) + 0.300
37. TensorBoard를 활용하여 모델을 튜닝할 factor를 찾을 수 있고
이를 통해 bagging과 boosting 여부를 결정할 수 있다.
Bagging(Bootstrap Aggregating)
bootstrap 샘플링 방법을 이용해서 여러개의 트레이닝 데이터를
생성하는 방법이다. 이렇게 생성된 데이터 셋은 하나의 모델을 생성
Boosting
약한 learner들을 합쳐서 강한 learner로 만들어주는 알고리즘을 말한다.
48. Iteration(epoch)
훈련용 사진 전체를 딱 한 번 사용했을 때 한 세대 (이폭, epoch)
만약, 사진 60,000장 중 50,000장이 훈련용, 10,000장이 검사용으로
지정되어 있다고 가정한다.
max_iter에서 훈련에 사진 6,000,000장을 사용하기로 했기 때문에
50,000장의 훈련용 사진이 여러번 재사용되게 됨
6,000,000 / 50,000 = 120 이니 한 사진이 120번 씩 재사용될 것입니다.
이 경우 120 세대(epoch)라고 말합니다.
52. Regularization
Overfitting이나 Underfitting이 일어나는 것을 방지하기 위하여
Regularization을 해야 한다.
이는 Classification Error를 줄이는 것에 목적이 있으며, 그렇기 때문에
Baysian 추론 관점에서의 설명도 가능하다.
file:///C:/Users/Home/Documents/강의%20자료/tensorflow%20강의/
Bayesian%20Learning.pdf
56. CLASSIFICATION VS REGRESSION
• Classification
• Model → Class (categorical data 범주형 데이터)
• Regression
• Model → 실수
• Model → Class (categorical data 범주형 데이터)
• Logistic Regression은 Classfication으로 볼 수 있따.
• 종속 변수가 많을 수록 y값을 에측할 수 있는 방정식을 만들 때 유리하다.
• Jupyter notebook 예제 실행
57. Linear Regression
좌표값들을 생성하기 위해 numpy import
https://github.com/tylee33/tfk-notebooks/blob/master/first-contact-
with-tensorflow/chapter2_regression.py.ipynb
79. Optimizer란?
Data의 특성 및 유형에 따라 어떤 Optimizer를 쓰는가가 성능에 많은
영향을 미친다.
그렇기 때문에 대부분의 논문의 서문에서 전제사항을 통해 Data의
특성과 유형을 정의한다.
Machine Learning에서는 Object의 전처리 수행만으로도 다수의 논문이
출간되었으나, Deep Learining의 도래로 전처리 보다는 선험적인
알고리즘 적용이 선호되고 있는 추세이다.
85. CNN의 활용
Convolution layer 여러 층을 가진 deep learning model
DBN은 overfitting issue를 initialization으로 해결하였지만, CNN은
overfitting issue를 모델 complexity를 줄이는 것으로 해결한다. CNN은
convolution layer와 pooling layer라는 두 개의 핵심 구조를 가지고
있는데, 이 구조들이 model parameter 개수를 효율적으로 줄여주어
결론적으로 전체 model complexity가 감소하는 효과를 얻게 된다.
90. additive and subtractive color combinations
RGB (Red, Green, Blue)는 빛의 혼합 즉
더하면 더할수록 밝아지는 가산혼합인데 반해
CMYK (Cyan, Magenta, Yellow, Black)는
물감의 혼합 즉 더하면 더할수록 어두워 져서
최종적으로 Black이 되는 감산혼합을 의미
CMYK 모드는 밝고 화려한 색은 제대로 표현할 수 없습니다. 잉크의
표현력에 한계가 있고, 특히 모니터와 달리 잉크는 빛을 내지 않기
때문입니다.
즉 RGB모드에서 CMYK 모드로 변환하면 손실되는 색이 있습니다.
손실되는 모든 색들을 회색으로 표시
91. PNG와 JPEG파일의 차이
PNG파일은 비손실압축 방식이라 원본이 훼손되지 않음
JPEG 알고리즘에는 DCT(discrete cosine transform)를 적용한 후 데이터를 줄이기 위해
Quantization(양자화)를 함 쉽게 말하면 자연스러운 색상을 단순화함
양자화를 하면 색수가 줄어듬
이 때 데이터 손실 발생
93. Imagemagick란?
ImageMagick은 이미지를 생성하고 수정하고 변환하는 시스템 툴이다.
대개는 서버에서 업로드된 이미지의 썸네일 버전을 생성하거나 다양한
변화를 주기 위해 사용한다.
공식 사이트 : https://www.imagemagick.org/script/index.php
94. 왜 뜬금없는 Imagemagick?
Image Training Data 표본의 단일성 보장
Image 정제를 통한 Size 축소 및 Training시 퍼포먼스 확보
Linux상에 shell script 작성을 통한 많은 Training Data 처리에 용이함
96. 파일포맷변경
convert image_org.gif image_out.jpg
[설명] image_org.gif 이미지를 image_out.jpg로 바꾼다.
convert image_org.png image_out.jpg
[설명] image_org.png 이미지를 image_out.jpg로 바꾼다.
http://www.imagemagick.org/Usage/를 참고
97. 확대, 축소, 리사이즈
convert image_org.jpg -resize 25%x25% -quality 100 image_out.jpg
[설명] image_org.jpg 이미지를 1/4 축소한 image_out.jpg로 바꾼다.
convert image_org.jpg -resize 800x600 -quality 100 image_out.jpg
[설명] image_org.jpg 이미지를 800x600픽셀로 리사이즈 하지만 비율을
유지하며 큰사이즈 비율 기준으로 image_out.jpg를 생성한다.
convert image_org.jpg -resize 800x600! -quality 100 image_out.jpg
[설명] image_org.jpg 이미지를 800x600픽셀로 강제적으로 바꾸어
image_out.jpg를 생성한다.
98. 회전
convert image_org.png -matte -background none -rotate 90
image_out.png
[설명] 이미지를 90도 회전하고 나머지 영역은 투명하게한다.
convert image_org.png -matte -background none -rotate -15
image_out.png
[설명] 이미지를 -15도 회전하고 나머지 영역은 투명하게한다.
http://www.imagemagick.org/Usage/를 참고
99. 좌우반전, 상하반전
convert -flop image_org.jpg image_out.jpg
[설명] image_org.jpg 이미지를 좌우반전시켜 image_out.jpg 이미지를
생성한다.
convert -flip image_org.jpg image_out.jpg
[설명] image_org.jpg 이미지를 상하반전시켜 image_out.jpg 이미지를
생성한다.
http://www.imagemagick.org/Usage/를 참고
100. 밝게, 어둡게
convert image_org.jpg -sigmoidal-contrast 3,0% image_out.jpg
[설명] image_org.jpg 이미지를 밝게하여 image_out.jpg 이미지를
생성한다.
convert image_org.jpg -sigmoidal-contrast 3,100% image_out.jpg
[설명] image_org.jpg 이미지를 어둡게하여 image_out.jpg 이미지를
생성한다.
http://www.imagemagick.org/Usage/를 참고
101. 자르기(crop)
convert image_org.jpg -crop 800x600+10+20 image_out.jpg
[설명] image_org.jpg를 Left 10픽셀 Top 20픽셀 부터 800x600픽셀까지
자르고 그 결과로 image_out.jpg 이미지를 생성한다.
convert image_org.jpg -crop 800x600+10-30 image_out.jpg
[설명] image_org.jpg를 Left 10픽셀 Top -30픽셀 부터 800x600픽셀까지
자르고 그 결과로 image_out.jpg 이미지를 생성한다.
http://www.imagemagick.org/Usage/를 참고
109. Neural Art
내용 : ‘artistic style’을 learning하는 neural network algorithm
논문 : A Neural Algorithm of Artistic Style
https://arxiv.org/abs/1508.06576
구현 예 : https://github.com/anishathalye/neural-style
참고 자료 : http://sanghyukchun.github.io/92/
110. 구글 이미지 검색 : 임지현 training 시 iteration :
1000
https://www.tumblr.com/search/isobel%20francisco
119. Deep Learing에서의 시계열 개념
Data Mining의 시계열 분석은 예측 자체
Deep Learing에서 시계열은 예측이 아닌 Sequence다.
뇌는 예측과 Sequence가 혼재되어 있다.
예측) 날이 흐리니 비가 오려나? - 내재적/외재적 상호작용
Sequence) 동해물과 백두산이 마르고 - 내재적 흐름
137. JUPYTER NOTEBOOK환경 설정 및 실행
• Command (jupyter notebook --generate-config) 입력
• 사용자 폴더에 .jupyter 폴더 진입
• jupyter_notebook_config.py 열기
• #c.NotebookApp.notebook_dir = '' 열찾기 (179 번째 line 정도) 주석제거
• '' 란 안에 원하는 폴더의 절대 경로 삽입. 단 --> / 로 변경
• 저장 후 jupyter notebook 재실행
139. 의료 영상 분석에 사용하는 알고리즘
https://www.slideshare.net/taeyounglee1447/denoising-
auto-encodersd-a
https://www.slideshare.net/taeyounglee1447/spm12-f-
mri-analysis
140. Bidirectional LSTM과 같이 RNN의 응용에 대한
언급
https://github.com/TensorMSA/tensormsa_jupyter/blob
/master/chap20_hoayi_api_guide/04.nlp/bilstmcrf_txt.i
pynb
141. Tensorflow의 GPU 연동에 대해 궁금합니다.
OpenCL 혹은 CUDA가 지원되는 그래픽카드면
모두 사용 가능한지, 실제 AWS를 통해 제공되는
GPU 연산 유닛은 어떤 타입인지 궁금합니다.
https://aws.amazon.com/ko/ec2/instance-types/
142. 챗봇 구현에 필요한 한국어 논문 모음 공유
https://sites.google.com/site/2016hclt/jalyosil