https://www.youtube.com/watch?v=6TGyI4XjlCk&list=PL7ZVZgsnLwEElur9LpRW9w3NYGVgA3n6t
[DL] 딥러닝 CNN (합성곱 신경망)알고리즘 의 동작원리 (tistory.com)
: 티스토리 설명 간단요약 후 강의 내용에서 추가적인 부분을 더 적어 넣었어요
: 아직 강의 내용에 있는 코드는 안 썼어요..
필터를 이용한 컨볼루션과 풀링 연산을 반복적으로 진행하며 이미지의 특징 검출
Convolution
특정 크기를 가진 필터(사진에서는 3x3)를 일정 간격으로 이동하며
입력데이터에 각각의 행과 열에 필터 값을 곱해주고 그 결과를 모두 더하여
새로운 행열에 넣는 연산 작업임
필터(커널) 사이즈과 함께 입력 이미지와 출력 이미지의 사이즈를 결정하기 위해 사용
사용자가 결정할 수 있음
5x5 크기에 이미지에 3x3 필터를 적용시켜주니 출력 이미지가 축소됨
여러 번 계산을 해야하는데 이미지가 너무 작아져버리니 학습시킬 데이터가 부족해짐
이를 방지하기 위해 zero padding을 활용함.
Stride
필터를 적용하는 간격을 의미
conv=Conv2D(filters=16, kernel_size=3, padding='same', stride=1, activation='relu')
필터 사이즈 내에서 특정 값을 추출하는 과정
초록색 사각형에 2와 4의 위치가 바뀌어도, 8을 뽑아내기 때문에 이동 불변성이 생김
모델의 파라미터 개수를 줄여주고, 연산속도가 빨라짐
오버피팅 발생 방지 (과적합, 학습 데이터를 너무 잘 학습해서 새로운 데이터가 들어오면 낮은 성능을 보이는 것)
avg pooling & Global Avg Pooling
평균 풀링 : 위에는 최댓값을 풀링 했더라면 얘는 필터의 평균 값을 풀링. 현재에는 잘 사용안함.
전역 평균 풀링 : feature map 각각의 평균값을 풀링. 대부분의 정보를 잃음. 출력층에서는 유용할 수 있음
이렇게 반복해주면 최초 이미지에서 주요 특이점(feature map)만 남게 됨.
필터를 통과한 이미지는 각각의 특성을 가지고 있음
컨볼루션 과정을 거친 이미지들은 색상, 선, 형태, 경계 등의 특징이 뚜렷해짐
1차원 데이터로 펴주는 작업
왜 펴주나요?
fully connected layer에 넣기 위해
Dense layer라고도 함
flatten 과정에서 1차원 벡터 형태의 데이터들은 하나로 이어짐 → fully connected 계층을 갖게 되는 것
결과 수에 제한 없이 전체에 대한 각각의 확률을 구할 때 사용하는 함수
입력 값에 대한 각각의 편차를 확대시켜 큰 값은 상대적으로 더 크게 작은 값은 더 작게 만들어줌
⇒ 최종적으로 입력 이미지가 어떤 이미지인 지 확률을 통하여 분류해줌
컨볼루션 신경망은 동물의 시각피질 구조에서 영향을 받음
이 뒤에는.. 모델들 얘긴데 … 와진짜듣고십지않다…….. 보류입니다..