하나의 노드, 유닛을 자세히 보면 가중치를 결합해서 받아들이게 된다. 그 결과값을 가지고 활성화 함수 activate 함수를 통해 출력값을 가지게 됨.
각 노드 유닛들은 두 가지를 가지고 있어야하는데
하나는 자기에게 들어오는 데이터들에 대한 가중치들를 가지고 있어야 함.
나머지 하나는 그 들어온 데이터를 어떻게 출력할지 출력함수를 가지고 있어야 한다.
그러면 효과적으로 학습을 진행한다.
0보다 크면 값을 따라가고 0보다 작으면 0을 따라간다. ReLU 함수
회귀에서는 항등함수 있는 값을 그대로 내보내기
분류에서는 소프트 맥스 함수 총합 1이 되는 확률값 내보내기
손실 함수
회귀는 평균 제곱 오차
분류는 교차 엔트로피 오차 : 효율성이 좋은 것으로 알고 있음
어제 이진분류를 함 . imdb 데이터 셋으로 긍정인지 부정인지 함.
다중 분류 작업은 신경망으로 작업하는 대상이 샘플로는 신경망에 특화되지는 않음.
기존의 머신러닝 알고리즘에 익숙한 데이터 그냥 신경망에 익숙해지자.
다중 분류 샘플은 생략하고 교재있는 것 참고하기.
뉴스기사 분류. 손실함수 부분만 차이나고 어제는 binary 함수 했는데 catergory sparse 손실함수 써야한다는 차이 정보닦에 없음.
오늘은 회귀샘플
신경망에 투입하기에는 매우 작은 데이터량. 보스턴 주택 가격 데이터셋. (예전에 했음)
크게 3가지 종류를 다룰 것.
1. 회귀 2. 분류(이진분류, 다중분류)
손실에 대해서 옵티마이저, 경사하강법 gradient Descent 를 이용해서 가중치 방향을 조절
기울기가 0인 것을 찾고싶음.
그래서 조금씩 + 방향이면 왼쪽으로 이동
이것을 옵티마이저. 최적화 도구라고 부름.
정확한 손실파악 데이터 10000건을 가지고 있으면 각각의 값들이 투입되었을 때
훈련 데이터 전체에 대해서 계산해서 평균을 내는 것이다. => Gradient Descent
그렇게 하니까 연산비용이 많이 들더라.
하나 계산해서 적용을 반복하자 --> Stochatic Gradient Descent
전체가 만건이면 100건씩 잘라서 100번하자 -> mini betch 학습
빨간 점으로 가는 것이 목표
모델 만들 때 배치 사이즈를 지정
full-batch
전체를 한 번에 계산하는 정확도 보다는 mini-batch가 정확도는 떨어지지지만 연산 효율성은 좋고 여러 번 반복하면 정확도도 높아짐.
훈련할 때 배치사이즈를 주도록 이미 설정이 다 포함되어 있음.
매개변수를 갱신하는 방법에 대한 것.
최적화 도구에서 어떤 알고리즘을 사용하는지
조금 후에 이야기할 것.
회귀문제는 어떻게 하는지!
tensorflow-test.ipynb
colab 새파일 만들기
c.regression.ipynb
학습의 용량이
뇌로 비교한다면 용량 차이
학습 능력의 차이가 나타날 수밖에 없게됨
명확한 차이가 나타날 것이다.
그런의미에서 나타남
그렇구나
하고 넘어가면 됨.
만들어진 네트워크 가지고 이제 손실함수
--
전체 데이터 셋이 있으면
cross validation
4번 반복하게 됨.
keras 는 한 번 학습하고 또 데이터 들어오면 추가학습하고
온라인 학습방법. 콤파일하고 들어오는 fit은 초기화 아니고 추가학습
사이킷런 학습방법은 배치 학습 초기화 시키고 처음부터
타샬 핏이라는 학습은 온라인 학습 기존 학습에 추가해서 학습하는 방식이구나
5장
CNN
RNN 순환 신경망
생성모델 처리 까지 진행하는 것이 목표
5장 6장 7장 8장에 있는 생성모델
1,2 가지 작업 검토
introduction-to-cnn.pdf
합성곱 신경망 Convolutional Neural Network
비교적 최근까지 효과적이고 안정적이지 못하는 상황
이미지 인식분야는 상당부분 문제 해결이 되었다고 할 정도로 많이 발전되어 있음.
이미지 영상 시각적인 자료를 기반으로 정보를 추출하고 다루는 주제
이전에는 어떤 평점이 나올 것인가에 대한 데이터를 가지고 객관적으로 다루는 것이었다면
신경망이 잘하는 것은 인간의 지각과 관련된 것이 잘 되도록 구성함. 도메인이 암을 예측하는 경우 의학적 도메인(주제영역)이 있는 것임. 데이터의 의미와 공부 연구 축적되어있는 정보들이 있는 것 인간의 지각과 관련된 것은 인간의 지각이 도메인. 인간의 지각과 관련된 이해가 있어야 함.
주제 영역 자체가 굉장히 생소한 영역이다. 시각적인 사물의 영역을 보고 사람의 시각이 정보를 인식하는 이해가 있어야 따라함.
이런 문제의 도메인. 그래서 이런 내용을 포함하고 있는 주제.
감각기관 처리 지각 연구를 기반으로 해서 예를 들어 인간의 시각이 어떻게 동작하는지에 맞게 알고리즘이 형성되어야 한다. 발전한 신경망 알고리즘의 한 분야
대뇌 시각 피질 연구에서 시작
신호등을 식별하고 신호등을 판단해야하는데 시각정보를 기반으로 작동함. 이런 영역에서 작업하기 위해서는 필수적인 기술 영역.
처음에는 데이터 양도 그렇고 리소스 문제 한계도 있었는데 지금에와서는 상당수준 가장 많이 발전되어있는 영역
합성곱 신경망 Convolutional Neural Network
이미지, 사진, 영상을 해석하고 유용한 정보를 도출하는 알고리즘
일반적인 신경망과 합성곱 신경망 구조 비교
네트워크 자체는 동일
기본 신경망 구조
Affine (Dense 층을 의미) 완전연결층을 의미. Relu 섞어서 출력 Affine 층 연결 최종 출력해서 범주일 경우 Softmax
(회귀는 항등함수)
합성곱 신경망 구조
Dense 완전연결층이 아닌 특별한 층 사용-> Convolutions층이 있음+ Relu층 + Poolong 층이 하나 더 붙음.
완전 연결 계층 문제
사진을 가지고 작업하는 것.
개, 고양이 사진을 쏟아부어서 강아지인지 고양이인지 레이블 학습하는 것과 동일
손글씨가 28 by 28 사진을 보고 숫자가 몇인지 확인하는 작업처럼
사진, 이미지를 데이터로 사용하는 논리
사진이 28 by 28
그림으로 보는 것.
784(28*28)로 구성 완전연결층은 가상의 픽셀이 독립적으로 들어갈 수 있도록 풀어서 구성해야함.
문제점 -> 사진을 볼때 주변과의 관계, 위치를 통해서 종합적으로 인식하는 것인데 쪼개서 풀어놓으면 정보를 찾기가 어려움.
종합적으로보면 삐져나온 것이 큰 차이가 아님. 그런데 .. 구조가 해체되고 한 픽셀에서 보면 중요해짐.하나의 변화가 결과적으로 다른 결과를 가져옴.
이미지 패턴 인식에서 완전연결층은 해체하는 것을 전제로 하기 때문에 성과를 내기 쉽지 않음.
서로 다른 사진을 반복해서 보는데 지각이 따라갈 수 없을 만큼 빠르게 움직여서 움직이는 것처럼 보임.
사진을 이미지를 보니 사각형 모양으로 되어있는데 기존의 완전 신경망은 데이터를 다 해체해야하는 상황이 벌어져서 온전하게 정보를 관리하기 어렵다. 방법의 변환이 필요하다. 완전 연결계층은 좋지만 방법의 변화가 필요하다.
저 구조를 해체하지 말고 저 구조대로 데이터를 해석하자
사진이 있으면 사진을 해석을 해야하는데 한 꺼번에 다 해석할 수 없으니 window, filter라는 표현을 씀. 구멍을 하나 뚤엏어 놓고 그 구멍으로 상대방을 보면 상대방이 다 안보임. 그런데 조금씩 확인하겠다.
조각내서 보겠다.
볼때에도 사각형 구조는 유지하면서 조각조작 내서 데이터를 해석해보자.
편향을 적용한 합성곱 연산
무엇을 학습해야하는지가 명확하면 목표가 명확
이미지 * 필터 -> 축약된 정보
필터에 의해서 잘 뽑는지 아닌지 결정됨.
오차가 너무 많으면 필터를 조정 다시 합성곱을 만들고 해석, 손실을 알려주면 역전파법 다시 가중치 (필터) 조정
다시 계산. 조정하는 작업을 반복
그때 학습 대상이 가중치(필터)이다.
그리고 Bias 편향치까지.
Input dat * Filter -> 결과 + Bias -> Output data(=Feature map)
특성맵으로 해석하면 잘 되며 잘 뽑은 것 아니면 Filter 조정 후 잘 뽑을 수 있도록 하는것
결과가 필터를 어떻게 구성하고 어떻게 적용하는지에 따라서 이 결과의 사이즈가 달라짐 필터가세개니까 이렇게 나오는 것이지 더 늘이거나 줄이면 결과가 달라짐.
Input data는 4by 4 인데 Filter를 2 by 2 로 하면 특성이 3개로 나옴
Input data는 4by 4 인데 Filter를 3 by 3 로 하면 특성이 2개로 나옴
패딩을하면 기본적으로 원본사이즈보다 줄어들게됨. 사이즈가 줄여드는 것은 싫어서 Zero Padding을 하는 것. 바깥쪽에 0으로 이루어진 padding을 만들어줌
그러면 inputdata(4by4)+패딩추가(6 by 6)을 filter (3 x 3) 그러면 Output data (4 x 4 ) 원본과 동일하 크기의 데이터가 나오더라.
스트라이드가 2개라고 하면 한꺼번에 이동해야하는데 데이터를 이렇게 이동 한칸씩 떨어지는 것이 기본
2개면은 2칸씩떨어져서 이동.
스트라이드를 어떻게 구성하는지에 따라 피쳐맵에 영향
필터는 3 by 3, 5 by 5
스트라이드는 1을 많이 사용
컬러를 가지고 있으면 3장이 나옴.
---(쉬는 시간)---
레드 그린 블루 3개의 채널이 있으면 3개의 채널이있어야함.
원본 이미지에 대해서 분해하는 것.
계산 후 결합 출력 데이터
제로 패딩 스트라이드 하면 원본크기로도 볼 수 있음
그렇지 않으면 줄어들음.
윤곽이라던지 디테일을 보고
점 선 보고
오브젝트를 점점 종합하면서 귀를 보고 눈을 보고 종합이 되면 최종적으로 사람인지 코끼리인지 인식함.
개별적으로 따로따로 인식
그대로 유지를 하면 연산에도 문제가 되지만 종합 정리에도 문제가 있게됨
추상화하고압축하는 작업이 필요함
그런 연산을 풀링 연산이라고 함.
중요한 특징만 뽑아서 전달
추상화된 정보를 꺼냈기 때문
자동차라고 인식했기 때문에 .
추상화하는 작업. 가장 중요한 특징만 뽑아서 남겨두는 것. --> pooling
풀링 윈도우 - ( 2 x 2 )
스트라이드 - 2
로 하면 반으로 줄어들음. 윈도우로 필터링을 한 것. 2가지를 많이 씀. max pooling과 average pooling
max pooling은 가장 큰 값을 뽑음
average pooling은 평균 값을 뽑음
사물을 인식하는데 어떤 것이 더 효과적일까? max pooling이 더 효과적이다.
사이즈가 반씩 팍팍 줄어들음
디테일에서 일반적인 정보 추출
풀링 같은 경우에는 채널마다 그대로 연산해서 계산
원본을 필터링해서 그대로 사이즈만 줄임.
풀링 윈도우는 사이즈만 있고 데이터만 줄어듦. 영역 정보만 가지고 있고 가중치가 없음. 그대로 사이즈만 줄여줌.
연산 과정에서 학습할 매개변수가 없다.
이게 만약에 쭉 늘어져 있으면 큰 변화일 텐데
전체적으로 Feature map으로 보면 변하지 않음.
중요한 큰 변화는 인식되지만 부분적인 변화는 정리가 되어서 요약될 수 있다.
사진의 얼굴이 입력데이터에 상 중 하 어디든 있을 수 있는데
필터를 가지고 모든 곳을 적용하기 때문에 어디있든지 인식할 수 있다.
강화 약화하는 방식으로 다른 위치에 있는 이미지도 학습에 도움.
학습의 효율성 측명
지역을 학습하는 것이다. 사진이 고양이 얼굴일 수도 있고 아닐 수도 있음.
기존의 학습을 재사용할 수 있는 특징.
작업 한 번 할때마다 중요 뽑고 추상화 또 디테일중 중요한거 뽑고 추상화 반복..
복잡한 수식이 없음. 그냥 개별 요소 곱하고 더하면 이렇게 나옴.
Input Data * Filling -> Output Data
d.cnn-a.ipynb
새파일 만들기
처음부터 전체학습을 다 진행하기에는 원활하지 않을 것이다.
그럴만한 충분한 데이터를 가지고 있는 것이 많겠느냐.
가능성있는 현실적인 가능성은 범용학습들.
주로 메이저 기업들 중심으로 학습이 이루어지면 사전에 학습이 충분히 이루어지고 사전학습된 정보들을 가지고 오는것 다 똑같지는 않을 테니까 특수한 형태의 경험만가능
기존에 있었던 학습 결과들을 가져다가 여러분들의 내용에 맞는 전체 학습에 맞게 될 것
구글, ms,아마존 등에서 일반학습을 지니고 있는데 앞으로 공공 학습이 되지 않을까.
그런 방법들이 어떻게 될지.
학습용으로 1000장 밸리데이션 셋으로 500장 테스트용으로 500장
고양이 2000장 강아지 2000장으로 구성되어있음
docs-vs-cats.zip
(점심 시간)
Conv 를 만들어주고
제일 먼저 알아내야할 얘가
Filter 를 지정해주는 것이 중요. 사이즈에 따라 달라짐.
몇개 운영하는지.
레이어를 하나 만들면 몇개 레이어 만들지 가중치와 활성화함수 2차원 구조로 구성. 가로 세로로 어떤 필터를 쓸 것인지 지정 해야함.