코딩 기록들
CNN 본문
딥러닝
-hidden layer 와 활성화함수는 짝꿍
- loss로는 cross-entropy? 사용
손실함수 loss function
- 모델을 통해 나온 예측값과 실제데이터 정답의 차이를 수량화하는 함수
- 훈련하는 동안 최소화될 값으로 이 값을 바탕으로 파라미터(가중치 & 편향)를 업데이트함
* 해결하려는 문제 종류 따라 표준적인 loss function 존재 *
1. 이진분류
- 두개의 클래스 분류 ex.양성음성 판단
- binary cross entropy loss 젤많이 사용, BCELoss 도 사용함
2. 다중 클래스 분류
- 두개이상의 클래스 분류 ex. 사과 바나나 포도 과일 분류
- cross entropy loss
3. 회귀
- 연속형 값을 예측 ex.주가예측
- Mean squared error
CNN 기원
- 고양이 시각피질 검사 : 시각피질의 뉴런이 어떻게 작동하는지 알아보기위해 고양이 시각피질 반응에대한 실험을 진행 : 고양이에게 단순한 모양의 방향 가진 그림 보여주고, 시각피질의 반응을 살펴본다. 이런 패턴에따라 뉴런에대한 정보가 다르다는 사실을 알게된다
CNN ?
- 딥러닝에서 주로 이미지나 영사엗이터 처리할때 쓰임.
- conveolution이라는 전처리 작업이 들어가는 Neural Network 모델
왜 쓰이기 시작했는가
-DNN 의 문제점에서 출발 : DNN은 1차원데이터 사용하기때문에 flatten 과정에서 데이터 손실 생김
- CNN 은 DNN과 다르게 이미지의 날것 그대로 받으며 공간적/지연적 정보 유지한채 특성들의 계층을 빌드업한
-CNN의 중요 포인트는 이미지 전체보단 부분을 보는것, 그리고 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는것
CNN 주요 컨셉
1. Convoution
- 2차원 이미지는 픽셀단위로 구성되어있음
- 이미지는 Mnist dataset에서 추출한 샘플중 하나임. 손글씨로 쓰여진 8 의 gray scale
- 이 데이터의 입력값은 28*28 matrix(행렬)로 표현할수있다 : 즉, 2차원 이미지를 matrix 로 표현할수 있다는 뜻
- 이렇게 우리가 넣어줄 입력값은 matrix로 표현된 이미지
- Convolution 작동원리
- 작동원리 : 이미지와같이 5*5의 matrix로 표현된 이미지의 입력값이 있다고 가정. CNN에는 필터(3*3)(커널)이 존재.
- 3*3 크기의 필터
- 이 하나의 필터를 이미지 입력값 전체적으로 훑어준다고 생각.
즉, 입력값 이미지의 모든 영역에 같은 필터를 반복적용해 패턴을 찾아 처리하는것이 목적.
- 이렇게 이미지위에 필터를 훑어줄때 연산처리(matrix 와 marix 간 내적공간(inner product) 사용)를 해줄때 떤일이 발생할것인가?
2. zero padding
- padding : 0으로 구성된 테두리를 이미지 가장자리에 감싸준다 -> convoution 처리시 5x5크기의 이미지에 필터처리를 하면 결과값의 크기가 3x3로 줄어드는데 (즉 손실되는 부분이 발생), 이러한 문제점을 해결할수있음(입력값의 크기와 결과값의 크기게 같아지기때문)
3. Stride
- stride = 필터를 얼마만큼 움직여주는가 ex. stride=1 : 필터를 한칸씩 움직여준다 (stride-1 = 기본값)
- stride값이 커진다 = 필터가 이미지 건너뛰는 칸이 커짐 = 결과값이미지 크기는 작아짐
- 입력 데이터 크기, padding, stride 고려하여
출력데이터 크기 계산하는 수식
CNN in pytorch 실습
[ convolution layers ]
Conv1d - Text-CNN에서 많이 사용 : 1차원
Conv2d - 이미지 분류에서 많이 사용 : 2차원
Conv3d - 3d 모델에서 많이 사용 3차원
파라미터에서 kernel_size : 필터 size : 3*3 or 5 or 7 많이 사용
CNN
1. 첫번째 convolutional layer
- 우리에게 주어진 입력값 : 28*28 이미지 -> 이 이미지를 대상으로 여러개의 필터(kernel)를 이용해 결과값(feature mapping) 얻는다
하나의 convolution layer = convolution + activation 이 함께 있어야한다
- 왜 활성함수 써야할까? : 선형함수인 convolution에 비선형을 추가하기 위해 사용!
-> 따라서 MLP는 활성화함수를 이용한 non-linear 시스템을 여러 laye로 쌓는 개념
What, Why and Which?? Activation Functions | by Snehal Gharat | Medium _ 참고사이
What, Why and Which?? Activation Functions
While studying neural network, we often come across the term — “Activation functions”. What are these activation functions?
medium.com
* 활성화함수 *
- Sigmoid, Leaky ReLU, tanh, Maxout, ReLU(젤 많이 사용됨), ELU
1. Sigmoid
- output 값을 0에서 1 사이로 만들어준다
- input값이 어느정도 크거나 작으면 기울기가 아주 작아짐 -> vanishing gradient 현상이 나타남 (입력층쪽 노드들 기울기가 0에 가까워져서 학습이 되지 않게 되는 현상) -> 그래서 보통 sigmoid 함수는 맨 마지막에 한번만 사용한
'이미지다루기및 데이터셋 구축' 카테고리의 다른 글
[Dataset 구현] 2. Dataloader (0) | 2023.01.05 |
---|---|
[Dataset 구현] 1. customdataset (1) | 2023.01.05 |
인공신경망 (0) | 2022.12.23 |
04. Image augmentation (0) | 2022.12.16 |
이미지다루기_넘파이에 대하여 (0) | 2022.12.06 |