I can do it!!

He can do! She can do! why cannot me? i can do it!

개발/sk infosec cloud ai 전문가 양성과정

[CNN&비지도학습]SK infosec 클라우드 AI 전문가 양성과정 수업필기본

gogoriver 2020. 9. 8. 20:11

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 의 데이터

  • image
  • 지금 하고 있는 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필터를 적용한게 아니라서 이렇게 나온 것 같다. 다시 해봐야징...ㅎㅎㅎㅎ

비지도 학습의 종류

  1. 비지도 변환
    • 정의 : 특성이 많은 고차원 데이터의 특성의 수를 줄임
    • 차원축소
      • 시각화를 위해 데이터셋을 2차원으로 변경
      • 불필요하다고 생각되면 버리기 -> 차원축소 많이 사용된다 at 비지도
      • 텍스트 문서에서 주제 추출
        • 주제를 뽑는다는 말은 빈도수가 많이 나왔다는 말은 주제로 말할 수 있다.
      • tf : text prequency라는 값을 사용
      • df : document prequency 라는 값을 사용한다.
  2. 군집화
    • 대표적인 예제로는 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

 

【ML Project】Bank Telemarketing Analysis

Explore and run machine learning code with Kaggle Notebooks | Using data from Portuguese Bank Marketing Data Set

www.kaggle.com