모델구성과 컴파일을 보고 분류 또는 회귀를 구분할 수 있는 기준? : loss값을 보고 알 수 있다! : 분류에서도 activation을 지정하지 않아도 loss를 판단할 수 있다. : 분류문제는 binary, multiclass인지 명시적으로 지정해주는게 좀 더 코드를 읽고 해석하기 쉽다. : 혼란을 줄이기 위해 명시적으로 지정해주는 게 좋다.
단 분류에서는? : sigmoid의 경우1개로 해주어야 확률값으로 출력을 받아 특정 임계값보다 크다작냐로 binary값을 만들어 판단한다. : 분류에서 units이 2개라면 softmax로 반환받는 것이 좋다. 이 때 둘 중에 확률이 높은 값을 선택해서 사용한다. : 멀티클래스 예측값이 나왔을 때 가장 큰 값의 인덱스를 반환하는 넘파이 매서드는 np.argmx()이며, 이것으로 반환받은 값이 해당클래스의 답이다.
softmax와 sigmoid의 차이는 무앗일까요? : sigmoid는 단일 클래스 분류, softmax는 다중클래스 분류일 때 사용한다. : sigmoid는 1개의확률값이 반환되는데 그 확률값이 임계값보다 큰지 작은지 판단한다. : softmax는 n개의 확률값을 반환하고 전체의 합은 1이 된다. : 두 개 중에 하나를 예측할 때는 softmax를 사용할 수도 있기는 하지만 보통 sigmoid를 사용한다.
옵티마이저 : Adam을 사용하게 되면 baseline이상의 점수가 나온다. : 또한 문자열로 지정해서 사용할 수 있지만
learning rate가 무엇인가? : 학습률을 의미하며, 경사하강법에서 한 발자국 이동하기 위한 step size를 의미합니다. 학습률이 클수록 손실함수의 최솟값을 빨리 찾을 수 있으나 발산의 우려가 있고 너무 작으면 학습이 지나치게 오래걸리는 단점이 있다 : 적당하게 설정해 주는 것이 좋다
!! 복습을 해본다면 출력층 compime의 loss를 보면 분류인지, 회귀인지, 이진분류인지, 멀티클래스인지를 판단해볼 수 있도록 계속 연습해보자!!
필터를 이미지에 통과시켜서 합성곱 연산을 하여 결과가 나오면 그 결과로 특징을 추출할 수 있다 → 즉 필터는 특징(피쳐)를 추출한다.
필터는 랜덤하게 만들다 여러모양을 랜덤하게 만들 수있고, 그 패턴을 통과시켜서 그 패턴이 얼마나 있는지 확인해 볼 수 있다.
이런 패턴을 여러 장 만드는 것이 filters이며, 이 때 각 필터의 사이즈 를 kernel_size라 부른다.
✅ 하이퍼파라미터: Padding 을 사용하는 이유?
이미지가 줄어드는 것을 방지하기 위해 사용하기도 하지만 가장자자리 모서리 부분의 특징을 좀 더 학습할 수 있다.
패딩을 1로, 커널사이즈를 3x3으로 사용하면 입력과 출력값이 같아지게 된다.
✅ 질문모음
컨볼루션 레이어를 통과한 결과 10개의 피처를 무엇이라고 부를까요? 피쳐맵
피쳐맵이 relu 활성화함수를 통과한 결과를 무엇이라고 부를까요? 액티베이션 맵
MaxPooling 을 적용하게되면 정해진 구역 안에서 최대값을 뽑아내주고, 과대적합을 예방하며 계산의 효율성을 높여주는 장점이 있다.
✏️ 정리
1. DNN의 문제점
flatten()으로 1차원 벡터 형태로 주입해야하기 때문에 인접 공간에 대한 정보를 잃어버리게 된다.
1차원 형태로 주입을 해주게 되면 입력값이 커서 계산이 오래 걸린다.
2. DNN과 다른 CNN의 특징
Conv과 Pooling연산을 하게 되면 데이터의 공간적인 특징을 학습하여 어떤 패턴이 있는지 알게된다
또한 pooling을 통해 데이터를 압축하면 데이터의 용량이 줄어들며,추상화를 하기 때문에 너무 자세히 학습하지 않게되어 오버피팅을 방지해준다.
결국은 1차원으로 완전밀집연결층(Dense NN , Fully-connected NN)에 주입하게 되며, 네트워크에 넣어주는 것은 동일하지만 CNN에서는 미리 특징을 추출하는 층을 갖는다. → 즉 CNN, DNN의 가장 큰 차이는 바로 1차원으로 flatten해서 넣어주는게 아니라, Conv, Pooling연상을 통해 특징을 학습하고, 압축한 결과를 Flatten해서 DNN에 넣어주게 된다.
3. Convolution 연산을 하면 필터(filters, kernel_size에 해당하는 fiters 개수만큼)를 통과시켜서 filters개수만큼 피처맵을 생성한다.
CNN의 별명이 피처자동추출기 이기도 한다. 비정형 데이터를 입력했을 때 이미지를 전처리하지 않고 그대로 넣어주게 되면 알아서 피처맵을 생성한다.
피처맵은 피처가 어떤 특징을 갖고 있는지를 나타낸다.
다양한 모양을 랜덤하게 생성해서 통과시키면 해당 특징이 있는지를 학습하게 하는게 Convolution 연산이다.