I can do it!!

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

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

[PYTHON데이터분석 2020/09/07-1] SK infosec 클라우드 AI 전문가 양성과정 수업필기본

gogoriver 2020. 9. 7. 22:53

ML

과대적합과 과소적합

과대적합

  • predict에서 검증용 데이터를 다룬다
  • 학습은 아주 잘했는데. 예측단계에서 정확도가 떨어지는 경우가 있다.
  • 이러한 경우를 과대적합이라고 한다.
  • 선형 알고리즘
  • y = wx + b
  • h에 f가 들어갔을 때 예측값은 y로 표기
  • 그래서 캐럿마크를 올려 y hat이라고 부른다.

과소적합

  • 의미없는 dummy data를 가지고 한다.
  • 지도학습이기 때문에 분류학습과 회귀작업에 대해서 각각 2개씩 데이터 세트가 제공된다.
  • 총 4가지 값을 가지고 설계하고 있다.
  • mglearn

    • 교재에서 사용하는 dummy data를 가지고 온다
    •  

cnn

  • 일반 신경망

    • 일반 신경망에서는 이미지 데이터를 그대로 처리한다

    • mnist할때 격자 모양을 생각하면 편하다.

    • 이미지 전체를 하나의 데이터로 입력 처리한다.

    • 그러나 이 경우 이미지 위치가 달라지거나 왜곡된 경우에는 올바르게 작동하지 못한다.

    • 즉 위치를 기억하고 있는게 신경망 학습이었는데, 이게 위치가 달라지면 정상적으로 작동 x


    • 오차를 계산하기 위한 역전파를 계산한 후에 다시 학습하는 과정을 겪는다.
    • 이것도 메모리가 오래 사용된다.
    • 그러나 왜곡이 생기는 경우 올바르게 작동하지 못한다.
    • 이게 문제점이었다.

  • 이걸 해결하기 위해 합성곱 신경망이 탄생하였다.

  • 필터를 사용해서 이미지의 특징을 추출한다.

    • 이게 무슨 뜻이냐면 사람 이미지 중 사각형을 필터라고 했을 때, 이러한 모양이 들어갔던 위치를 찾는 것이다.
    • 원본이미지에 필터이미지, 필터 모양과 원본 이미지를 곱해서 새로운 영역의 이미지를 찾아내는 것이다.
    • mnist가 ann이다.
    • fc

  • activate function이 활성화 함수이다
    • sigmoid를 사용했음(0~1, s자)
    • 그 이후에 relu를 소개했다.
    • 그 외에 tangent(-1~1)이 있다.
    • relu는 1이하의 값은 다 0으로 만들어준다.
    • fully connected이기 때문에 ac를 쓰고 softmax이던, relu이던 사용한다.
    • one hot encoing도 중요하다.
    • 최종적으로 끝낼 것이 아니라 오차 함수를 거쳐서 계산을 하고, 이 과정을 최적화 과정이라고 한다.
    • 경사하강법 등이 있는데 기억하기 어려우면 adam만 기억하자(최고로 성능 좋은 optimize이다.)
    • nenural network 내용 꼭꼭꼭 기억하기!!

  • cnn은 필터를 가지고 부분적인 추출을 하게 된다.

  • 이게 convolutional계층이라소 conv계층이라고 한다.

  • 이것을 가지고 처음 인식된 계층을 가지고

  • relu(activation)을 하고

  • pooling 이라는 계산된 과정을 한개로 합쳐주는 과정을 거친다.

  • 최종적으로 한번 fully connected 과정을 거치게 된다.

  • 정확도는 높을 수 있지만 시간은 오래걸린다.

  • 그러니 cpu성능이 좋은 컴을 쓴느게 좋다.

  • fully connected의 문제점

    • 입력 데이터와 가중치가 1대 1로 대응
    • 데이터의 형상이 무시
    • 3차원 데이터를 1차원데이터로 변경한다.
      • 연산이 많아진다.
      • quiz 3차원 데이터인 mnist를 몇번 해야하는가?
        • 784* 3 = 2352
  • convolutional neural network(합성곱 계층)

    • 형상 유지
    • 입출력 데이터는 다차원
    • 위치 데이터가 아닌 특징 데이터를 검출
    • featrue map : 입출력 데이타

https://setosa.io/ev/image-kernels/

  • 커널과 필터는 같은 의미로 쓰인다.
  • 왼쪽 상단에 9개의 feature가 들어갔다.
  • 각각 필터의 수치를 볼 수 있다.
  • identity, blur등 많당
  • 여기서 filter의 값을 확인하면 좋겠지유?

ㅇㅇㅇㅇㅇㅇㅇㅇ.png

  • 필터 연산을 통해 하나의 데이터로 나오게 된다.

  • 결론적으로 우리가 한 연산은 이미지가 작아질 수 밖에 없다. 그리고 이걸 하나의 값으로 합친다.

  • 중간의 필터(커널)을 이용해서 간단한 특징을 추출한다

  • 추출한 특징을 새로운 합성곱 레이어를 생성한다.

  • 마지막에는 1차원 데이터 처럼 쭉 늘려서 fully connected로 바꾸고, 이를 단 평면적으로 만든다.

  • 그리고 output layer을 가져온다.

ㅇㄹ.png

convolutional 값의 구성

  1. CONV(Convolution)

    • 필터(= 가중치들의 집합)
    • 이러한 데이터들의 총 합을 구하는게 convolution 연산!
    • 이 작업을 통해 우리는 feature을 추출하고자 한다!
    • conv계층에서 필요한 값에 연산을 다 한다
  2. POOLING

    • CONV계층을 압축하는 단계이다.(입력값이 CONV)
    • 어떻게 압축하느냐에 따라 MAX, AVERAGE. MIN등으로 구분
    • 데이터 연산량을 줄이는 역할을 한다.

CNN 계산하는 법

  • image.png

STRIDE

  • 필터를 적용하는 간격이다.
    • 저 예제는 STRIDE가 1인 상황이다.
    • STRIDE가 2일때는 어떠한 결과가 나오는가?
    • 계산해봐라

SIMPLE QUIZ1

  • 한번 해보기!

FLOW 이해 PAGE

image.png

  • __ 즉 POOLING은 압축(가중치, 편향 적용)을 하는 것이다__
  1. Max Pooling
    • activation map을 추출한 다음 그 안에서 가장 큰 값 을 뽑는 것
    • 장점
      • 전체 데이터의 사이즈가 줄기 때문에 컴퓨터 연산이 적게 소요
      • 오버피팅을 방지

simple quiz2

  • 풀어보기 시험 개삘

PADDING

  • 원본 이미지에 필터를 적용하면 이미지가 작아지고, 특징이 많이 유실된다. 이를 위해서 적용한다.

  • 입력 전 이미지의 주위를 0으로 채워 이미지를 키우는 것

  • 출력 크기를 조정할 목적으로 사용

  • 따라서 cnn이란 paddingstride 를 적용한 합성곱 연산이다!


  • stride를 키우면 -> 출력의 크기는 작아짐
  • padding을 키우면 -> 출력의 크기는 커짐

image.png

  • ex2)
    • 입력 (7,7) 스트라이드 = 1 , 패딩= (?,?), 필터 = (3,3)
    • 정답은 패딩은 (1,1)
    • 공식 : (7+2x-3)/1 +1 = 7

window는 kernel이랑 같다. 이거 짱 중요하다

  • 입력값이 필터에 어떻게 적용되는지 확인할 수 있는 시간 중요하다
  • 필터에는 가로필터, 대각선 필터, 세로 필터 등으로 구분 가능!