Download presentation
Presentation is loading. Please wait.
1
신경망 1
2
신경망 기초 개관 현재 컴퓨터는 수치 연산에 있어서 인간보다 월등한 능력을 보이지만 많은 사람들 속에서 특정 인물을 찾아내는 것과 같은 복잡한 지각 문제에 대해서는 인간 능력이 훨씬 뛰어남 이러한 차이는 현대 컴퓨터의 von Neumann식 구조와 생물의 신경 체계 구조가 많이 다르기 때문임 인공 신경망은 생물체의 신경 회로망에서 출발한 것으로, 많은 수의 간단한 프로세서들이 서로 연결된 병렬 계산 시스템 인공 신경망은 인간의 뇌에서 사용된다고 생각되는 어떤 조직화 원리를 이용 이러한 시도는 역으로 생체 신경망을 인공 신경회로망으로 모형화 하여 생물학적인 작용을 이해하는데 도움을 줄 수 있음
3
신경망 역사 1943년: McCulloch와 Pitts가 신경세포 기능을 구현한 최초 모델을 발표
1949년: Hebb이 생물학적 학습 원리를 발견; 이것이 신경회로망의 학습에 관한 많은 연구를 촉진 1958년: Rosenblatt의 perceptron 수렴성 정리는 기존의 컴퓨터 알고리즘에 의한 연산으로 해결하기 어려운 문제를 효율적으로 접근할 수 있음을 입증 그 이후 Widrow와 Hoff에 의해 Adaline (adaptive linear element)이 제안 신경망 연구는 1969년에 Minsky와 Papert에 의해 단층 인식자가 XOR를 구현하지 못한다는 것이 증명됨으로써, 한 때 중단 Werbos 등 많은 다른 연구자들에 의해 고안된 역전파 학습 방법을 사용한 다층 인식자에 의해 1980년대 중반 이후 다시 관심을 모으게 됨
4
신경망의 특징과 기능 신경망은 단순한 기능을 가진 많은 뉴런들이 병렬 연결된 구조
각 뉴런은 다른 뉴런들과 독립된 기능; 즉 출력이 자신의 연결을 통하여 직접 전달되는 정보에만 의존하기 때문에 병렬처리가 가능 뉴런 사이의 연결이 매우 많기 때문에 정보의 분산 표현과 처리가 가능; 또한 중복성이 커서 오류의 영향을 크게 받지 않으며, 연상 기억 특성을 가짐 학습이나 훈련을 통해 연결강도를 조절함으로써 새로운 정보를 추가하거나 변경할 수 있는 적응 특성이 있음
5
신경망의 특징과 기능 신경망은 순차적으로 처리하는 von Neumann 방식의 컴퓨터가 해결하기 어려운 다음 문제들에 적합
패턴 분류(pattern classification) 패턴 완성(pattern completion) 함수 근사(function approximation) 이 문제들은 수학적 표현으로 정의하기 어렵기 때문에 정해진 알고리즘에 따라 해를 구하기 힘들지만, 문제에 대한 입출력패턴의 예를 충분히 생성할 수 있으면, 이들로부터 일반적인 관계 추출이 가능함 이를 위해 처리해야 할 데이터 양이 많기 때문에, 병렬 구조를 지니고 있으며 많은 데이터를 사용하여 학습할 수 있는 신경회로망이 문제 해결에 적합
6
신경망의 구조와 종류 신경망은 방향을 갖는 연결 그래프(뉴런이라는 노드와 연결강도를 갖는 간선으로 구성)
연결 모양에 따라 신경망을 다음의 두 가지 그룹으로 분류할 수 있음 피드포워드(feedforward) 신경망: 그래프에 루프가 없음 회귀(recurrent 또는 feedback) 신경망: 피드백 연결에 의한 루프 존재
7
신경망의 구조와 종류 피드포워드 신경망: (a) 단층 피드포워드 신경망 (b) 다층 피드포워드 신경망
8
신경망의 구조와 종류 피드포워드 신경망 중에서 가장 많이 쓰이는 다층 인식자(multilayer perceptrons, MLP)는 뉴런들이 층을 이루면서 배열된 구조를 지니며, 그 층들 사이에는 한 방향으로의 연결만 존재 회귀 신경망: (a) 경쟁(competitive) 신경망, (b) SOM (self-organizing map), (c) Hopfield 네트워크 (d) ART(adaptive resonance theory) 모델
9
신경망의 구조와 종류 연결 구조가 다르면 네트워크의 성질도 달라짐 일반적으로 피드포워드 신경망은 정적
피드포워드 신경망은 주어진 입력에 대해 하나의 출력만을 나타내는 시스템 피드포워드 신경망의 반응은 이전의 네트워크 상태와 관련이 없기 때문에 기억이 없는 시스템으로 볼 수 있음 회귀 신경망은 새로운 입력이 주어졌을 때 출력이 계산되고, 다시 피드백 경로에 의해 각 뉴런으로의 입력이 갱신되는 구조 따라서 네트워크가 새로운 상태에 위치하게 됨으로 회귀 신경회로망은 동적인 시스템
10
신경망의 구조와 종류 신경회로망의 종류 단층 인식자 : 하나의 뉴런 층을 갖는 신경회로망; 선형적으로 분리 가능한 패턴을 분류할 수 있음 다층 인식자 : 두 개 이상의 뉴런 층을 가지는 신경회로망; 임의의 함수를 표현할 수 있음 방사형 기저 함수 망 : 기저를 이루는 함수들로 이루어지는 은닉 층을 가지는 다층 신경 망 부분 선형 신경 회로망 : 은닉 층은 기저 함수로 구성되며, 임의의 함수를 구간별로 선형적으로 학습 자기 구성 신경 회로망 : 입력 패턴들의 이웃 관계를 보존하면서 차원을 줄이는 사상을 스스로 구성할 수 있음 회귀 신경회로망 : 국부적 또는 대역적인 되 먹임 루프를 가짐으로 인해 동적인 시스템 표현이 용이한 신경회로망 ART : 과거의 중요한 학습 결과를 잊지 않으면서 새로운 정보를 학습할 수 있는 신경회로망
11
단층 인식자 뉴런의 계산모델 McCulloch와 Pitts는 인공 뉴런의 계산모델로 이진 문턱 값(threshold)을 갖는 유니트를 제시 뉴런의 수학적 모델은 n개의 입력 신호의 가중 합을 취하여 문턱 값보다 크면 1, 작으면 0을 출력
12
단층 인식자 입력 xi, i=1,...,n는 대응되는 가중치 wi와 곱하고, 또 다른 입력 1은 하나의 임계 값 b와 곱해 더함, 이렇게 얻어진 출력 net을 네트 입력이라 하며, net 는 전달함수 f를 통과하는 방식으로 뉴런 출력인 y을 생성 이러한 모형은 생체 뉴런과 유사성을 지니며, 내부의 연결 선들은 축색(axon)과 가지 돌기(dendrite)에 해당되고, 연결강도는 연접(synapse)에 해당 양의 연결강도는 흥분성, 음의 연결강도는 억제성 연접에 해당 문턱 값 함수는 세포 내부의 활동과 관련; 실제 뉴런에는 적용되지 않는 간략화 된 가정들이 많이 포함되어 있음
13
단층 인식자 여러 가지 전달함수: (a) 문턱 값 함수 (b) 부분선형 함수 (c) S형 함수 (d) 가우스 함수
McCulloch-Pitts 뉴런 모델은 여러 가지 방법으로 일반화 문턱 값 함수 대신 부분선형, S형 함수(sigmoid), 가우스 등과 같은 전달함수를 사용 가장 대표적인 전달함수로 S형 함수를 들 수 있음; S형 함수는 단조 증가 함수이고, 연속이며 0과 1에 접근하기 때문에 신경망에서 가장 많이 사용됨
14
단층 인식자 S형 전달함수의 표준형은 logistic 함수 β는 기울기를 결정하는 매개변수
Hardlim 함수: 문턱 값을 옵션으로 줄 수 있고, 없을 경우 0
15
단층 인식자 선형 전달함수의 출력 -1과 1 사이의 출력을 갖는 쌍곡선 탄젠트 전달함수 로지스틱 함수 생성을 위한 문장
x = -5:0.1:5; y = linear(x); plot(x, y), title('선형 전달함수'), xlabel('x'), ylabel('y') -1과 1 사이의 출력을 갖는 쌍곡선 탄젠트 전달함수 x = -3:0.01:3; y = tanh(x); plot(x, y), title('쌍곡선 탄젠트 전달함수'), xlabel('x'), ylabel('y') 로지스틱 함수 생성을 위한 문장 x = -5:0.02:5; y = logistic(x); plot(x, y), title('로지스틱 전달함수'), xlabel('x'), ylabel('y')
16
단층 인식자 미분 가능하지 않으면서 비선형 뉴런출력을 갖는 함수로 threshold와 signum이 있음
이들은 퍼셉트론 및 경쟁 네트워크의 출력에 x=-5:0.01:5; y=thresh(x); plot(x,y), title('임계 전달함수'),... xlabel('x'), ylabel('y') pause y=signum(x); plot(x,y), title('시그넘 전달함수'),...
17
단층 인식자 벡터 처리 뉴런 출력은 입력과 가중치들의 벡터 곱셈을 사용하고, 임계 값을 더하는 방식으로 계산
x=[-1 0 1]; linear(x) ans = logistic(x) ans = 뉴런 출력은 입력과 가중치들의 벡터 곱셈을 사용하고, 임계 값을 더하는 방식으로 계산 입력벡터가 x=[2 4 6], 가중치 벡터가 w=[ ]이고, -0.8의 임계 값이 주어지고, 전달함수로 쌍곡선 탄젠트 함수를 사용하는 경우에 뉴런 출력 x=[2 4 6]'; w=[ ]; b=-0.8; y=tanh(w*x+b) y =
18
학습 방법 학습 능력은 지능의 매우 중요한 특징이지만 정의하기가 어려움
신경망에서 학습은 주어진 문제를 잘 해결할 수 있도록 구조와 연결강도를 갱신하는 것 신경망은 일반적으로 훈련 패턴들을 이용해서 연결강도를 학습시킴; 이 때 주어진 예(훈련 패턴)들을 이용하여 자동 학습할 수 있다는 것이 큰 특징 신경망은 인간이 주는 규칙에 의해서가 아니라 주어진 예들을 통해 입출력간의 내재된 규칙을 찾아내기 때문에 기존의 전문가 시스템에 비해 장점을 지니고 있음 학습에는 지도(supervised : learning with teacher), 비지도(unsupervised : learning without teacher), 복합(hybrid)의 세 가지가 있음
19
학습 방법 지도 학습은 모든 입력패턴에 대해 정확한 답을 가지고 신경망을 학습하는 방법; 연결강도는 신경망이 주어진 답에 최대한으로 근접하는 답을 낼 수 있도록 결정 강화 학습은 지도학습과 비슷한 형태인데, 망에 정확한 답을 그대로 주는 것이 아니라 망 출력이 정확한지에 대한 평가만을 함 비지도 학습에는 입력에 대한 정확한 답을 알 필요가 없음; 비지도 학습은 입력 데이터에 내재된 구조나 그 사이의 관계를 파악하고, 이 관계를 이용해서 패턴들을 분류 복합 학습은 지도 학습과 비지도 학습을 모두 사용하는 방법; 연결강도의 일부는 지도 학습을 이용하여 갱신하고, 나머지는 비지도 학습을 이용하여 얻음
20
학습 방법 표본을 이용하여 학습할 때에는 학습 용량, 표본의 복잡도, 계산 복잡도에 대한 고려가 필요
학습 용량은 신경망이 얼마나 많은 패턴을 학습할 수 있는가 또는 어떤 함수나 결정 경계면을 학습할 수 있는가를 나타냄 표본 복잡도는 유효한 일반화 성능을 보장하기 위해 필요한 훈련 패턴의 수 패턴 수가 너무 적으면, 학습한 패턴에 대해서만 좋은 성능을 보이고, 이와는 독립적인 시험 패턴에 대해서는 좋지 않은 성능을 나타내는 과학습(overfitting)이 일어날 수 있음 계산 복잡도는 학습 규칙이 훈련 패턴들로부터 해를 계산해 내는데 걸리는 시간
21
퍼셉트론 학습 퍼셉트론 학습은 오차-교정 학습의 일종; 퍼셉트론은 조절할 수 있는 여러 개의 연결강도(wj, j=1,2,...,n)와 임계 값 b를 갖는 하나의 뉴런 간단한 퍼셉트론은 하나의 임계 값을 갖는 threshold 전달함수를 사용하므로 이진 출력 지도학습을 통해 훈련되고, 선형 분리 가능한 입력 패턴만을 분류 훈련은 가중치와 임계 값을 작은 난수들로 초기화 시키고, 입력 데이터를 네트워크에 보내는 방식으로 처리 출력 y는 목표 출력(t=0 또는 t=1)과 비교되고, 가중치들은 다음과 같은 헵 학습 규칙에 따라서 갱신 if y=target then w=w; % 옳은 출력이므로 가중치의 변화는 없음 else if y=0 then w=w+x; % target=1, 크기를 증가시킴 else w=w-x; % target=0, 크기를 감소시킴
22
퍼셉트론 학습 뉴런 출력은 net가 양이면 1, 그렇지 않으면 0; 다음의 선형 방정식은 퍼셉트론의 결정 경계면
Rosenblatt의 퍼셉트론 학습 규칙 연결강도와 임계 값을 작은 임의의 수로 초기화 패턴 벡터 (x1, x2, ..., xn)에 대한 뉴런의 출력을 구함 연결강도를 다음 식에 의해 갱신 (d : 원하는 출력, t : 학습회수, η : 학습 이득)
23
퍼셉트론 학습 Rosenblatt의 규칙에서는 학습이 퍼셉트론이 틀린 출력을 낼 때만 가중치 갱신이 이루어짐; Rosenblatt는 선형적으로 분리 가능한 집단에 대해 퍼셉트론 학습이 유한한 시간 내에 수렴하는 것을 보였는데, 이것이 퍼셉트론 수렴 정리 하나의 퍼셉트론은 단조 활성함수를 사용하여 선형적으로 분리되는 패턴을 구분할 수 있지만 실제로는 주어진 패턴들이 선형적으로 분리 가능한 지 미리 알 수 없음; trainpt1()은 학습 알고리즘을 수행 [w, b]=trainpt1(x, t, w, b); 가중치와 임계 값이 무작위로 초기화되고, 입력 패턴과 목표 패턴이 다음과 같을 때 w=[ ]; b=[-0.8]; x=[1;-3]; t=[1]; y=thresh([w b]*[x;1]) y = 0 y의 출력이 옳지 않게 나타나므로 한번 순환시키면 [w,b]=trainpt1(x,t,w,b) w = b = y=thresh([w b]*[x;1]) y = 1
24
퍼셉트론 학습 단층 퍼셉트론은 두 개 입력 패턴의 분류에 사용; 예를 들어 x1=[0, 1]이 0, x2=[1, -1]이 1로 분류되는 것이라면, 초기 가중치와 임계 값을 선택하고, 다음과 같이 훈련시키는 문장이 필요 x1=[0 1]'; x2=[1 -1]'; t=[0 1]; w=[ ]; b=[-0.5]; y1=thresh([w b]*[x1;1]); y2=thresh([w b]*[x2;1]); 출력: y1 = 1, y2 = 0 어떠한 출력도 목표와 대응되지 않으므로 먼저 x1을 학습시키고, x2를 학습 [w,b]=trainpt1(x1,t,w,b) 출력: w = b = y1=thresh([w b]*[x1;1]); y2=thresh([w b]*[x2;1]); 출력: y1 = 0, y2 = 0 [w,b]=trainpt1(x2,t,w,b) 출력: w = b = y1=thresh([w b]*[x1;1]); y2=thresh([w b]*[x2;1]); 출력: y1 = 0, y2 = 1 이러한 학습을 효과적으로 수행시키는 방법은 x=[x1 x2]와 같은 입력패턴 행렬을 취할 수 있도록 trainpt1을 수정; 수정된 함수: trainpt()
25
퍼셉트론 학습 한번의 학습 후에 옳게 분류된 결과가 출력되었지만, 항상 이러한 결과가 출력되는 것은 아니고, 옳은 출력의 가중치 갱신을 위해 여러 번의 학습이 필요한 경우가 많고, 이러한 사이클을 epoch라 함 오직 하나의 패턴만을 옳게 분류하는 초기 가중치에 관해 훈련 전후의 의사 결정 경계 x1=[0 0]'; x2=[1 -1]'; x=[x1 x2]; t=[0 1]; w=[ ]; b=[-0.5]; plot(x(1,:),x(2,:),'*'), axis([ ]) hold on X=-1.5:0.5:1.5; Y=(-b-w(1)*X)./w(2); plot(X,Y), title('퍼셉트론 의사결정 경계') hold off
26
퍼셉트론 학습 한 번 epoch후의 결정 경계 [w, b]=trainpt(x,t,w,b); y=percpt(x,w,b);
plot(x(1,:),x(2,:),'*'),… axis([ ]) hold on x = -1.5:0.5:1.5; y=(-b-w(1)*X)./w(2); plot(X, Y), title('1차 학습후의 결정 경계') y y= 1 1
27
퍼셉트론 학습 두 번 학습 후에 패턴은 옳게 분류 [w, b]=trainpt(x, t, w, b);
y=percpt(x, w, b); plot(x(1,:),x(2,:),'*'),... axis([ ]) hold on x=-1.5:0.5:1.5; y=(-b-w(1)*X)./w(2); plot(X, Y),... title('2차 학습 후 결정 경계') y y =
28
퍼셉트론 학습 퍼셉트론은 서너 개의 선형 분리 가능한 패턴을 분류하는 데 사용될 수 있음
percpt()는 20번의 epoch를 전후로 패턴이 옳게 분류될 수 있도록 수정시킬 수 있음 4개의 패턴 쌍에 관해 초기 퍼셉트론 의사결정 경계와 대응되는 문장 x=[ ; ]; t=[ ]; w=[ ]; b=[-0.5]; y=percpt(x,w,b); plot(x(1,1:2),x(2,1:2),'*'),... axis([ ]) hold on plot(x(1,3:4),x(2,3:4),'+') x=-1.5:0.5:1.5; y=(-b-w(1)*X)./w(2); plot(X,Y), title('퍼셉트론 의사결정 경계') t [출력] t = y [출력] y = hold off 초기 가중치와 임계 값은 네 번째 패턴을 잘못 분류
29
퍼셉트론 학습 5번 epoch 후의 의사결정 경계
30
퍼셉트론 학습 두 개의 입력을 갖는 퍼셉트론은 그것이 갖는 전달함수가 하나의 선에 관한 방정식을 생성하도록 재 배열시킬 수 있기 때문에 두 개의 영역으로 하나의 평면을 분리할 수 있도록 함 3차원적인 문제에서 방정식은 하나의 평면을 정의하고, 고차원적인 문제에서는 하나의 초기하 평면을 정의; 의사결정 경계는 항상 가중행렬과 직각 가중치 [1 2], 임계 값 1인 두 개의 입력을 갖는 퍼셉트론의 의사결정 경계는 다음과 같고, 가중치 벡터 [1 2]와 직각
31
퍼셉트론 학습 입력이 3 또는 4개의 클래스로 분류되는 것이라면, 두 개 뉴런을 갖는 퍼셉트론이 사용될 수 있음
w=[1 2]; b=[1]; x=[-2.5:0.5:2.5]; y=(-b-w(1)*x)./w(2); plot(x, y), text(0.5,-0.65,'의사결정 경계'),... grid, title('퍼셉트론 의사결정 경계'), xlabel('x'), ylabel('y') hold on plot([w(1) -w(1)],[w(2) -w(2)]), text(0.5,0.7,'가중치 벡터'), axis([ ]) hold off 입력이 3 또는 4개의 클래스로 분류되는 것이라면, 두 개 뉴런을 갖는 퍼셉트론이 사용될 수 있음 출력은 분류 패턴 중의 하나에 속하고, 두 개 선이 분류 영역을 결정 예를 들어 입력이 이진 클래스 [0 1], [1 0], [0 0] 중의 하나에 속하는 것이라면, 가중치는 행렬, 임계 값은 하나의 벡터로 하는 두 개의 라인이 생성
32
퍼셉트론 학습 퍼셉트론 의사결정 경계
33
퍼셉트론 학습 이러한 문장 출력에서 2개 패턴 t1과 t4가 잘못 분류됨을 알 수 있음
x=[ ; ]; % 입력벡터 t=[ ; ]; % 목표벡터 w=[ ; ]; % 가중치 b=[-0.5;0.3]; % 임계 y=percpt(x,w,b) % 초기 분류 y = t t = 이러한 문장 출력에서 2개 패턴 t1과 t4가 잘못 분류됨을 알 수 있음 다음 퍼셉트론 알고리즘의 수행은 입력패턴을 목표패턴에 대응되도록 옳게 분류
34
퍼셉트론 학습 [w,b]=trainpti(x,t,w,b) Solution found in 6 epochs.
b = y=percpt(x,w,b) y = plot(x(1,1),x(2,1),'*'), hold plot(x(1,2),x(2,2),'+') plot(x(1,3:4),x(2,3:4),'o'), axis([ ]) X1=-1.5:0.5:1.5; Y1=(-b(1)-w(1,1)*X1)./w(1,2); plot(X1,Y1) X2=-1.5:0.5:1.5; Y2=(-b(2)-w(2,1)*X2)./w(2,2); plot(X2,Y2), title('퍼셉트론 의사결정 경계'),... text(-1,0.5,'A'), text(-0.3,0.5,'B'), text(0.5,0.5,'C')
35
퍼셉트론 학습 퍼셉트론 의사결정 경계
36
퍼셉트론 학습 단층 퍼셉트론은 XOR-문제와 같은 선형 분리 가능하지 않은 문제에 대해서는 사용될 수 없음
이러한 문제는 다층 네트워크로 분리 가능; 2개의 입력, 2개 뉴런을 갖는 하나의 은닉 층 및 하나의 출력을 갖는 네트워크는 2차원 공간에서 2개의 라인을 정의 단순 퍼셉트론에 관한 대부분의 제한 사항은 다층 구조, 이진 출력이 아닌 전달함수 및 보다 복잡한 학습 알고리즘을 사용하여 처리될 수 있음 threshold 전달함수를 갖는 다층 퍼셉트론은 퍼셉트론 학습 규칙으로 학습될 수 없고, 함수가 미분 가능하지 않기 때문에 기울기 감소와 같은 알고리즘을 적용할 수 없어서 유용하지 못 함 Widrow Hoff 네트워크로 일컬어지는 Adaline(adaptive linear) 네트워크는 threshold 전달함수가 아닌 선형 전달함수 층으로 구성된다. 따라서 연속적인 값의 출력을 가질 수 있기 때문에 델타 규칙으로 지도 학습될 수 있음
37
다층 신경망 하나 이상의 은닉 층을 갖는 신경망을 다층 신경망 또는 다층 퍼셉트론이라 함
보통 네트워크의 각 은닉 층은 같은 유형의 전달함수, 출력 층의 전달함수는 시그모이드 또는 선형을 사용 시그모이드 형의 뉴런에 관한 출력은 쌍곡선 탄젠트인 경우에 [-1 1], 로지스틱인 경우에는 [0 1]로 제한 선형 출력의 뉴런은 제한을 받지 않으며, 어떠한 크기의 값도 출력할 수 있음 하나의 비선형 은닉 층을 갖는(시그모이드 형의 뉴런인) 피드포워드 다층 퍼셉트론은 바람직한 정도의 정확성을 갖는 어떠한 연속함수의 근사에 사용 즉 다층 퍼셉트론은 범용적인 근사자
38
다층 신경망 다층 신경망 구조
39
다층 신경망 은닉 층에 어느 정도의 뉴런이 필요하고, 바람직한 오차의 크기를 갖는 가중행렬이 무엇인지는 규명되지 않았음
네트워크의 크기는 함수 및 관심 영역의 복잡성에 종속되므로 네트워크의 학습은 계산적으로 조절할 수 있음 예컨대 f(x1, x2)=x1·x2와 같은 비선형 함수는 x1과 x2의 범위가 커질수록 많은 뉴런을 요구 일반적인 근사를 위해서 다층 퍼셉트론의 은닉 층은 보통 시그모이드 형의 뉴런을 사용 선형 은닉 층이 거의 사용되지 않는 이유는 선형 변환(h=W1x, y=W2h, 여기서 W1과 W2는 m×1 벡터 x를 h로, h를 y로 변환시키는 변환행렬)이 필요하기 때문; W= W1W2, y= W1W2x =Wx
40
다층 신경망 3개 입력에 관해 하나의 은닉 층을 갖는(3개의 쌍곡선 탄젠트 뉴런들인) 다층 퍼셉트론 출력은(2개의 선형출력 뉴런들인) 다음 행렬대수를 사용하여 계산될 수 있음 더미 노드를 사용해서 가중치 행렬에 임계 값을 삽입하는 확대된 행렬 표현을 사용할 수 있음, 즉
41
다층 신경망 x=[2 4 6]'; w1=[0.2 -0.7 0.9;2.3 1.4 -2.1;10.2 -10.2 0.3];
b1=[ ]'; b2=[ ]'; y=w2*tanh(w1*x+b1)+b2 y = 또는 w1=[ ; ; ]; w2=[ ; ]; y=w2*[1; tanh(w1*[1; x])]
42
역전파 학습 다층 퍼셉트론의 전개에 따른 가중치 및 임계 값들에 관한 해를 반복적으로 구하는 일반적인 방법
작은 학습률이 사용되는 경우에 아주 안정적인 최속 강하 법에 속하지만, 수렴속도가 처지는 단점을 가지고 있음 역전파 학습의 성능을 높이기 위한 방법으로 모멘트 항의 추가, 가변적인 학습률의 적용 등이 고려될 수 있음 가중치 및 임계 값들의 해를 얻기 위한 다른 방법들은 아주 복잡한 알고리즘을 포함하고 있음 이들은 대부분 뉴톤 방법을 근거로 하고 있지만, 실제 적용에 있어서는 뉴톤 방법과 최속 강하법의 절충형에 속함
43
역전파 학습 역전파 학습 알고리즘을 유도하는 데 있어서 전달함수의 미분 전개가 필요
보편적으로 사용되는 전달 함수인 로지스틱, 탄젠트 시그모이드, 선형 함수에 관한 미분 여기서 는 기울기 인자로 보통 1이 사용, 이러한 미분은 출력 f(x)가 이전 단계에서 이미 계산되기 때문에 보다 쉽게 계산될 수 있음 로지스틱 함수 및 그것의 미분에 관한 그래프 출력 x=-5:0.1:5; y=1.0./(1.0+exp(-x)); dy=y.*(1-y); subplot(2,1,1), plot(x, y),... title('로지스틱 함수'), subplot(2,1,2), plot(x,dy),... title('로지스틱 함수의 미분값')
44
역 전파 학습
45
역 전파 학습 역전파 알고리즘은 오차 제곱합(목표 값과 네트워크 출력 값의 차이를 제곱)인 목적함수를 최소화시키는 방식으로 가중치와 임계 값을 계산: e2 = [tq - fqk]2 앞의 그림에서 t는 목표, f는 네트워크 출력, i, j, k의 라벨은 각각 입력, 은닉, 출력 층에 해당되고, 각 층은 m, n, r개 뉴런을 가지며, 각 층의 뉴런은 각각 h, p, q의 인덱스로 표현 Xh는 h-번째 입력 뉴런에 입력되는 값, whp.j는 은닉 층의 p-번째 뉴런과 입력 층의 h-번째 뉴런과의 연결 가중치 Ip.j는 은닉 층의 p-번째 뉴런에 유입되는 값들의 합인 내부 전달 활동 fp.j는 은닉 층의 p-번째 뉴런의 출력 값으로 내부 전달활동이 전달함수에 대입된 값
46
역 전파 학습 두 개 층이 모두 로지스틱 함수를 사용하는 네트워크에 관한 출력
여기서 x는 입력벡터, w1는 첫 번째 층의 가중치 행렬, w2는 두 번째 층의 가중치 행렬, b1과 b2는 각각 첫 번째와 두 번째 층의 임계 벡터 입력되는 벡터는 임계 값에 대응되는 성분인 1을 포함하는 방식으로 나타낼 수 있음; 즉 두 개 층이 모두 로지스틱 함수를 사용하는 네트워크에 관한 출력
47
역 전파 학습 은닉 및 출력 층에 관한 전달함수로 로지스틱이 사용되고, 다음과 같은 초기 가중치와 임계 값을 사용하는 경우
x=[0.4;0.7]; % 행=입력 개수=2, 열=패턴 개수=1 w1=[ ; ]; % 행=은닉 뉴런의 개수=2, 열=입력 개수=2 w2=[ ]; % 행=출력 개수=1, 열=은닉 뉴런 개수=2 b1=[-0.5;-0.2]; % 행=은닉 뉴런 개수=2 b2=[-0.6]; % 행=출력 뉴런 개수=1 <초기 가중치에 관한 네트워크 출력> X=[1;x]; W1=[b1 w1]; W2=[b2 w2]; output=logistic(W2*[1;logistic(W1*X)]); X [출력] X = W1 [출력] W1 = W2 [출력] W2 = output [출력] output =
48
역 전파 학습 출력 층의 가중치 갱신 출력 층의 가중치들은 가중치에 관한 오차 제곱의 음의 기울기에 비례하여 변화되며, 이러한 가중치 변화는 연쇄 규칙을 사용하여 계산 다음은 각 층이 logistic 전달함수를 갖는 두 개 층의 네트워크에 관한 미분 네트워크 출력은 logistic 함수를 갖는 경우에 [0 1]의 범위
49
역 전파 학습 출력 뉴런에 관한 가중치 갱신 네트워크의 은닉 층에 관한 출력은 fp.j= h= [0.48 0.57]
목표 출력이 t=0.1일 때, 오차, 출력 가중행렬에 관한 기울기 벡터의 계산, alpha=0.5을 사용한 가중치 갱신은 다음과 같이 진행 오차 계산 h=logistic(W1*X); % 은닉 뉴런 출력 H=[1;h]; % 확대된 은닉 뉴런 출력 t=0.1; % 목표 출력 Out_err=t-logistic(W2*H) Out_err = 갱신
50
역 전파 학습 출력 가중행렬에 관한 기울기 벡터 alpha=0.5 에서 가중치 갱신
output=logistic(W2*[1;logistic(W1*X)]) output = delta2=output.*(1-output).*Out_err % logistic 함수의 미분 값 delta2 = alpha=0.5 에서 가중치 갱신 lr=0.5; del_W2=2*lr*H'*delta2 % 가중치 변화 del_W2 = new_W2=W2+del_W2 % 가중치 갱신 new_W2 = Out_err=t-logistic(new_W2*[1;logistic(W1*X)]) % 새로운 출력 오차 Out_err = 한번 학습 후에 가중치 행렬은 오차를 에서 으로 감소
51
역 전파 학습 은닉 층의 가중치 갱신 은닉 층의 출력은 어떠한 목표도 가지지 않기 때문에 오차를 최소화 시키는 방식으로 가중치 갱신을 위해 출력 층 오차를 은닉 층 뉴런으로 역 전파 시키는 절차가 요구 이러한 작업의 수행을 위해서 가중치에 관한 기울기 방정식과 연쇄 규칙을 사용
52
역 전파 학습 결과적으로 가중치 변화에 따른 오차의 변화 가중치 갱신에 관한 식
53
역 전파 학습 기울기 항을 은닉 층으로 역 전파 은닉 층 가중치 변화의 계산(임계 값에 관련된 역 전파는 무시)
[numout, numhid]=size(W2); delta1=delta2.*h.*(1-h).*W2(:,2:numhid)' [출력] delta1 = 은닉 층 가중치 변화의 계산(임계 값에 관련된 역 전파는 무시) del_W1=2*lr*delta1*X' [출력] del_W1 = new_W1=W1+del_W1 [출력] new_W1 = 새로운 출력 값의 계산 output=logistic(new_W2*[1;logistic(new_W1*X)]) output = 출력 값 0.298은 초기 출력 에 비교했을 때, 목표 0.1에 근접; 학습률 크기는 훈련의 안정성 및 수렴에 영향을 미침
54
역 전파 학습 일괄 처리 학습 지금까지의 순차 처리 학습에서는 각 패턴이 출현한 후에 가중치들을 갱신하는 방법을 사용
이런 방식은 패턴이 무작위 선택되었다는 의미에서 다소간 확률적이지만 지역적인 최소 점에 빠질 가능성을 감소시킴 일괄처리 학습은 모든 훈련패턴이 가중치 갱신에 앞서 처리; 예컨대 4개의 패턴으로 구성되는 훈련집합을 사용하는 경우에 x=[ ; ]; t=[ ]; [inputs, patterns]=size(x); [outputs, patterns]=size(t); % 행=은닉뉴런 개수=2, 열=입력 개수+1=3 W1=[ ; ]; W2=[ ]; % 행=출력 개수=1, 열=은닉뉴런 개수+1=3 X=[ones(1,patterns); x]; h=logistic(W1*X); H=[ones(1,patterns); h]; e=t-logistic(W2*H) [출력] e =
55
역 전파 학습 오차 제곱합의 계산 기울기 벡터의 계산 Alpha=0.5를 사용한 가중치 갱신 새로운 오차 제곱 합 계산
SSE=sum(sum(e.^2)) [출력] SSE = 기울기 벡터의 계산 output=logistic(W2*H) [출력] output = delta2=output.*(1-output).*e [출력] delta2 = Alpha=0.5를 사용한 가중치 갱신 lr=0.5; del_W2=2*lr*delta2*H' [출력] del_W2 = new_W2=W2+del_W2 [출력] new_W2 = 새로운 오차 제곱 합 계산 e=t-logistic(new_W2*H); SSE=sum(sum(e.^2)) [출력] SSE =
56
역 전파 학습 출력 층 가중치 및 임계 값 변화로 인해 SSE는 로 감소; 은닉 층에 관한 가중 행렬 변경을 위해 다시 은닉 층으로 역 전파 [numout, numhidb]=size(W2); delta1=h.*(1-h).*(W2(:,2:numhidb)'*delta2) [출력] delta1 = 은닉 층의 가중치 변화 del_W1=2*lr*delta1*X' [출력] del_W1 = new_W1=W1+del_W1 [출력] new_W1 = h=logistic(new_W1*X); H=[ones(1,patterns);h]; e=t-logistic(new_W2*H); SSE=sum(sum(e.^2)) [출력] SSE = 새로운 SSE의 값은 , 이 값은 의 SSE보다 작은 것; 따라서 은닉 층의 가중치 변화는 SSE를 조금 더 감소시킴
57
적응 학습 신경망을 반복 학습시키는 경우에 학습율을 자체적으로 변화시키는, 즉 적응성을 갖도록 하는 것이 효과적
학습율은 오차 기울기 하강 단계의 크기로 아주 작은 크기를 취하는 경우에 오차 최소화를 위한 보장이 확실해지나, 시간이 아주 오래 걸리는 단점 구간 크기 결정 방법으로 경험적 방법이 사용 학습이 잘 진행되면(오차가 계속 감소되는), 구간 크기를 증가(lr=lr*1.1) 학습이 빈약해지면(오차가 증가되는), 구간 크기를 감소(lr=lr*0.5) 오차가 감소되는 경우에만 가중치 갱신 학습을 시작하기에 앞서 가중치들은 아주 작은 값으로 초기화되고, 입력 또한 유사한 크기로 감소시켜서 logistic 뉴런들이 포화상태에 빠질 가능성을 줄여야 함
58
훈련 데이터 변환 다음 두 가지 측면에서 변환될 필요가 있음 변환되지 않은 데이터는 해당 범위에서 대응될 수 없는 것
첫째 각 입력 데이터의 중요도는 동일한 것이어야 하며, 로지스틱 형의 전달함수가 조속히 포화상태에 빠지는 것을 방지하기 위함 둘째로 출력 또는 목표 데이터는 출력 전달함수가 가질 수 있는 범위에 놓여야 하기 때문에 변환되지 않은 데이터는 해당 범위에서 대응될 수 없는 것 입력 데이터의 변환에 관해 선형변환 및 z-점수 변환이 사용될 수 있음 먼저 선형변환은 보통 0.1에서 0.9의 범위로 데이터를 변환시키는 것 함수 scale()은 훈련 패턴행렬의 행이 패턴, 열이 입력인 경우에 있어서 선형 변환에 사용
59
스크립트 bptrain 일괄처리 역 전파 학습 수행
2개의 층을 갖는 다층 퍼셉트론 네트워크 학습; 은닉 층은 로지스틱, 출력 층은 선형 전달함수 입력과 목표 출력은 하나의 파일로 저장될 필요가 있음; x에 관한 행의 개수는 패턴 개수, 즉 size(x)=(patterns, inputs), 열의 개수는 입력의 개수 t에 관한 행 개수는 패턴 개수, 즉 size(t)=(patterns, outputs), 열 개수는 출력 개수 bptrain 실행은 단순히 bptrain을 입력하는 방식으로 수행; 이때 다음과 같은 메시지 출력 입출력 데이터를 포함하는 파일 이름: _ data8을 입력하고 반환 키를 누르면, 다음과 같은 메시지가 출력 은닉 층 뉴런 개수? _ 은닉 층에 사용될 뉴런 개수 입력; 이때 입력 데이터 변환 방법으로 z-점수 사용은 z, 선형변환은 I, 어떠한 방법도 사용하지 않을 경우에 n을 입력하는 선택 문장이 나타남 입력 변환 방법: zscore=z, linear=l, none=n ?[z, l, n]: _
60
스크립트 bptrain 다음으로 선택 변수 사양에 관한 문장이 나타남 출력 오차한계(각 출력에 따른 RMS) = .1
최대 반복횟수 = 5000. 초기 학습율 = 0.1. 이러한 선택을 사용할 것인지? [y, n]: _ 출력 오차 허용한계 0.1, 학습 최대 반복횟수 5000, 초기 학습율 0.1의 디폴트 값 사용에 따른 y키를 누르면 다음과 같은 메시지가 출력 네트워크 사양: 1개 입력 뉴런, 20개 은닉 뉴런, 1개 출력 뉴런 훈련집합으로 11개 입출력 쌍을 사용 즉 네트워크는 하나의 입력 뉴런과 20개의 은닉 뉴런, 하나의 출력 뉴런으로 구성되어 있으며, 훈련집합으로 11개 패턴 쌍이 사용된다는 것을 의미
61
일반성 일반성은 훈련집합에 포함되지 않았던 입력에 관해 네트워크가 옳은 출력을 줄 수 있는 능력
네트워크는 훈련공간의 외부에서 일반화될 수 없고, 훈련 데이터의 외부 데이터로부터 생성된 출력은 어떠한 신뢰성도 제공할 수 없음 load weights8 x=0:0.1:10; t=2*x-0.21*x.^2; output=W2*[ones(size(x));logistic(W1*[ones(size(x));x])]; plot(x, t, x, output), title('함수근사'), xlabel('입력'), ylabel('출력') 출력에 의하면 네트워크는 입출력 함수관계에 대한 학습 행위를 잘 반영, 즉 일반성을 잘 나타내고 있음 보다 작은 오차 목표에 대한 장시간의 학습은 네트워크의 성능을 개선시킬 수 있을 것
62
일반성
63
헵 학습 헵 학습은 가장 오래되고 단순한 형태의 학습 규칙
이 규칙은 만약 연접 양쪽의 뉴런이 동시에 또 반복적으로 활성화되었다면 그 두 뉴런 사이의 연결강도가 강화된다는 관찰에 근거 수학적인 식 xi와 yj는 뉴런 i와 j의 출력, 이들은 wij에 의해 연결, η는 학습률, xi는 wij의 입력도 됨 연접의 변화가 인접한 두 뉴런의 상태에 의해서만 결정되기 때문에 학습은 국부적으로 일어남
64
헵 학습 헵 학습은 여러 가지 변형된 형태로 사용되기도 하는데, 대표적인 것이 instar와 outstar 학습 규칙
여기서 xj는 정규화된 입력, y는 출력, d는 목표 출력이므로 위 식은 지도 학습
65
헵 학습 다음 식은 비지도 학습: outstar 학습 규칙은 instar 학습 규칙과 매우 유사
CemTool을 이용한 Hebbian 학습 Hebbin 규칙을 이용하여 다음 패턴을 학습해 보자. CEMTool>> pattern = [ ; ; ; ]; CEMTool>> target = pattern;
66
헵 학습 단층 앞 먹임 신경망이므로 "genlayer" 함수를 이용하여 초기화하고, 바이어스는 -0.5로 고정
CEMTool>> w = genlayer(pattern, target, [ ]); CEMTool>> b = -0.5*ones(1,5); 학습률 0.2, 감쇄율 0.05, 최대 학습회수를 50로 두고 학습 수행 CEMTool>> w = trainheb(w, pattern, target, 50, 0.2, 0.05); 학습 결과 CEMTool>> output=simulnet(w, b, "hardlim", pattern) 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0
67
헵 학습 모든 출력 결과가 target과 일치하는 것을 볼 수 있음; 학습된 연결강도의 출력 CEMTool>> w
0.0000 0.6230 0.0000 0.6230 입력과 출력이 동일하므로, w도 대각성분이 큰 값을 가지는 모양으로 학습되었음을 알 수 있음
68
헵 학습 % Hebbian 학습 데모(demo_hebb.cem)
// define 100, 5-element input vectors. pattern = [ ; ; ; ]; target = pattern; msgprint(" "); msgprint(" 학습 패턴"); pattern msgprint(" "); msgprint(" 목표 출력패턴"); // generate a network w = genlayer(pattern, target, [ ]); [n m]=size(target); b = -0.5*ones(1,m); msgprint(" "); msgprint(" weight 초기화"); w
69
헵 학습 // train the network using the Hebbian learning rule.
// the input and the target are the same // learning rate is 0.2, decay rate is 0.05 w = trainheb(w, pattern, target, 50, 0.2, 0.05); // test the network output=simulnet(w, b, "hardlim", pattern); e = errornet(w, b, "hardlim", pattern, target); msgprint(" "); msgprint(" (네트워크 출력) - (목표 출력)"); output - target msgprint(" 평균제곱오차 : "); e
Similar presentations