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의 값을 확인하면 좋겠지유?
-
필터 연산을 통해 하나의 데이터로 나오게 된다.
-
결론적으로 우리가 한 연산은 이미지가 작아질 수 밖에 없다. 그리고 이걸 하나의 값으로 합친다.
-
중간의 필터(커널)을 이용해서 간단한 특징을 추출한다
-
추출한 특징을 새로운 합성곱 레이어를 생성한다.
-
마지막에는 1차원 데이터 처럼 쭉 늘려서 fully connected로 바꾸고, 이를 단 평면적으로 만든다.
-
그리고 output layer을 가져온다.
convolutional 값의 구성
-
CONV(Convolution)
- 필터(= 가중치들의 집합)
- 이러한 데이터들의 총 합을 구하는게 convolution 연산!
- 이 작업을 통해 우리는 feature을 추출하고자 한다!
- conv계층에서 필요한 값에 연산을 다 한다
-
POOLING
- CONV계층을 압축하는 단계이다.(입력값이 CONV)
- 어떻게 압축하느냐에 따라 MAX, AVERAGE. MIN등으로 구분
- 데이터 연산량을 줄이는 역할을 한다.
CNN 계산하는 법
STRIDE
- 필터를 적용하는 간격이다.
- 저 예제는 STRIDE가 1인 상황이다.
- STRIDE가 2일때는 어떠한 결과가 나오는가?
- 계산해봐라
SIMPLE QUIZ1
- 한번 해보기!
- __ 즉 POOLING은 압축(가중치, 편향 적용)을 하는 것이다__
- Max Pooling
- activation map을 추출한 다음 그 안에서 가장 큰 값 을 뽑는 것
- 장점
- 전체 데이터의 사이즈가 줄기 때문에 컴퓨터 연산이 적게 소요
- 오버피팅을 방지
simple quiz2
- 풀어보기 시험 개삘
PADDING
-
원본 이미지에 필터를 적용하면 이미지가 작아지고, 특징이 많이 유실된다. 이를 위해서 적용한다.
-
입력 전 이미지의 주위를 0으로 채워 이미지를 키우는 것
-
출력 크기를 조정할 목적으로 사용
-
따라서 cnn이란 padding 과 stride 를 적용한 합성곱 연산이다!
- stride를 키우면 -> 출력의 크기는 작아짐
- padding을 키우면 -> 출력의 크기는 커짐
- ex2)
- 입력 (7,7) 스트라이드 = 1 , 패딩= (?,?), 필터 = (3,3)
- 정답은 패딩은 (1,1)
- 공식 : (7+2x-3)/1 +1 = 7
window는 kernel이랑 같다. 이거 짱 중요하다
- 입력값이 필터에 어떻게 적용되는지 확인할 수 있는 시간 중요하다
- 필터에는 가로필터, 대각선 필터, 세로 필터 등으로 구분 가능!