install tensorflow + linear regression
TRANSCRIPT
TENSORFLOW개요2016.12.02 (금) 이효정
Index
■ 딥러닝과텐서플로
■ 텐서플로설치
■ 선형회귀분석
– 변수간의관계에대한모델
– 비용함수와경사하강법알고리즘
– 알고리즘실행
딥러닝과텐서플로
딥러닝과텐서플로
딥러닝
■ 신경망알고리즘을주로사용– 퍼셉트론알고리즘
■ CNN과 RNN– CNN(합성곱신경망)
이미지내의물체인식
– RNN(순환신경망) 번역과음성인식
텐서플로
■ 최근의딥러닝연구에널리사용되는라이브러리
텐서플로
■ 기본구조– 데이터플로그래프를사용하여수치연산을수행한다.
그래프의노드 : 수학연산 그래프의에지 : 다차원데이터배열
– 수치연산을기호로표현한그래프구조를만들고처리한다.■ 장점
– CPU, GPU의장점모두이용가능– 모바일플랫폼, 64비트리눅스에서모두이용가능– 텐서보드모듈
많은정보를모니터링하고디스플레이해준다. 참고 : https://goo.gl/6Cyr20
텐서플로 vs 텐서플로서빙
텐서플로
■ 입력된데이터를가지고머신러닝알고리즘을만들어모델을훈련시켜준다.
텐서플로서빙
■ 훈련된모델에클라이언트로부터들어오는입력데이터를반영해준다.
텐서플로설치
#0 파이썬과파이참설치
■ 파이썬설치
■ 파이썬개발환경인파이참설치
#1 docker 설치와환경설정
■ 텐서플로는리눅스에서작동하므로가상머신역할을해주는docker tool box를설치
■ docker quick start terminal실행– docker-machine create vdocker –d virtualbox
최초 1회실행!– docker-machine ls
vdocker의상태가 Running인지확인한다– Stopped이라면 docker-machine start vdocker
■ 터미널종료
#1 docker 설치와환경설정
#2 cmd에서 docker 이미지다운로드
■ cmd 실행■ 아래명령입력 (띄어쓰기에주의한다.)
– FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i
■ docker이미지다운로드 (최초 1회실행!)– docker run –v /c/Users/ML:/home/ML –it python bash
자신의파이참프로젝트경로를제대로써주기
■ 생성된이미지명확인하기
– 확인 : docker ps –a– 삭제 : docker ps rm (image name)
안된다면 docker stop (image name) 하고삭제명령재입력
#3 생성된컨테이너입장
■ 재시동및입장– docker restart (image name)
– docker attach (image name) + Enter (약간의버그!) 안되면 docker start (image name)입력후 attach 실행
#4 텐서플로설치
■ https://www.tensorflow.org/versions/r0.11/get_started/os_setup.html– 자신의컴퓨터환경에맞는명령어수행하여텐서플로설치
■ 완료되면자신의프로젝트폴더로이동하여프로젝트를실행해본다!– cd (path)
– python (file name)
파일명앞부분까지입력하고 Tab키를누르면해당파일명자동완성
#5 설치완료후다시입장하는과정
#6 간단한예제실행: 알고리즘기술 > 세션생성 > 연산실행!
■ placeholder– 프로그램실행중값을변경할수있는 ‘심벌릭’ 변수
■ tensor– 동적크기갖는다차원데이터배열
■ mul()– 텐서조작을위해텐서플로가제공하는많은수학연산함수중하나
■ Session()– 세션생성함으로써프로그램이텐서플로라이브러리와상호작용
Note that…
■ 텐서플로에서연산과데이터에대한모든정보는그래프구조안에저장됨
– 노드 : 수학연산 데이터입력과출력의위치를표현하거나저장된변수를읽고씀
– 에지 : 입력값과출력값으로연결된노드간의관계를표현 + 텐서플로의기본자료구조인텐서운반!
선형회귀분석변수간의관계에대한모델
비용함수와경사하강법알고리즘알고리즘실행
선형회귀분석(linear regression)이란?
■ 변수들사이의관계를분석하는데사용하는통계학적방법
■ 독립변수 xi, 상수항 b와종속변수 y간의관계를모델링■ 단순회귀와다중회귀
– 단순회귀 : 두변수간의관계인경우– 다중회귀 : 여러개의변수를다루는경우
변수간의관계에대한모델 : y = W*x+b■ 이차원좌표계에데이터를생성하는파이썬프로그램작성
■ 위샘플데이터에맞는최적의직선을찾는문제
비용함수(cost function)와경사하강법알고리즘(gradient descent)■ 문제 : 입력데이터로부터출력을추정할수있는학습알고리즘을훈련시키기
– W와 b 두개의매개변수로모델표현가능– 입력데이터 x_data를이용해출력데이터 y_data를만들수있는최적의매개변수W와 b를찾기
비용함수와경사하강법알고리즘
■ 비용함수(=오차함수)– 반복이일어날때마다개선여부를확인하기위해얼마나좋은
(나쁜) 직선인지측정– W와 b를매개변수로받아직선이얼마나데이터에잘맞는지를기준으로오차값을리턴
여기서는비용함수로평균제곱오차(mean square error) 사용– 실제값과알고리즘이반복마다추정한값사이의거리를오차로하는값의평균
– 비용함수최소화 = 적합한모델찾는것
비용함수와경사하강법알고리즘
■ 경사하강법
– 일련의매개변수로된함수가주어지면초기시작점에서함수의값이최소화되는방향으로매개변수를변경하는것을반복적으로수행하는알고리즘
함수의기울기를음의방향으로진행하면서반복적으로최적화수행
거리값제곱 : 양의값을만들기위해 비용함수는미분가능 : 기울기계산해야하므로
– 매개변수(W, b)의초기값에서시작하여W, b를수정해가며비용함수를최소화하는변수값을찾아낸다!
비용함수와경사하강법알고리즘
■ 경사하강법의실제연산– 그래프구성
바닥의 2차원공간 : W, b로구성
– 각점은하나의직선표현
높이 : 해당직선에대한오차– 연산 : 평면의한지점에서시작해더작은오차를갖는직선을찾아이동! 비용함수의기울기를계산
– W와 b에대한편미분연산 기울기는오차가낮은곳의방향을가리킴
알고리즘실행
■ data set 생성■ train에경사하강법적용한옵티마이저할당■ train을여러번반복하여적합한W, b 찾기
#1 data set 생성
#2 경사하강법반복해적합한W, b 찾기
용어정리
■ 학습속도(learning rate)– 텐서플로가각반복때마다얼마나크게이동할것인가를제어
– 크게하면정확성 ↓ (최솟값을지나쳐버릴수있음)– 작게하면시간 ↑ (최솟값찾는데에너무많은반복이필요함)
참고자료
■ 텐서플로첫걸음, 조르디토레스(박해선옮김), 한빛미디어㈜■ 인공지능해커웨이강의자료
■ 텐서플로백서 – http://goo.gl/CNSdsB■ 경사하강법이미지 - http://www.mathworks.com/matlabcentral/fx_files/27631/1/fff.png