: 선형 분리 불가능한 상황에서 일정한 양의 오류
퍼셉트론 1 과 퍼셉트론 2가 모두 +1이면 ●부류 이고 그렇지 않으면 □부류임
: 원래공간 x = (x1,x2)^T 를 새로운 공간 z = (z1, z2)^T로 변환
-> 새로운 특징공간 z에서 선형분리 가능함
: 사람이 수작업 특징 학습을 수행한 것과 유사함 = 표현학습
: 새로운 특징공간z을 선형 분리를 수행하는 퍼셉트론 3을 순차결합하면 다층퍼셉트론이 됨.
새로운 공간을 만들 고 선형 분리하는 퍼셉트론을 순차결합하면 다층 퍼셉트론이 된다.
: 2차원 공간을 7개 영역으로 나누고 각 영역을 3차원 점으로 변환
: 계단 함수를 활성함수 T 로 사용을 가정했으므로 영역을 점으로 변환
: p개 퍼셉트론을 결합하면 p차원 공간으로 변환
: 계단 함수는 딱딱한 의사결정 - > 영역을 점으로 변환
: 그외 활성함수는 부드러운 의사결정 -> 영역을 영역으로 변환
이진 시그모이드 함수 -> 0 ~ 1
양극 시그모이드 함수 -> -1 ~ 1
알파 값으로 시그모이드 함수의 형태를 조절 가능하다.
: 활성 함수에 따른 다층 퍼셉트론의 공간 분할 능력 변화(경성 부분 변화)
: logistic sigmoid 와 tanh는 a가 커질수록 계단함수에 가까워짐
: 모두 1차 도함수 계산이 빠름 (특히, ReLU 는 비교 연산 한 번)
깊은 신경망에서는 ReLU를 많이 사용, 은닉층에서는 logistic sigmoid 사용
: d+1 개의 입력 노드(d는 특징의 개수). c개의 출력노드(c는 부루 개수)
: p개의 은닉 노드: p는 하이퍼 매개변수(사용자가 정해주는 매개변수)
-> p가 너무 크면 과잉적합, 너무 작으면 과조 적합 => 하이퍼 매개변수 최적화
입력 - 은닉층 을 연결하는 U1
은닉층 - 출력을 연결하는 U2
입력을 0 번째 은닉층, 출력을 마지막 은닉층으로 간주
2층 퍼셉트론 : o = f(x) = f2(f1(x))
3층 퍼셉트론 : o = f(x) = f3(f2(f1(x)))
o = T(U^2 Th(U^1x))
: 은닉층은 특징 벡터를 부류에 더 유리한 새로운 특징 고간으로 변환
: 현대 기계학습에서는 특징학습(feature learning, data driven features)이라 부름
: 범용적 근사 이론(universal approximation theorem)
-> 하나의 은닉층은 함수의 근사를 표현
-> 다층 퍼셉트론도 공간을 변환하는 근사함수
: 얕은 은닉층의 구조
-> 지수적으로 더 넓은 폭이 필요할 수 있음
-> 더 과잉적합 되기 쉬움
-> 일반적으로 깊은 은닉층의 구조가 좋은 성능을 가짐
: 지수의 표현(exponential representation)
-> 각 은닉층은 입력 공간을 어디서 접을지 지정 => 지수적으로 많은 선형적인 영역 조각들
: 성능 향상
순방향 전파 : 입력층 -> 은닉층 -> 출력층
역방향 전파 : 오차계산 -> 층방향 수정
: 학습을 마친 후 현장 설치하여 사용( 또는 테스트 집합으로 성능 테스트)
: y = argmaxO
: 전방 계산 한번만 사용하므로 빠름
: 오류 역전파 전방 계산 대비 약 1.5~2배의 시간 소요 = 비교적 빠름(연쇄법칙)
-> c:분류 수 , d : 특징차원, p:은닉층 차원
:학습 알고리즘은 오류 역전파 반복하여 점근적 시간 복잡도는 세타((cp+dp)nq)
-> n : 훈련집합의 크기, q : 세대(epoch) 수
: 데이터 희소성, 잡음, 미숙한 신경망 구조 등 이유
: 성능 향상을 위한 다양한 경험을 개발하고 공유함
아키텍처 : 은닉층과 은닉 노드의 개수를 정해야 한다. 은닉층과 은닉 노드를 늘리면 신경망의 용량은 커지는 대신, 추정할 매개변수가 많아지고 학습 과정에서 과잉적합할 가능성이 커진다. 현대 기계학습은 복잡한 모델을 사용하되, 적절한 규제 기법을 적용하는 경향이 있다.
초기값 : 보통 난수를 생성하여 설정하는데, 값의 범위와 분포가 중요하다.
학습률 : 처음부터 끝가지 같은 학습률을 사용하는 방식과 처음에는 큰 값으로 시작하고 점점 줄이는 적응적 방식이 있다.
활성함수 : 초창기 다층 퍼셉트론은 주로 로지스틱 시그모이드나 tanh 함수를 사용했는데, 은닉층의 개수를 늘림에 따라 그레이디언트 소멸과 같은 몇 가지 문제가 발생한다. 따라서 깊은 신경망은 주로 ReLU함수를 사용한다.
특징공간 - > 특닉층을 통한 특징공간의 변환
행렬 곱 : 회전
편향 : 이동
비선형 함수 : 왜곡
: 특징 베거 집합과 부류 벡터 집합
: 부류 벡터는 단발성 코드로 표현됨.
: 설계 행렬로 쓰면,
: X,Y에서 모든 샘플을 옳게 부류하는 함수 f를 찾는 일
Y = f(x)
: 평균 제곱 오차(mean squared error(MSE))로 정의
-> 온라인 모드 : 계속 들어오는 값을 구함
-> 배치 모드 : n개 만큼 평균값을 구하고 결과를 확인
: 전방 연산을 그래프로 표현
: 반복되는 부분식들(subexperessions)을 저장하거나 재연산을 최소화
= 미분들의 조합
끝에서 부터 나오는 오류 신호에 가중치가 전달되고 있다.
가중치를 변화 시켰을 때 에러가 변하는 것을 부분부분 나누는 것.
목적함수는 = J(세타) = J({U1, U2})의 최젖점을 찾아주는 경사 하강법
mes -> 관심있는 k번째 요소만 나머지 상수 제거 -> 연쇄법칙 - > ok = T(osumk == uk^2z) 대입 -> 활성함수 미분 -> osum 미분
출력의 오류를 역방향으로 전파아며 경사도를 계산하는 알고리즘
반복되는 부분식들의 경사도의 지수적 폭발(exponenrial ecplosion)혹은 사라짐(vanishing)을 피해야 함
forward : in -> f(x) -> out ( 실제와의 차이 , error)
backprop : out -> (error) -> f(x) -> in
forward : in1 + in2 => x => out
backprop : 해당하는 위치에 있는 것을 나누는 것
outputgradient *localgrdient(in1 or in2)
out = sigma ini
forward : ini -> sigma(all +) -> out
backprop : output에 따른 outputgradient, localgradient (해당 값에 대해 미분 하면 그 값만 남으므로 1이 된다) ==> 곱하면 outputgradient
sum(froward) <=>fanout(backprop)
out = (sigmoid)in
forward : in -> 함수 -> out
backprop : out -> 함수 -> in
outputgradient x sigmoid의 미분[sigmoid(in)1-sigmoid(in)]
out = max{ini}
forward : ini -> max -> out
backprop : out -> max -> ini
multivariable chain rule
forward : t -> x , y -> z
let
-> x = x(t), y = y(t) , z = f(x, y)
backprop : z - > x, y -> t
fanout(frward) <=> sum(backprop)
Scalar to Scalar : Regular derivative
Vector to Scalar : Drivative is Gradeient
Vector to Vector : Derivative is Jacobian
chain rule에 의해서 Scalar(결과값)를 Vector(가중치)로 미분하는 것은 야코비안 행렬(은닉층 벡터를 가중치 벡터로 미분)과 gradient(결과값을 은닉층 베거로 미분)의 곱으로 나타나게 된다.
: 한번에 t개의 샘플을 처리(t는 미니배치 크기)
t=1이면 확률론적 경사 하강법
t=n(전체)이면 배치 경사 하강법
: 미니 배치 방식은 보통 t = 수십~수백
경사도의 잡음을 줄여주는 효과 때문에 수렴이 빨라짐
GPU를 사용한 병렬처리에도 유리함
-> 현대 기계학습은 미니배치 기반의 확률론적 경사하강법을 표준처럼 여겨 널리 사용함