DeepLearning / / 2022. 11. 1. 17:48

Deeplearning - 컨볼루션 신경망 개념

'''컨볼루션 신경망

보통 이미지 관련 딥러닝 처리 할때 사용 한다. 
< 절차>

1. 컨볼루션 연산
1-2) 정류 선형 유닛인 Relu레이어를 다룬다. 
relu를 사용하는 이유는, 컨볼루션 신경망 내의 비선형성을 
높여주기 위함이다. 


정류함수는 선형성을 무너뜨리는 필터나 함수에 적용이 된다 .
우리가 신경망의 비선형성을 증가 시키는 이유는 
이미지 데이터자체가 매우 비선형적이기 때문이다. 

특히 서로 나란히 위치하거나 물체를 인식하는 등의 작업을 할때 더욱 그렇다 
이미지에는 굉장히 다양한 요소들이 있기 때문 


 
2. Max Pooling (맥스 풀링)
- 풀링이란 무엇인가? 

모든 이미지마다 미세한 차이점이 많다 
신경망에 공간 불변성이라는 속성을 넣어 주어야한다. 
특징이 어디에 있는지를 신경쓰지 않는 것 

이미지의 어느 부분에 어떤특징이 있는지의 여부와 다르다 
왜냐하면 특징 맵에서 이미 고려를 했기 때문 

하지만 여기서는 특징이 기울어져있는지 가까운지, 떨어져있는지 여부는 신경망이 신경 쓸 필요가 없다 
그래서 특징이 약간 왜곡된 경우에도 신경망이 여전히 그 특징을 찾을 수 있도록 일정한 유연망이 필요하다 .

피쳐맵에 맥스풀링을 적용하면, 피쳐맵의 네모난 부분을 찾은후, 가장 큰 값을 찾아서 
pooled Feature Map에 넣어준다. 그런다음 스트라이드 만큼 이동후, 다시 피쳐 맵에서 큰 값을 찾아서 넣어준다.
 
목적 : 
특징을 보존 하고 더 나아가 가능한공간 혹은 질감ㅇ나 다른형태의 왜곡을 처리 할 수 있도록 한다 .
뿐만 아니라 크기를 줄인다는 다른 이점 있다 . 공간의 불변성을 심어주고 크기를 75%나 줄이니 
처리 측면에서 굉장히 유용하다 

또 다른 이점은 파라미터의 수를 줄인다.  

과적합을 방지하고 있다 . 정보를 제거한다는 건 장점이자 풀링의 이점이다 .
관련 없는 자료는 학습을 하지 않기때문에 과적합을 방지한다 

합계풀링 - 피쳐맵에 네모 박스엑서 4개의 값을 더하는것 
평균 풀링 = 피쳐맵에 네모박스에서 4개의 값의 합의 평균을 구하는 것 

3. Flattening (평탄화)

Pooled Feature Map을 하나의 열로 평탄화 하기 
평탄화 하는 이유는 추후에 인공신경망에 입력하기 위해서다 .
다수의 풀링 레이어, 풀링된 특징 맵을 포함한 풀링 레이어가 있는 경우 
이를 평탄화 한다.

긴 열에 순서대로 하나씩 입력을 하면 인공신경망을 위한 하나의 입력 벡터가 된다 .

인풋이미지 -> 컨볼루션 레이어 적용 -> Relu함수 적용 -> 풀링 적용 -> 모든 것을 하나의 긴 벡터로 평탄화

4. Full Connection 
인공 신경망 전체를 컨볼루션 신경망에 추가
은닉레이어는 Full Connection 일 필요가 없지만 컨볼루션 신경망에선 
완전 연결 레이어(Full Connection)를 사용한다 . 
인공신경망의 주 목적은 우리의 특성을 더 많은 속성에 통합해 
클래스를 더 잘 에측하도록 하는 것 출력물의 벡터, 즉 우리가 한 평탄화(Flattening)한 결과물에는 
이미 몇 가지 특성이 벡터 내의 숫자에 인코딩 되어있다. 

그것만으로도 클래스를 잘 예측 할 수 있다 . 

하지만 우리는 인공 신경망 이라는 구조가 속성을 다루고 특성을 다루는 목적으로 설계 되었고 
새로운 속성을 고안하고 속성을 결합해서 우리가 예측하려는 것을 더 잘 예측하게 해준다
이값을 인공신경망으로 통과 시켜서 우리가 하고 있는 일을 더 최적화 하도록 해야한다 .

만약 두개의 출력레이어가 있다고 할 경우, 어떤 레이어의 가중치가 가장 좋은 선택인지 알아야 한다.
연결레이어의 어떤 것을 학습할지 고른후 학습 하는것 
(출력레이어에 쓸모가 없는 연결레이어가 있다면 그것은 무시한채로, 유용한 특성으로 대체 된다.)


5. 요약: 
먼저 입력이미지에 여러개의 다양한 특징탐지기 (필터)를 적용해 
특징 맵(featuremap)을 만들었다. 이들이 컨볼루션 레이어를 구성한다 
컨볼루션 레이어에 Relu를 적용시켜 이미지에 비선형성을 증가 시킨다 
그리고 풀링레이어를 적용 하고 특징 맵 각각 풀링된 특징 맵을 만든다. 
풀링의 주목적은 이미지에 공간적 불변성이 있는지 확인 
무언가 기울어져있고 뒤틀려있거나 이상적 시나리오와 달리지더라도 여전히 특징을 고를 수 있다 
또한, 모델의 과적합을 방지하는데에도 도움이 된다. 많은 양의 데이터를 제거 하기 때문이다 

그후  풀링된 이미지 전부를 하나의 열로 평탄화 한다 그리고 이를 인공신경망으로 입력한다.
4. 완전 연결 인공 신경망으로 이러한 특징들이 네트워크를 통해 처리 , 
5. 최종레이어 우리가 찾고 있는 클래스에 투표를 진행한다. 이모든 과정은 순전파 및 역전파 과정과 반복 
에포크를 거쳐 학습된다. 
6. 정의된 신경망이 탄생한다. 

다른 차이점은 특징감지기(filter) 또한 경사하강법으로 학습되고 조정된다. 
6. Extra : SoftMax     

소프트 맥스 함수를 사용하면, 값이 0~1사이로 바뀌고 
레이어를 더했을때 1이 된다. 
0부터 1사이의 실제 값을 가지고 더하면 1이 되도록 
임의의 k벡터열에 집어 넣는다.
개 클래스의 확률이 80%이고, 고양이 클래스는 45% 면 
말이 안된당 ! 그래서 소프트 맥스 함수를 도입 해서 
대부분의 컨볼루션 에서 사용 된다. 










'''

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유