각 층에 대한 필터링을 통해 특징 추출
딥러닝과 머신러닝의 차이는 특징 추출 조차도 자동으로 함
인간의 개입 없이의 의미가 알아서 한다가 아닌, 특징을 기계가 찾아낸다는 것!
최소의 비용으로 최대의 성능을 보이자
노드수가 많아질 수록 (=파라미터 수가 많아질수록) 메모리 접근이 많아짐 => 시간이 오래 걸림
하지만 노드수가 적어질 수록 정확도가 떨어짐.
CNN 구현하기
코드를 활용해도 OK
가중치의 초깃값은 Random하게 만들 것
진동하지 않고 특정 값으로 수렴
입력 이미지 => 색이 진한 부분 = 1로, 색이 연한 부분은 0으로
층이 깊어질수록 뉴런에 반응하는 대상이 단순한 모양에서 고급 정보로 변화 => 사물의 의미를 이해하도록 변화
(아기들이 막 태어났을 때는 시각을 통한 인지 능력이 좋지 않음)
일반 사물 인식을 수행한 8층의 CNN (AlexNet)
여러 층의 합성곱 풀링 계층과 마지막에 완전 연결 계층 구조 사용
손글씨 숫자를 인식하는 네트워크
신경'망'(=network)
CNN은 최신 기술이나 원론적인 기술은 24년 전인 LeNet.
합성곱 계층과 풀링 계층을 반복하고, 마지막에 완전 연결 계층을 거쳐 결과 출력하는 구조
필터를 많이 사용 => 특징을 많이 잡아내겠다.
CNN => 필터의 개수
중요
필터의 개수 역시 가중치 모델의 크기를 늘려 메모리 사용이 많아짐
현재 CNN의 차이
활성화 함수로 시그모이드 함수 사용(현재 CNN은 ReLU)
서브샘플링을 통한 중간 데이터 크기 줄이기(현재는 최대 풀링 cf. 축구팀에서 대표 선수를 뽑을 때 가장 잘하는 선수를 뽑음)
가우시안 연결 : 특정 연결(가우시안 분포 따름), 완전 연결이 아님
full connection: 완전 연결 => cpu 사용량 많아짐
노드수 하나만 늘어나면 노드에 따른 노드수가 많아짐 => 계산 수 많아짐. 복잡
2012년 발표되어 딥러닝 열풍을 일으키는 데 큰 역할 기여
입력은 인식하고자 하는 데이터에 따라 다름.
1000개의 데이터 출력(색깔만해도 1000개가 넘어서 인간의 뇌를 따라잡으려면,,)
입력데이터도 사람이 인식하는 것과 같아야 하고, 출력데이터 또한 인간의 사고방식과 같아야 한다.
LeNet과의 차이점, 파라미터들을 어떻게 잡아가냐?
LRN(Local Response Normalization): 국소적 정규화 실시하는 계층 사용
드롭아웃을 사용: 학습
=> 전부 오버피팅을 막는 방향임
오버피팅을 막아 범용성
을 높인다.
많은 매개변수와 학습 데이터가 적을 때 오버피팅이 나옴.
오버피팅을 방지하는 여러가지 기법 => 드롭아웃, 배치정규화...
정규화를 사용해 골고루 초깃값 설정
어떤 기법으로 최적화 하였는지에 따라 다름.
팀만의 ~Net을 만들기
차이
합성곱 계층: 필터연산 => 특징 추출
풀링 레이어: 특징 맵을 간소화