SparataCodingClub_/[Machine Learning]

4주차 개발일지

Jieon_ 2021. 7. 26. 17:58

4.1 Convolutional Nerual Networks (합성곱 신경망)

1. 합성곱 (Convolution)과 합성곱 신경망

  • 합성곱
    : 입력 데이터와 필터의 각각의 요소를 서로 곱한 후 다 더하면 출력값이 되는 것

  • 합성곱 신경망 (CNN)
    : 위의 합성곱을 이용한 신경망 디자인은 합성곱 신경망이라고 명칭하였고, 이미지 처리에서 엄청난 성능을 보인다.

2. Filter, Strides and Padding

  • 5x5 크기의 입력이 주어졌을 때, 3x3 필터를 사용하여 합성곱을 하면 3x3 크기의 특성맵(Feature map)을 뽑아낼 수 있다. 필터(Filter 또는 Kernel)를 한 칸씩 오른쪽으로 움직이면 합성곱 연산을 하는데, 이때 이동하는 간격을 스트라이드(Stride)라고 한다. 
    출처 : https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning
  • 패딩(Padding 또는 Margin)을 주어 스트라이드가 1일 때 입력값과 특성맵의 크기를 같게 만들 수 있게 한다

출처 : https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning

 

4.2 CNN의 구성

  • 합성곱 신경망은 합성곱 계층 (Convolution layer)과 완전연결 계층 (Dense layer)을 함께 사용한다.
  • 합성곱 계층 + 활성화 합수 + 풀링을 반복하여 핵심적인 특성을 뽑아내는데, 이때 풀링 계층(Pooling layer)은 특성 맵의 중요 부분을 추출하여 저장한다.
  • Pooling 에는 Max pooling (최대값을 빼낸다) 과 Average pooling (평균을 빼낸다) 가 있다.
  • 평탄화 계층을 사용하여 2차원을 1차원으로 펼치는 작업을 하여 완전연결 계층과 연결할 수 있게 한다.
  • 평탄화 계층을 통과하여 완전연결 계층에서 행렬 곱셈을 하고 완전연결 계층 + 활성화 함수의 반복을 통해 노드의 개수를 축소시키다가 마지막에 Softmax 활성화 함수를 활용하여 출력층으로 결과를 출력한다.

4.3 Transfer Learning (전이학습)

1. 전이학습
   : 과거에 문제를 해결하면서 축적된 경험을 토대로 그것과 유사한 문제를 해결하도록 신경망을 학습시키는 방법

2. 특징

  • 빠른 수렴
  • 더 높은 정확성
  • 상대적으로 적은 데이터셋으로도 좋은 결과 확보

4.4 Recurrent Neural Networks (순환 신경망)

  • RNN은 은닉층이 순차적으로 연결되어 순환구조를 이루는 인공신경망이다.
  • 음성, 문자 등 순차적으로 등장하는 데이터 처리에 적합하다.

4.5 Generative Adversarial Networks (생성적 적대 신경망)

1. GAN
: 서로 적대(Adversarial)하는 관계이 2가지 모델(생성 모델과 판별 모델)을 동시에 사용하는 기술

  • 생성모델 (위조지폐범) : 경찰도 구분 못하는 진짜 같은 위조지폐를 만들자!
  • 판별 모델 (경찰) : 진짜 지폐와 위조 지폐를 잘 구분해내자!

이 모델이 지속적으로 진행되게 되면, 위조지폐범은 더더욱 판별이 어려운 위조 지폐를 만들고, 경찰은 그것을 더 잘 판별하게 되면서 서로 발전하는 관계가 된다. 그 결과, 원본과 구별이 어려운 가짜 이미지가 만들어지게 된다.

4.6 CNN 실습

https://colab.research.google.com/drive/1v76lv-qWe_fR6iWLqqxFVpN4_yWm2n62

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

4.7 전이학습 실습

https://colab.research.google.com/drive/1kf1pKAyytLOSIadzkkOih1Fr3XBb2bGd#scrollTo=jBYVnqcJ4vSi

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

4.8 4주차 과제

https://colab.research.google.com/drive/19JWWMrANb8MDVDItw1R28Xm7gArf4cd2#scrollTo=u4mz5YvGbv_m

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

'SparataCodingClub_ > [Machine Learning]' 카테고리의 다른 글

3주차 개발일지  (0) 2021.07.24
2주차 개발일지  (0) 2021.07.24
1주차 개발일지.  (0) 2021.07.17