cnn 실습
-
복습
- chainer : python으로 작성된 오픈 소스 딥 러닝 프레임워크
- scipy는 머신러닝. 딥러닝의 경우 오픈소스인 chainer, tensorflow, pythorch등을 사용하면 됩니다.
1번째 합성곱의 역할
-
edge or blob 등 저수준의 정보 추출
- 이미지를 한꺼번에 받아들이려고 한다.
- 전체 이미지를 해석하게 된다.
- 그런데 cnn을 통해 이미지를 받아들이기 위해서는
- 첫번째에 edge를 인식하고, 두번째에 texture을 추출하고, 마지막에 특징을 추출한다.
- 각 단계별로 작업하면 이미지의 특징을 추출할 수 있고
- 여기서 filtering된 결과를 확인할 수 있다.
-
im2col이라는 함수
- cnn을 직접 구현할때 기능에 맞춰서 외부라이브러리를 가져다 쓰거나 해야한다
- 왜냐하면 정육면체를 데이터를 쪼개서 연산하기 쉽게 1차 2차 행렬로 변환하는데 이러한 변화(연산)을 할때 필요한 라이브러리라 im2col 이다.
- 그리고 다시 큐브 형태로 변화시켜주는 작업도 해야한다.
-
필터라는 것은 image kernel확인
-
데이터가 계층이 깊어질수록 사물이 가진 특성을 잘 이해한다
-
AlexNetㅇ은 cnn을 바탕으로 한 합성곱 예제이다.
데이터셋의 종류와 사이트
cifar 10
- 10개의 카테고리화된 데이터셋을 말한다.
- 링크
image challenge net
- 이미지 분석 competition이다.
- 링크
cnn의 구조
- conv1. edge+ blob
- conv3. texture
- conv5. object parts
- fe8. object class -> scaler와 filter 적용해서 flat하게
LeNet
-
cnn을 이용한 손글씨 데이터
-
yann lecun이 제안한 최초의 cnn
-
활성화 함수로 sigmoid가 사용되었다
-
32 by 32 의 데이터
-
지금 하고 있는 leNet은 지도학습에 해당한다.
-
cnn은 위 3이나 4처럼 데이터가 그렇게 잘 보이지 않아도 잘 학습할 수 있다.
AlexNet
- AlexNet은 이미지 challenge에서 2012년 우승하였다.
- 당시 cnn자체를 8단계로 구축했고, 오차는 6.7정도 이었다.
- 2015년은 3.57이라는 낮은 오차로 우승하였는데 ms가 팀이었다.
-
기존 mnist는 대략 노드의 갯수가 784000개이다. 즉 78만개정도인 것이다
-
AlexNet은 65만개 정도로 구성되어있고, 두개의 gpu를 기반으로 한 병렬 구조이다.
-
또한 alexnet은 lenet과 달리 relu를 적용하였다.
-
dropout
- 불필요한 특징을 버리는 기법이다.
-
최근에 cnn에서 이해해야할 부분은 relu인 것이다. 그러나 수업시간에는 sigmoid를 많이 사용하였는데 이는 원리 이해를 위해서이었다.
cnn 실습
모델 fit
-
위에는 epoch를 1로 둔 경우이고, 후자는 epoch를 3으로 둔 결과이다.
-
epoch란
- One Epoch is when an ENTIRE dataset is passed forward and backward through the neural network only ONCE
- 즉, 전체 데이터 셋에 대해 한 번 학습을 완료한 상태이다.
- 위 에서 보이듯이 epoch가 1일 경우에는 accuracy 점수가 0.96정도가 나온다.
- 그러나 epoch를 3으로 변경하게 되면 정확도가 0.98로 오른 것을 확인 할 수 있다.
- ml 기본 개념
- 코드 올리기
- param에 대한 값은 pkl로 저장하고 , 이 param을 다시 가져와서 모델의 이미지 값에 저장을 했다.
lena
- lena로 이용하면 칼라 원본으로 사용하면 채널이 맞지 않는다는 말이 뜬다. 그래서 흑백으로 바꾸고 해봐라
-
16개의 필터를 가지고 중간관계의 값을 추출해냄으로서 가지고 있는 결과값을 화면에 표시할 수 있게 되었다
-
나의 경우 위와 같이 출력이 나온다.
mnist를 불러오는 부분 변경해보기
- mnist -> fashion mnist로!
- 정확도는 위와 같이 나왔고,
- 그래프로 그리면 다음과 같다.
- 테스트 이미지로 돌린 것은 아래와 같다. 근데 이게 gray필터를 적용한게 아니라서 이렇게 나온 것 같다. 다시 해봐야징...ㅎㅎㅎㅎ
비지도 학습의 종류
- 비지도 변환
- 정의 : 특성이 많은 고차원 데이터의 특성의 수를 줄임
- 차원축소
- 시각화를 위해 데이터셋을 2차원으로 변경
- 불필요하다고 생각되면 버리기 -> 차원축소 많이 사용된다 at 비지도
- 텍스트 문서에서 주제 추출
- 주제를 뽑는다는 말은 빈도수가 많이 나왔다는 말은 주제로 말할 수 있다.
- tf : text prequency라는 값을 사용
- df : document prequency 라는 값을 사용한다.
- 군집화
- 대표적인 예제로는 social 미이더 사이트에서 비슷한 얼굴로 그룹화하는 것 등이 있을 것이다.
- 정의 : 데이터를 비슷한 것끼리 그룹화
- 결론적으로 위는 데이터를 분석하는데 필요한 사전 작업이라고 할 수 있다.(차원 축소)
- 또한 지도 학습의 전처리 단계로 알려져 있다.
차원축소
- 비지도 학습에서의 시각화, 데이터 압축, 지도 학습을 위한 전처리를 위해 데이터 변환
- 차원축소 -> 주성분 분석 (PCA) : 상관관계가 없이 만들어 지는 것
- 특성들이 통계적으로 상관관계가 없도록 데이터셋을 회전시키는 기술이다.
비음수 행렬 분해
-
NON NEGATIVE MATRIX FACTORIZATION
-
음수가 아닌 성분과 계수를 추출 -> 유용한 특성을 추출하기 위한 알고리즘
-
차원감소용으로 씀
-
EX) 문서 분류 , 여러사람의 목소리가 담긴 오디오 트랫, 여러 악기로 이뤄진 음악처럼 독립된 소스를 추가하여 만들어진 데이터에 유용하다.
-
행렬곱을 만들때 음수가 아닌 데이터의 특성에만 적용된다.
-
그래서 이걸 거꾸로 풀어가서(역전파)하는 알고리즘을 음수가 아닌 데이터 에만 추출한다!!!!
-
PCA와의 비교
- PCA는 새로운 특징셋이 원본 특징과 어떤 관계를 가지는지 해석 불가능
- NMF는 새로운 특징셋이 등장해도 어떤 관계를 가지는지 확인 가능하다!
-
비음수 행렬 분해를 위해 똑같이 FACE를 적용한다고 가정해보자!
-
-
그럴때 새로운 가중치를 가진 것을 가지고 이미지를 만들어 줬다고 가정!
-
PCA는 그럼 핑크색이 -, 검정이 +로 생각해보자
-
징점) 정확하게 어떤 요소가 사용되었는지 받아낼 수가 있다!
-
TF : TEXT FREQUENCY
-
DF : DOCUMENT FREQUENCY
-
- PCA와 NMP의 차이
- PCA : 최대 분산의 방향을 주성분이라 하여 성분간의 우열이 있음
- NMP : 특성이 양수이기만 하면 성분의 우열이 없이 특징을 나눈다
- 또한 PCA와 달리 성분의 개수를 줄이면 특정 방향이 제거될 뿐만 아니라 전체 성분이 완전히 바뀌어 버린다.
-
예고
-
문서 데이터에서 주제 모델링하기
-
20개의 뉴스 그룹 데이터 세트 사용, 어떤 주제가 생성되는지 확인하기
-
실습할 예정이다. 공부..하고 와야게따.
-
BANK로 할것이다.
-
OLD VERSION말고 ADDITIONA로 가져와라
-
어떤 카테고리로 변경할 수 있는지 확인해보기
- [캐글 정리본]
-
https://www.kaggle.com/yufengsui/ml-project-bank-telemarketing-analysis
'개발 > sk infosec cloud ai 전문가 양성과정' 카테고리의 다른 글
[PYTHON 머신러닝]SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.11 |
---|---|
[CNN&비지도학습]SK infosec 클라우드 AI 전문가 양성과정 실습 (0) | 2020.09.08 |
[pandas를 활용한 데이터분석]SK infosec 클라우드 AI 전문가 양성과정 실습과제 (0) | 2020.09.08 |
[pandas를 활용한 데이터분석]SK infosec 클라우드 AI 전문가 양성과정 수업필기본 (0) | 2020.09.08 |
[Pandas를 이용한 데이터 분석mnist-fashion, svm, decision tree]SK infosec 클라우드 AI 전문가 양성과정 수업 실습내용 (0) | 2020.09.08 |