사용자지침서
βλ β hardlim Ex. hardlim 함수의사용예 CEMTool>> x=[-1 0 1 2 3]; CEMTool>> y=hardlim(x) λ λ y = 0 1 1 1 1 CEMTool>> y=hardlim(x,-1) y = 0 0 1 1 1 linear λ λ Ex. linear 함수의사용예 CEMTool>> x=[-1 0 1 2 3]; CEMTool>> y=linear(x) y = -1 0 1 2 3 CEMTool>> y=linear(x,"d")
y = 1 1 1 1 1 plinear λ λ λ λ Ex. plinear 함수의사용예 CEMTool>> x=[-1 0 1 2 3]; CEMTool>> y=plinear(x,0,2) y = 0.0000 0.0000 0.5000 1.0000 1.0000 CEMTool>> y=plinear(x,0,2,"d") y = 0.0000 0.0000 0.5000 0.0000 0.0000 logsig Ex. logsig 함수의사용예 CEMTool>> x=[-1 0 1 2 3]; CEMTool>> y=logsig(x) λ λ y = 0.2689 0.5000 0.7311 0.8808 0.9526 CEMTool>> y=tansig(x,"d") y = 0.1966 0.2500 0.1966 0.1050 0.0452 tansig Ex. tansig 함수의사용예 CEMTool>> x=[-1 0 1 2 3]; CEMTool>> y=tansig(x) λ λ λ y = -0.7616 0.0000 0.7616 0.9640 0.9951 CEMTool>> y=tansig(x,"d") y = 0.4200 1.0000 0.4200 0.0707 0.0099 rbf
λγ λ Ex. rbf 함수의사용예 CEMTool>> x=[-1 0 1 2 3]; CEMTool>> c=[-0.9 0 1.2 1.7 3.08]; CEMTool>> y=rbf(x,c,0.5) y = 0.7462
η η η η η
CEMTool>> pattern = [1 0 0 0 0; 0 1 0 0 1; 0 0 1 1 0; 0 0 1 1 0]; CEMTool>> target = pattern; CEMTool>> w = genlayer(pattern, target, [-0.1 0.1]); CEMTool>> b = -0.5*ones(1,5); 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 0 0 1 1 0 CEMTool>> w 0.9673 0.0000 0.0000 0.0000 0.0000 0.0000 0.6230 0.0000 0.0000 0.6230 0.0000 0.0000 2.4096 2.4096 0.0000 0.0000 0.0000 2.4096 2.4096 0.0000 0.0000 0.6230 0.0000 0.0000 0.6230
% Hebbian 학습데모 (demo_hebb.cem) ------------------------------------------------------------ // define 100, 5-element input vectors. pattern = [1 0 0 0 0; 0 1 0 0 1; 0 0 1 1 0; 0 0 1 1 0]; target = pattern; msgprint(" "); msgprint(" 학습패턴 "); pattern msgprint(" "); msgprint(" 목표출력패턴 "); pattern // generate a network w = genlayer(pattern, target, [-0.1 0.1]); [n m]=size(target); b = -0.5*ones(1,m); msgprint(" "); msgprint(" weight 초기화 "); w // 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(" "); msgprint(" 평균제곱오차 : "); e ------------------------------------------------------------ λ λ
η η CEMTool>> pattern = [-1.0-1.5 0.5 1.5 1.0 0.0 2.0 2.5 1.0-1.0; CEMTool>> target = [ 1 1 1 1 1 0 0 0 0 0]'; 0.0-1.0 1.0 0.5 2.0-3.0 0.0-1.0-2.0-1.0]'; CEMTool>> [w b] = genlayer(pattern, target, [-0.1 0.1], "b"); CEMTool>> [w b errors] = trainpc(w,b,pattern,target,0.1,100,0.01);
% 퍼셉트론을이용한패턴분류데모 (demo_pc.cem) ------------------------------------------------------------ /* 퍼셉트론 (perceptron) 학습규칙데모 - 2차원평면상의두집합을구분하는문제 */ msgprint(" "); msgprint(" 퍼셉트론학습규칙을사용하여 2차원평면상의점들을 "); msgprint(" 두개의집합으로구분한다."); msgprint(" "); // 6, 2-element input vectors. pattern = [-1.0-1.5 0.5 1.5 1.0 0.0 2.0 2.5 1.0-1.0; 0.0-1.0 1.0 0.5 2.0-3.0 0.0-1.0-2.0-1.0]';
// target vector target = [ 1 1 1 1 1 0 0 0 0 0]'; figure; plot(pattern(1:5;1), pattern(1:5;2), "o", pattern(6:10;1), pattern(6:10;2), "xb"); xtitle("x"); ytitle("y"); title(" 하나의퍼셉트론을사용한 2개의집합분류 ") // generate a network [w b] = genlayer(pattern, target, [-0.1 0.1], "b"); // train the network using perceptron learning rule. // learning rate is 0.5, training epoch 100, error level 0.01 [w b errors] = trainpc(w, b, pattern, target, 0.1, 100, 0.01); // test the network with point (-1,0) -> 1 left=[-2 3]; right=[2*w(1)/w(2)-b/w(2) -3*w(1)/w(2)-b/w(2)]; figure; plot(pattern(1:5;1), pattern(1:5;2), "o", pattern(6:10;1), pattern(6:10;2), "xb", left, right); xtitle("x"); ytitle("y"); title(" 퍼셉트론을사용한분류결과 ") ------------------------------------------------------------
Δ η η Δ η π CEMTool>> x=linspace(0,8*pi,100)'; CEMTool>> pattern = [sin(x) cos(x)];
CEMTool>> target = pattern*[3.2; -1.7]+2.5; CEMTool>> [w b] = genlayer(pattern, target, [-0.1 0.1], "b"); CEMTool>> [w b errors] = trainwh(w, b, pattern, target, 0.1, 10);
CEMTool>> w CEMTool>> b % Widrow-Hoff 학습규칙을이용한학습데모 (demo_lin.cem) ------------------------------------------------------------ // input, output training signal x=linspace(0,8*pi,100)'; pattern = [sin(x) cos(x)]; target = pattern*[3.2; -1.7]+2.5; figure; plot(x, pattern, "b", x, target, "r"); title(" 학습패턴 ( 입력 - 푸른색, 출력 - 붉은색 )"); // generate a network [w b] = genlayer(pattern, target, [-0.1 0.1], "b"); // train the network using Widrow-Hoff rule. // learning rate is 0.01 [w b errors] = trainwh(w, b, pattern, target, 0.01, 10); // training result y=simulnet(w,b,"linear",pattern); plot(x, pattern, "b", x, target, "r", x, y, "B*"); title(" 학습결과 ( 입력-푸른색, 출력-붉은색 )"); // error curve
figure; plot(1:max(size(errors)),errors); xtitle(" 학습회수 "); ytitle(" 평균제곱오차 "); title(" 학습과정 "); msgprint(" "); msgprint(" 학습된계수 : ") w msgprint(" 학습된바이어스 :"); b msgprint(" "); ------------------------------------------------------------ η
Δ η η π CEMTool>> x=linspace(0,4*pi,50)'; CEMTool>> pattern = [sin(x) cos(x)]; CEMTool>> target = (pattern*[4; -3]+1)/8; CEMTool>> [w b] = genlayer(pattern, target, [-0.1 0.1], "b"); CEMTool>> [w b errors] = trainwh(w,b,pattern,target,0.1,10,0.0002);
% 델타학습규칙을이용한학습데모 (demo_del.cem) ------------------------------------------------------------ msgprint(" 단층신경망을델타학습규칙을사용하여학습한다."); msgprint(" 그림의학습하려는함수는아래두개의삼각함수의 "); msgprint(" 선형조합으로얻어진다."); msgprint(" y = (4*sin(x) - 3*cos(x) + 1)/8"); // input, output training signal x=linspace(0,4*pi,50)'; pattern = [sin(x) cos(x)]; target = (pattern*[4; -3]+1.0)/8; figure; plot(x, pattern, "b", x, target, "r"); title(" 학습패턴 ( 입력 - 푸른색, 출력 - 붉은색 )"); // generate a network
[w b] = genlayer(pattern, target, [-0.1 0.1], "b"); // train the network using delta learning rule. // learning rate is 0.051 // maximum training number is 10 // stop if error is smaller than 0.0002 [w b errors] = traindelt(w, b, "tansig", pattern, target, 0.05, 10, 0.0002) // training result y=simulnet(w,b,"tansig",pattern); plot(x, pattern, "b", x, target, "r", x, y, "B*"); title(" 학습결과 ( 입력-푸른색, 출력-붉은색 )"); // error curve figure; plot(1:max(size(errors)),errors); xtitle(" 학습회수 "); ytitle(" 평균제곱오차 "); title(" 학습과정 "); msgprint(" "); msgprint(" 학습된계수 : ") w msgprint(" 학습된바이어스 :"); b msgprint(" "); ------------------------------------------------------------
Δ η
δ η δ α δ δ η α
CEMTool>> pattern = [0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0; 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1; 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0; 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0; 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0; 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0; 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0; 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0; 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1; 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0]; CEMTool>> target=eye(10); CEMTool>> [w1 b1 w2 b2] = genmlp(pattern, 9, target, [-0.1 0.1]);
CEMTool>> [w1 b1 w2 b2 errs esave] = trainbp(w1, b1, "tansig", w2, b2, "logsig", pattern, target, 0.5, 1.5, 2000, 0.01); CEMTool>> out=simulnet(w1,b1,"tansig",w2,b2,"logsig",pattern);
% 다층인식자를사용한숫자인식데모 (demo_mlp2.cem) ------------------------------------------------------------- msgprint(" 오차역전파학습을이용한숫자인식 "); msgprint(" "); msgprint(" 숫자패턴 "); msgprint(" "); msgprint(" # ## ### # # #### ### #### ## ## ## ");
msgprint("## # # # # # # # # # # # # # #"); msgprint(" # # # #### ### ### # ## ### # #"); msgprint(" # # # # # # # # # # # # #"); msgprint("### #### ### # ### ## # ## #### ## "); // 6, 2-element input vectors. pattern = [0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0; 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1; 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0; 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0; 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0; 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0; 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0; 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0; 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1; 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0]; [N M]=size(pattern); // 패턴개수 target=eye(n); // target vector // generate a network [w1 b1 w2 b2] = genmlp(pattern, 9, target, [-0.1 0.1]); // train the network using percetron learning rule. [w1 b1 w2 b2 errs esave] = trainbp(w1, b1, "tansig", w2, b2, "logsig", pattern, target, 0.5, 1.5, 2000, 0.01); // display the training result out=simulnet(w1,b1,"tansig",w2,b2,"logsig",pattern); [a output]=max(out); output=rem(output,n); msgprint(" ") msgprint(" 학습결과 "); show="? -------->?"; for(i=1; i<=n; i=i+1) { show(4)=int2str(rem(i,n)); show(18)=int2str(output(i)); msgprint(show);
} // test the network with perturbed patterns [a b]=size(pattern); pat=zeros(size(pattern)); for(i=1; i<=a; i=i+1) { for(j=1; j<=a; j=j+1) { if(rand(1)<0.1) // 10 percents perturbation pat(i;j)=1-pattern(i;j); else pat(i;j)=pattern(i;j); } } out=simulnet(w1,b1,"tansig",w2,b2,"logsig",pat); [a output]=max(out); output=rem(output,10); msgprint(" "); msgprint(" 테스트결과 "); show="? -------->?"; for(i=1; i<=n; i=i+1) { show(4)=int2str(rem(i,n)); show(18)=int2str(output(i)); msgprint(show); } -------------------------------------------------------------
α α
α α α ρ π CEMTool>> pattern=linspace(0,4*pi,300)'; CEMTool>> target=sin(3*pattern)+0.2*pattern; γ CEMTool>> [c w e]=trainrbf(pattern,target,50,5,"d");
γ CEMTool>> out=simulrbf(c,w,gamma,tp); % RBFN 을사용해서 1 차원비선형함수를학습하는데모 (demo_rbf.cem)
----------------------------------------------------------------- % 입력패턴 : N개의점으로구성 N=300; pattern=linspace(0,4*pi,n)'; desired=sin(3*pattern)+0.2*pattern; % 학습 hidden=50; gamma=3; msgprint(" "); msgprint(" 학습중..."); msgprint(" "); [c w e]=trainrbf(pattern,desired,hidden,gamma,"d"); % 테스트집합구성 N=200; tp=sort(rand(n, 1))*4*pi; td=sin(3*tp)+0.2*tp; msgprint(" "); msgprint(" 테스트중..."); errs=testrbf(c,w,gamma,tp,td); out=simulrbf(c,w,gamma,tp); msgprint(" "); msgprint(" 테스트결과 ( 평균제곱오차 ) : "); mean(errs.*errs) //plot(tp,out,"r*",tp,td,"b",tp,errs,"c"); plot(tp,td,"b",tp,out,"r*"); title("rbfn 테스트결과 "); -----------------------------------------------------------------
μ γ γ μ μ μ ψ μ ψ μ μ ψ γ
γ α α α α
γ βγ β CEMTool>> pattern=linspace(-1,1,100)'; CEMTool>> target=zeros(100,1); CEMTool>> for(i=1; i<=100; i=i+1) { if(pattern(i)<-0.2) target(i)=-2.5*pattern(i)-1.5; else if(pattern(i)<0) target(i)=5*pattern(i); else target(i)=sin(15*pattern(i)/(pattern(i)+1)); } γ γ CEMTool>> [rf lf trainout]= trainplan(pattern,target,0.005,100,20,0.01,"d"); γ
CEMTool>> testout=simulplan(rf, lf, testp);
% PLAN을사용해서 1차원비선형함수를학습하는데모 (demo_plan1.cem) ------------------------------------------------------------------- % 입력패턴과목적값 P=linspace(-1,1,100)'; D=zeros(100,1); for(i=1; i<=100; i=i+1) { if(p(i)<-0.2) D(i)=-2.5*P(i)-1.5; else if(p(i)<0) D(i)=5*P(i); else D(i)=sin(15*P(i)/(P(i)+1)); } figure; plot(p,d,"b"); title(" 학습할함수 ");
% 입력파라미터 gamma=0.003; % RF의폭 T=100; % threshold value of regulation node errbound=0.0006; % 허용되는오차한계 MAX_TRAIN=20; % 하나의 gamma 값에대한학습회수 % 학습시키고결과 plot [rf lf errs]=trainplan(p,d,gamma,t,max_train,errbound,"d"); trainout=simulplan(rf,lf,p); plot(p,d,"b",p,trainout,"r"); title("plan의학습결과 "); % 테스트하고결과 plot(sort해서 ) testp=2*rand(100,1)-1; [testp order]=sort(testp); testd=zeros(100,1); for(i=1; i<=100; i=i+1) { if(testp(i)<-0.2) testd(i)=-2.5*testp(i)-1.5; else if(testp(i)<0) testd(i)=5*testp(i); else testd(i)=sin(15*testp(i)/(testp(i)+1)); } figure; testout=simulplan(rf, lf, testp); plot(testp,testd,"b",testp,testout,"r"); title("plan의테스트결과 "); -------------------------------------------------------------------
α α α CEMTool>> p=somplane(11,11,"grid"); CEMTool>> [w nb]=gensom(p,8,8,"line");
CEMTool>> w=trainsom(w,nb,p,10,30,0.1,100,100,1); τ η τ
% 2차원패턴을 1차원이웃으로구성된 SOM을사용해서학습하는데모 (demo_som2.cem) ------------------------------------------------------------------- p=somplane(11,11,"grid"); figure; plot(p(:,1),p(:,2),"or"); title("2차원입력데이터 "); [w nb]=gensom(p,8,8,"line"); figure; plotsom(w,nb); title("1차원연결뉴런들의초기위치 "); figure; w=trainsom(w,nb,p,10,30,0.1,100,100,1); -------------------------------------------------------------------
신경망활성함수 함수이름 설명 쓰이는곳 hardlim 문턱값활성함수 2,3장 linear 선형활성함수 2,3장 plinear 부분선형활성함수 2,3장 tansig Hyperbolic tangent sigmoid 2,3장 logsig Logistic sigmoid 2,3장 rbf Radial basis function 2,4장 nntf 신경망활성함수설명 2,3,4장 단층인식자 함수이름 설명 쓰이는곳 genlayer 하나의뉴런층 (layer) 생성 2장 trainheb Hebbian 학습규칙 2.2.1절 trainpc 퍼셉트론학습규칙 2.2.2절 trainwh Widrow-Hoff 학습규칙 2.2.3절 traindelt 델타학습규칙 2.2.4절 simulnet 앞먹임신경망의출력계산 2,3장 errornet 앞먹임신경망의오차계산 2,3장 다층인식자 함수이름 설명 쓰이는곳 genmlp 다층인식자생성 3장 trainbp 역전파학습규칙 3장 simulnet 앞먹임신경망의출력계산 3장 errornet 앞먹임신경망의오차계산 3장
방사형기저함수망 (RBFN) 함수이름 설명 쓰이는곳 trainrbf 직교최소제곱법으로 RBFN 학습 4장 simulrbf RBFN의출력계산 4장 testrbf RBFN의오차계산 4장 부분선형근사신경회로망 (PLAN) 함수이름 설명 쓰이는곳 trainplan PLAN 학습 5장 simulplan PLAN의출력계산 5장 testplan PLAN의오차계산 5장 자기구성신경회로망 (SOM) 함수이름 설명 쓰이는곳 distance 데이터간의거리를여러방법으로계산 6장 nbmat 뉴런의이웃과의거리를행렬로생성 6장 neighbor 주어진거리내에속하는뉴런을검색 6장 somplane SOM의뉴런들을 2차원평면상에생성 6장 gensom SOM 생성 6장 trainsom SOM 학습 6장 simulsom 입력과가장가까운뉴런검색 6장 plotsom SOM의연결관계를도시 6장 som SOM 관련함수설명 6장
hardlim 목적 hard limit 전달함수의출력을계산 문법 Y = HARDLIM(X,B) 입력 X : PxR 행렬 B : Px1 바이어스벡터 출력 Y : PxR 행렬 설명 (i,j) 원소는 hardlim(x(i;j)-b(i)) 이다. 바이어스벡터는생략할수있으며, 이때는 0 으로간주한다. 사용예제 CEMTool>> X = [-2 1;3 0]; CEMTool>> B = [0; -1]; CEMTool>> Y = hardlim(x,b) Y = 0 1 1 0 관련함수 nntf 종류신경회로망툴박스함수
linear 목적 linear 전달함수의출력을계산 문법 Y = LINEAR(X, OPTION) 입력 X : PxR 행렬 OPTION : "d" - 미분값출력 출력 Y : PxR 행렬 설명입력값을그대로출력하는전달함수이다. 미분옵션이주어지면 1 을리턴한다. 사용예제 CEMTool>> X = [-2 1;1 3]; CEMTool>> Y1 = linear(x) Y1 = -2 1 1 3 CEMTool>> Y2 = linear(x,"d") Y2 = 1 1 1 1 관련함수 nntf 종류신경회로망툴박스함수
plinear 목적부분선형전달함수의출력을계산 문법 Y = PLINEAR(X, LOW, HIGH, OPTION) 입력 X : PxR 행렬 LOW : 출력이 0이되는점중가장큰값 HIGH : 출력이 1이되는점중가장작은값 OPTION : "d" - 미분값출력 출력 Y : PxR 행렬 설명 1, if x-high>=0 (x-low)/(high-low), if low<=x<high 0, if x<low 사용예제 CEMTool>> X = [0-3;1 6]; CEMTool>> Y = plinear(x,-1,3) Y = 0.2500 0.0000 0.5000 1.0000 관련함수 nntf 종류신경회로망툴박스함수
tansig 목적 hyperbolic tangent sigmoid 전달함수의출력을계산 문법 Y = TANSIG(X, OPTION) 입력 X : PxR 행렬 OPTION : "d" - 미분값출력 출력 Y : PxR 행렬 설명 사용예제 CEMTool>> X = [-2 1;1 3]; CEMTool>> Y1 = tansig(x) Y1 = -0.9640 0.7616 0.7616 0.9951 CEMTool>> Y2 = tansig(x,"d") Y2 = 0.0707 0.4200 0.4200 0.0099 관련함수 logsig, nntf 종류신경회로망툴박스함수
logsig 목적 logistic sigmoid 전달함수의출력을계산 문법 Y = LOGSIG(X, OPTION) 입력 X : PxR 행렬 OPTION : "d" - 미분값출력 출력 Y : PxR 행렬 설명 사용예제 CEMTool>> X = [-2 1;1 3]; CEMTool>> Y1 = logsig(x) Y1 = 0.1192 0.7311 0.7311 0.9526 CEMTool>> Y2 = logsig(x,"d") Y2 = 0.1050 0.1966 0.1966 0.0452 관련함수 tansig, nntf 종류신경회로망툴박스함수
rbf 목적 radial basis 전달함수의출력을계산 문법 Y = RBF(X, C, W) 입력 X : PxR 행렬 C : QxR 중심값행렬 W : radial basis 함수의폭 출력 Y : PxQ 행렬 설명 사용예제 CEMTool>> X = [0 1;1 1]; CEMTool>> C = [1 2]; CEMTool>> Y = rbf(x,c,3) Y = 0.5134 0.7165 관련함수 nntf 종류신경회로망툴박스함수
genlayer 목적앞먹임신경회로망의층하나를생성 문법 [W, B] = GENLAYER(INPUT, OUTPUT, RANGE, OPTION) 입력 INPUT : PxQ 입력패턴행렬혹은입력벡터의길이 OUTPUT : PxR 출력패턴행렬혹은출력벡터의길이 RANGE : 가중치의최소, 최대값벡터 [min max] 생략하면 [-1 1] 로간주 OPTION : "b" - bias 벡터생성 출력 W B : QxR 가중치행렬 : 1xR bias 벡터 설명앞먹임신경망의층을하나생성시킨다. INPUT, OUTPUT 은입출력패턴이올수도있고, 입출력패턴의길이가올수도있다. 초기화되는가중치와바이어스의범위를지정해줄수있으며, 범위가주어지지않으면, [-1 1] 사이의값으로생성한다. 바이어스는옵션으로지정할때에만생성된다. 사용예제 CEMTool>> W = genlayer(3,4,[0.1 0.2]) W = 0.1498 0.1079 0.1272 0.1924 0.1358 0.1585 0.1192 0.1933 0.1955 0.1742 0.1882 0.1294 CEMTool>> [W B] = genlayer(3,4,[0.1 0.2],"b") W = 0.1211 0.1343 0.1431 0.1862 0.1224 0.1995 0.1871 0.1987 0.1926 0.1088 0.1937 0.1219 B = 0.1909 0.1165 0.1220 0.1814 관련함수 genmlp 종류신경회로망툴박스함수
trainheb 목적 Hebbian 학습규칙으로신경회로망학습 문법 W = TRAINHEB(WEIGHT, INPUT, OUTPUT, EPOCH, LRATE, DRATE) 입력 WEIGHT : QxR 가중치행렬 INPUT : PxQ 입력행렬 OUTPUT : PxR 출력행렬 EPOCH : 학습회수 LRATE : 학습률 (learing rate) DRATE : 감쇄율 (decay rate) 출력 W : QxR 학습된가중치행렬 설명 Hebbian 학습규칙은같은시간에두뉴런의활성이크면이들뉴런사이의연결가중치를증가시키는훈련방법이다. 연결가중치의변화는학습률에의해조절된다. 이때연결가중치가발산하는경우가있는데, 감쇄율을사용하여조절할수있다. γ η 가중치 패턴 출력 γ 학습률 η 감쇄율 Ref Haykin, S., Neural Networks, 2nd Edition, Prentice-Hall, New Jersey, 1999 Lin, C.-T. and George, C.S. Lee, Neural Fuzzy Systems, Prentice-Hall, New Jersey, 1996 사용예제 CEMTool>> P = [1 0 0; 0 1 0; 0 0 1; 1 1 1]; CEMTool>> W = genlayer(p,p,[-0.1 0.1]); CEMTool>> B = 0.5*ones(1,3); CEMTool>> W = trainheb(w,p,p,50,0.2,0.05); CEMTool>> simulnet(w,b,"hardlim",p) 0 1 0 1 0 0 0 0 1
관련함수 genlayer, simulnet, demo_hebb 종류신경회로망툴박스함수
trainpc 목적퍼셉트론학습규칙으로네트워크훈련 문법 [W,B,ERRORS] = TRAINPC(WEIGHT,BIAS,PATTERN,TARGET,LRATE,EPOCH,EBOUND) 입력 WEIGHT : QxR 가중치행렬 BIAS : Qx1 bias 벡터 PATTERN : PxQ 입력패턴행렬 TARGET : PxR 목적행렬 LRATE : 학습률 EPOCH : 학습회수 EBOUND : 허용오차한계 출력 W : QxR 학습된가중치행렬 B : Qx1 학습된 bias 벡터 ERRORS : 학습과정을저장한오차벡터 설명선형적으로분리될수있는벡터집합을분류하는신경회로망을훈련시키는함수이다. 출력은 0 과 1 로구성된다. 퍼셉트론학습규칙은다음과같다. γ γ 가중치 바이어스 패턴 학습지도값 오차 γ 학습률 Ref Haykin, S., Neural Networks, 2nd Edition, Prentice-Hall, New Jersey, 1999 Lin, C.-T. and George, C.S. Lee, Neural Fuzzy Systems, Prentice-Hall, New Jersey, 1996 사용예제 CEMTool>> P = [-1 1; 1 1; -1-1; 1-1]; CEMTool>> T = [1 1 0 0]'; CEMTool>> [W B] = genlayer(p,t,[-0.1 0.1],"b"); CEMTool>> [W B E] = trainpc(w,b,p,t,0.1,100,0.01); CEMTool>> Y = simulnet(w,b,"hardlim",p)
Y = 1 1 0 0 관련함수 genlayer, simulnet, errornet, demo_pc 종류신경회로망툴박스함수
trainwh 목적 Widrow-Hoff 학습규칙으로신경회로망훈련 문법 [W,B,ERRORS] = TRAINWH(WEIGHT, BIAS, PATTERN, TARGET, LRATE, EPOCH) 입력 WEIGHT : QxR 가중치행렬 BIAS : Qx1 bias 벡터 PATTERN : PxQ 입력패턴행렬 TARGET : PxR 목적행렬 LRATE : 학습률 EPOCH : 학습회수 출력 W : QxR 학습된가중치행렬 B : Qx1 학습된바이어스벡터 ERRORS : 오차벡터 ( 학습에따른평균제곱오차 ) 설명 Widrow-Hoff 학습규칙에의해선형신경망을훈련시킨다. 이때학습시킬신경망은은닉층이없는단층신경회로망이어야한다. γ γ 가중치 바이어스 패턴 학습지도값 오차 γ 학습률 Ref Haykin, S., Neural Networks, 2nd Edition, Prentice-Hall, New Jersey, 1999 Lin, C.-T. and George, C.S. Lee, Neural Fuzzy Systems, Prentice-Hall, New Jersey, 1996 사용예제 CEMTool>> X = linspace(0,2*pi,100)'; CEMTool>> P = [sin(x) cos(x)]; CEMTool>> T = P*[2; -1]+3; CEMTool>> [W B] = genlayer(p,t,[-0.1 0.1],"b"); CEMTool>> [W B E] = trainwh(w,b,p,t,0.1,20); CEMTool>> W 1.9999
CEMTool>> B -1.0003 3.0003 관련함수 genlayer, simulnet, errornet, demo_lin 종류신경회로망툴박스함수
traindelt 목적델타학습규칙으로신경회로망훈련 문법 [W,B,ERRORS] = TRAINWH(WEIGHT,BIAS,TF,PATTERN,TARGET,LRATE,EPOCH,BOUND) 입력 WEIGHT : QxR 가중치행렬 BIAS : Qx1 bias 벡터 TF : 활성함수 PATTERN : PxQ 입력패턴행렬 TARGET : PxR 목적행렬 LRATE : 학습률 EPOCH : 학습회수 출력 W : QxR 학습된가중치행렬 B : Qx1 학습된바이어스벡터 ERRORS : 오차벡터 ( 학습에따른평균제곱오차 ) 설명델타학습규칙에의해신경회로망을훈련시킨다. 델타학습규칙은다음과같다. γ γ 가중치 바이어스 패턴 학습지도값 오차 γ 학습률 활성함수 Ref Haykin, S., Neural Networks, 2nd Edition, Prentice-Hall, New Jersey, 1999 Lin, C.-T. and George, C.S. Lee, Neural Fuzzy Systems, Prentice-Hall, New Jersey, 1996 사용예제 CEMTool>> X = linspace(0,2*pi,100)'; CEMTool>> P = [sin(x) cos(x)]; CEMTool>> T = (P*[4; -3]+1)/8; CEMTool>> [W B] = genlayer(p,t,[-0.1 0.1],"b");
CEMTool>> [W B E] = traindelta(w,b,"tansig",p,t,0.05,10,0.0002); CEMTool>> W 0.5631-0.4209 CEMTool>> B 0.1543 관련함수 genlayer, simulnet, errornet, demo_del 종류신경회로망툴박스함수
simulnet 목적단층, 다층인식자의출력계산 문법 Y = SIMULNET(W1,B1,TF1,W2,B2,TF2,W3,B3,TF3,W4,B4,TF4,PATTERN) 입력 W1 : QxR 층1과층2 사이의가중치행렬 B1 : 1xQ 층2의바이어스벡터 TF1 : 층2의전달함수 W2 : RxS 층2와층3 사이의가중치행렬 B2 : Sx1 층3의바이어스벡터 TF2 : 층3의전달함수 W3 : SxT 층3과층4 사이의가중치행렬 B3 : 1xS 층4의바이어스벡터 TF3 : 층4의전달함수 W4 : TxU 층4과층5 사이의가중치행렬 B4 : 1xT 층5의바이어스벡터 TF4 : 층5의전달함수 PATTERN : PxQ 입력패턴행렬 출력 Y : PxT 출력행렬 설명다층인식자에대해입력에의해나타나는대한출력을구한다. 신경망은층을은닉층 3 층을포함하여 4 개까지가질수있고각각층마다다른전달함수를사용할수있다. 사용예제 CEMTool>> P = [1-3 2; 4 1 1]; CEMTool>> [W1 B1 W2 B2 W3 B3]=genmlp(P,[5 4],2,[-0.1 0.1]); CEMTool>> Y = simulnet(w1,b1,"logsig",w2,b2,"tansig",w3,b3,"linear",p) Y = 0.0332-0.0769 0.0344-0.0761 관련함수 genlayer, errornet 종류신경회로망툴박스함수
errornet 목적단층, 다층인식자의주어진패턴에대한오차계산 문법 E = ERRORNET(W1, B1, TF1, W2, B2, TF2, W3, B3, TF3, W4, B4, TF4, PATTERN, TARGET) 입력 W1 : QxR 층1과층2 사이의가중치행렬 B1 : 1xQ 층2의 bias 벡터 TF1 : 층2의전달함수 W2 : RxS 층2와층3 사이의가중치행렬 B2 : Sx1 층3의 bias 벡터 TF2 : 층3의전달함수 W3 : SxT 층3과층4 사이의가중치행렬 B3 : 1xS 층4의 bias 벡터 TF3 : 층4의전달함수 W4 : TxU 층4과층5 사이의가중치행렬 B4 : 1xT 층5의 bias 벡터 TF4 : 층5의전달함수 PATTERN : PxQ 입력패턴행렬 TARGET : PxU 목표출력행렬 출력 E : 평균제곱오차 설명앞먹임다층인식자에대해입력과목표출력을가지고신경회로망의오차를계산한다. 신경망은층을 5 개까지가질수있으며, 각각의층마다다른전달함수를사용할수있다. 오차로는모든패턴에대한오차의제곱의평균을출력한다. 사용예제 CEMTool>> P = [1-3 2; 4 1 1]; CEMTool>> T = [0; 1]; CEMTool>> [W1 B1 W2 B2 W3 B3]=genmlp(P,[5 4],T,[-0.1 0.1]); CEMTool>> E = errornet(w1,b1,"logsig",w2,b2,"tansig",w3,b3, "linear",p) E = 0.4409 (weight 가임의로생성되므로값이일정하지는않음 )
관련함수 simulnet, trainbp 종류신경회로망툴박스함수
genmlp 목적다층인식자생성 문법 [W1,B1,W2,B2,W3,B3,W4,B4,...] = GENMLP(INPUT, HIDDEN, OUTPUT, RANGE) 입력 INPUT : PxQ 입력패턴행렬혹은입력벡터의길이 HIDDEN : 은닉층의노드수벡터 ( 최대 3 개까지지원 ) OUTPUT : PxR 출력패턴행렬혹은출력벡터의길이 RANGE : 가중치의최소, 최대값벡터 ([min max]) 생략하면 [-1 1] 로간주 출력 W1, W2... : 가중치행렬 B1, B2... : bias 벡터 설명다층인식자를생성시킨다. INPUT, OUTPUT은입출력패턴이올수도있고, 입출력패턴의길이가올수도있다. HIDDEN은은닉층의뉴런의개수를지정하는벡터이다. 은닉층이하나이면숫자가되고, 여러개이면각층의뉴런수를표시하는벡터가된다. 은닉층은 3층까지만지원된다. 예를들어 2개의은닉층이각각 4개와 5개의노드를갖는다고하면 HIDDEN=[4 5] 가된다. 은닉층은최대 3개까지지정할수있다. RANGE 값이주어지지않으면 [-1 1] 사이의임의값으로모든값을초기화한다. 사용예제 CEMTool>> [W1 B1 W2 B2 W3 B3]=genmlp(3,[5 4],2,[-0.1 0.1]) W1 = -0.0638 0.0938 0.0402-0.0806-0.0284-0.0706 0.0049-0.0516 0.0267-0.0330 0.0798 0.0996-0.0167 0.0793-0.0572 B1 = -0.0629-0.0326-0.0026 0.0863 0.0210 W2 = 0.0299-0.0476 0.0335 0.0222-0.0346 0.0250 0.0894-0.0198 0.0876-0.0026 0.0948-0.0525 0.0795 0.0007-0.0469-0.0365-0.0614-0.0482-0.0019 0.0027 B2 = -0.0655 0.0736-0.0288 0.0402 W3 = -0.0019 0.0917
B3 = 0.0776 0.0788 0.0614 0.0025 0.0890 0.0806-0.0335 0.0053 관련함수 genlayer, trainbp 종류신경회로망툴박스함수
trainbp 목적오차역전파학습 (backpropagation learning) 규칙으로다층인식자학습 문법 [W1 B1 W2 B2 ERRS ESAVE] = TRAINBP(W1,B1,TF1,W2,B2,TF2,PATTERN,TARGET, LRATE,MOMEN,EPOCH,BOUND,OPTION) 입력 W1 : QxR 층1과층2 사이의가중치행렬 B1 : 1xQ 층2의 bias 벡터 TF1 : 층2의전달함수 W2 : RxS 층2와층3 사이의가중치행렬 B2 : Sx1 층3의 bias 벡터 TF2 : 층3의전달함수 PATTERN : PxQ 입력패턴행렬 TARGET : PxS 목적값행렬 LRATE : 학습률 (learning rate) MOMEN : 관성률 (momentum) EPOCH : 최대학습회수 BOUDN : 허용오차한계 OPTION : "d" - 학습중에메시지출력 출력 W1 B1 W2 B2 ERRS ESAVE : 학습된가중치행렬 : 학습된 bias 벡터 : 학습된가중치행렬 : 학습된 bias 벡터 : Px1 각패턴의오차 : 학습과정을저장한오차벡터 10번학습할때 1번저장 설명오차역전파학습규칙은하나의연결가중치가출력오차에미치는영향을출력층으로부터역으로추산하여학습을진행하는방식이다. 학습률은연결가중치를변화시키는크기를조절한다. 관성률은학습이진행되어온방향으로가중치를줌으로써학습속도를높이는효과를준다. 학습은 EPOCH 로표시한학습회수가다할때까지계속되지만, 그이전에오차가한계보다작아지면중단된다. 학습방법은현재입력패턴전체에대해한번갱신하는 Batch 학습방식만지원한다. Ref Haykin, S., Neural Networks, 2nd Editoin, Prentice-Hall, New Jersey,
1999 Lin, C.-T. and George, C.S. Lee, Neural Fuzzy Systems, Prentice-Hall, New Jersey, 1996 사용예제 CEMTool>> P = [1-3 2; 4 1 1]; CEMTool>> T = [0; 1]; CEMTool>> [W1 B1 W2 B2] = genmlp(p,4,t,[-0.1 0.1]); CEMTool>> [W1 B1 W2 B2 E ESAVE]=trainbp(W1,B1,"tansig",W2,B2,"logsig", P,T,0.5,0.5,1000,0.01); CEMTool>> Y = simulnet(w1,b1,"tansig",w2,b2,"logsig",p) Y = 0.0216 0.9734 (weight 가임의로생성되므로값이일정하지는않음 ) 관련함수 genmlp, simulnet, errornet, demo_bp1, demo_bp2 종류신경회로망툴박스함수
trainrbf 목적 radial basis 함수네트워크학습 문법 [CENTER, WEIGHT] = TRAINRBF(PATTERN, TARGET, HIDDEN, GAMMA, OPTION) 입력 PATTERN : PxR 입력패턴행렬 TARGET : Px1 목표출력벡터 HIDDEN : 은닉층의최대노드수 GAMMA : radial basis 함수의폭 OPTION : "d" - 학습중에메시지를화면에표시 출력 CENTER : radial basis 함수의중심값행렬 WEIGHT : 은닉층에서출력노드사이의가중치벡터 ERR : Px1 각각으패턴에대한학습오차 설명 trainrbf 는 radial basis 함수네트워크를학습시키는함수이다. 직교최소제곱법 (orthogonal least square) 을사용하여오차를가장많이줄여주는패턴을중심으로갖는노드를생성시키면서학습한다. Ref Chen, S., "Orthogonal Least Square Learning Algorithm for Radial Basis Function Networks," IEEE Trans. Neural Networks, Vol. 2, No. 2, 1991 사용예제 CEMTool>> X = [5 1;2 3]; CEMTool>> D = [1; 2]; CEMTool>> [C W] = trainrbf(x,d,10,3); CEMTool>> simulrbf(c,w,3,x) 1 2 관련함수 rbf, simulrbf, testrbf, demo_rbf 종류신경회로망툴박스함수
simulrbf 목적 radial basis 함수네트워크의출력을계산 문법 Y = SIMULRBF(CETER, WEIGHT, GAMMA, PATTERN) 입력 CENTER : QxR 중심값행렬 WEIGHT : Qx1 가중치벡터 GAMMA : radial basis 함수의폭 PATTERN : PxR 입력패턴행렬 출력 Y : Px1 출력벡터 설명학습된 radial basis 함수네트워크에대한출력을구한다. 사용예제 CEMTool>> X = [5 1;2 3]; CEMTool>> D = [1; 2]; CEMTool>> [C W] = trainrbf(x,d,10,3); CEMTool>> Y = simulrbf(c,w,3,x) Y = 1 2 관련함수 trainrbf, testrbf, rbf, demo_rbf 종류신경회로망툴박스함수
testrbf 목적 radial basis 전달함수네트워크의오차계산 문법 ERRS = TESTRBF(CENTER, WEIGHT, GAMMA, PATTERN, TARGET) 입력 CENTER : QxR 중심값행렬 WEIGHT : Qx1 가중치벡터 GAMMA : radial basis 함수의폭 PATTERN : PxR 입력패턴행렬 TARGET : Px1 원하는출력벡터 출력 ERRS : Px1 오차벡터 설명학습된 RBFN 에대해주어진입력과목표출력값을이용하여네트워크의오차를구한다. ( 오차 ) = (RBFN 의출력 ) - ( 목표값 ) 사용예제 CEMTool>> X = [5 1;2 3]; CEMTool>> D = [1; 2]; CEMTool>> [C W] = trainrbf(x,d,10,3); CEMTool>> ERR = testrbf(c,w,3,x,d) ERR = 0 0 관련함수 nntf 종류신경회로망툴박스함수
trainplan 목적부분선형근사신경회로망 (PLAN) 학습 문법 [RF, LF, ERRS] = TRAINPLAN(PATTERN,TARGET,GM,THRES,MAXNUM,ERRB,OLDRF, OLDLF,OPTION) 입력 PATTERN : PxR 입력패턴 TARGET : Px1 출력벡터 GM : receptive field의폭을결정하는값 THRES : receptive field에속하는지판단하는문턱값 MAXNUM : 주어진 GM에대한최대학습회수 ERRB : 허용하는오차한도 OLDRF : 미리학습되어있는 RF 행렬 ( 생략가능 ) OLDLF : 미리학습되어있는 LF 행렬 ( 생략가능 ) OPTION : "f" - gamma 값을고정 "d" - 학습상황표시 출력 RF LF ERRS : Mx(R+2) RF 노드의중심벡터, 폭, 학습회수 : Mx(R+1+(R+1)^2) LF 노드의가중치와자기상관행렬벡터 : Px1 각각의입력에대한오차벡터 설명 PLAN 은임의의비선형사상을국부영역에서유사사상으로근사한다. 각노드는 RF 와 LF 를갖는데, RF 는국부영역을표현하고, LF 는그영역을선형으로근사한다. 초기에주어진 gamma 값으로충분히근사할수없으면, 0.9*gamma 로줄여서계속학습을시도한다. Ref Choi, C.-H. and Choi. J.Y., "Constructive Neural Networks with Piecewise Interpolation Capabilities for Function Approximations," IEEE Trans. on Neural Networks, Vol.5, No.6, 1994. 사용예제 CEMTool>> X = [5 1;2 3]; CEMTool>> D = [1; 2]; CEMTool>> [RF LF OUT] = trainplan(x,d,0.5,100,10,0.01); CEMTool>> Y = simulplan(rf,lf,x) Y =
1.0000 2.0000 관련함수 simulplan, testplan 종류신경회로망툴박스함수
simulplan 목적부분선형근사신경회로망 (PLAN) 의출력계산 문법 Y = SIMULPLAN(RF, LF, PATTERN) 입력 RF : Mx(R+2) RF 노드행렬 LF : Mx(R+1+(R+1)^2) LF 노드행렬 PATTERN : PxR 입력패턴 출력 Y : Px1 출력벡터 설명학습된 PLAN 의출력을구한다. 사용예제 CEMTool>> X = [5 1;2 3]; CEMTool>> D = [1; 2]; CEMTool>> [RF LF OUT] = trainplan(x,d,0.5,100,10,0.01); CEMTool>> Y = simulplan(rf,lf,x) Y = 1.0000 2.0000 관련함수 trainplan, testplan 종류신경회로망툴박스함수
testplan 목적부분선형학습신경회로망 (PLAN) 의오차계산 문법 ERRS = TESTPLAN(RF, LF, PATTERN, TARGET) 입력 PATTERN : PxR 입력패턴 TARGET : Px1 출력벡터 RF : Mx(R+2) RF 노드행렬 LF : Mx(R+1+(R+1)^2) LF 노드행렬 출력 ERRS : Px1 오차벡터 설명학습된 PLAN 에대해주어진입력과목표출력값을이용하여 PLAN 의오차를구한다. ( 오차 ) = (PLAN 의출력 ) - ( 목표값 ) 사용예제 CEMTool>> X = [5 1;2 3]; CEMTool>> D = [1; 2]; CEMTool>> [RF LF OUT] = trainplan(x,d,0.5,100,10,0.01); CEMTool>> ERR = testplan(rf,lf,x,d) ERR = 0 0 관련함수 trainplan, simulplan 종류신경회로망툴박스함수
distance 목적데이터간의거리를여러가지 metric 을통하여계산 문법 D = DISTANCE(W, OPTION) 입력 W : PxQ 데이터패턴행렬 ( 하나의데이터는 1xQ 벡터 ) OPTION : "ucli" - 유클리드거리 "grid" - 대각선방향을 1 로취급 ( 한점에서같은거리를갖는집합의모양이정사각형 ) "diam" - 격자모양에서 1 간의거리를 1 로하여계산 ( 한점에서같은거리를갖는집합의모양이마름모 ) 출력 D : PxP 거리행렬 설명여러개의벡터들간의거리를계산하여하나의행렬에저장한다. D 행렬의 (i,j) 원소는 i 번째패턴과 j 번째패턴의거리를나타낸다. 따라서 D 는대칭행렬이며, 대각원소는모두 0 이다. 사용예제 CEMTool>> P = [1 2; 2 1; 3 4] P = 1 2 2 1 3 4 CEMTool>> D = distance(p,"ucli") D = 0.0000 1.4142 2.8284 1.4142 0.0000 3.1623 2.8284 3.1623 0.0000 CEMTool>> D = distance(p,"grid") D = 0 1 2 1 0 3 2 3 0 CEMTool>> D = distance(p,"diam")
D = 0 2 4 2 0 4 4 4 0 관련함수 nbmat, neighbor, somplane, som 종류신경회로망툴박스함수
nbmat 목적 SOM 뉴런의이웃과의연결관계에따른거리를행렬로생성한다. 문법 W = NBMAT(P, Q, OPTION) 입력 P : 생성할뉴런의행수 Q : 생성할뉴런의열수 OPTION : "line" - 뉴런들이 1개의선으로연결 (1차원뉴런 ) "circ" - 유클리드거리로이웃을결정 ( 하나의뉴런에서같은거리를갖는집합의모양이원 ) "grid" - 대각선방향을 1로취급 ( 하나의뉴런에서같은거리를갖는집합의모양이정사각형 ) "diam" - 격자모양에서 1간의거리를 1로하여계산 ( 하나의뉴런에서같은거리를갖는집합의모양이마름모 ) "hexa" - 육각형모양으로이웃이생성 출력 NB : (PQ)x(PQ) 뉴런간의거리행렬 설명입력패턴과생성할뉴런의수, 이웃간의관계를이용하여 2 차원 SOM 의뉴런들의연결관계에따른거리관계를생성한다. 사용예제 CEMTool>> P = [1 2; 2 1; 3 4] P = 1 2 2 1 3 4 CEMTool>> NB = nbmat(2,3,"circ") NB = 0.0000 1.0000 1.0000 1.4142 2.0000 2.2361 1.0000 0.0000 1.4142 1.0000 2.2361 2.0000 1.0000 1.4142 0.0000 1.0000 1.0000 1.4142 1.4142 1.0000 1.0000 0.0000 1.4142 1.0000 2.0000 2.2361 1.0000 1.4142 0.0000 1.0000 2.2361 2.0000 1.4142 1.0000 1.0000 0.0000
CEMTool>> NB = nbmat(2,3,"hexa") NB = 0.0000 1.0000 1.0000 1.7321 2.0000 2.6458 1.0000 0.0000 1.0000 1.0000 1.7321 2.0000 1.0000 1.0000 0.0000 1.0000 1.0000 1.7321 1.7321 1.0000 1.0000 0.0000 1.0000 1.0000 2.0000 1.7321 1.0000 1.0000 0.0000 1.0000 2.6458 2.0000 1.7321 1.0000 1.0000 0.0000 관련함수 distance, neighbor, somplane, som 종류신경회로망툴박스함수
neighbor 목적주어진뉴런에서정한거리내에속하는뉴런을찾아낸다. 문법 NB = NEIGHBOR(NM, P, D) 입력 NM : 뉴런간의거리가저장되어있는행렬 P : 이웃을구하고자하는뉴런 D : 이웃의최대거리 출력 NB : Rx2 행렬 ( 거리 D 내에있는이웃의수 ) NB(:,1) - 이웃이되는뉴런의번호 NB(:,2) - 이웃뉴런과의거리 설명주어진뉴런에서정한거리내에속하는뉴런을찾아서, 뉴런의번호와거리를행렬로표시한다. 사용예제 CEMTool>> P = [1 2; 2 1; 3 4] P = 1 2 2 1 3 4 CEMTool>> NM = nbmat(2,3,"circ") NM = 0.0000 1.0000 1.0000 1.4142 2.0000 2.2361 1.0000 0.0000 1.4142 1.0000 2.2361 2.0000 1.0000 1.4142 0.0000 1.0000 1.0000 1.4142 1.4142 1.0000 1.0000 0.0000 1.4142 1.0000 2.0000 2.2361 1.0000 1.4142 0.0000 1.0000 2.2361 2.0000 1.4142 1.0000 1.0000 0.0000 CEMTool>> NB = neighbor(nm,2,1.5) NB = 1.0000 1.0000 2.0000 0.0000 3.0000 1.4142 4.0000 1.0000
관련함수 distance, somplane, simulsom 종류신경회로망툴박스함수
somplane 목적 SOM 의뉴런의위치를주어진규칙에따라 2 차원평면상에만든다. 문법 PL = SOMPLANE(ROW, COL, OPTION) 입력 ROW : 생성할뉴런의행수 COL : 생성할뉴런의열수 OPTION : "grid" - 1 간격의 grid 마다하나의뉴런을만든다. "hexa" - 육각형모양으로뉴런을만든다. "rand" - 육각형모양에잡음을넣어만든다. 출력 NB : (ROWxCOL)x2 위치행렬 설명주어진옵션에따른모양에의해 (x,y) 좌표상의점을 ROWxCOL 개생성한다. 사용예제 CEMTool>> PL1 = SOMPLANE(3,3,"grid") PL1 = 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 CEMTool>> PL2 = SOMPLANE(3,3,"hexa") PL2 = 0.0000 0.0000 0.5000 0.8660 0.0000 1.7321 1.0000 0.0000 1.5000 0.8660 1.0000 1.7321 2.0000 0.0000 2.5000 0.8660 2.0000 1.7321
관련함수 som 종류신경회로망툴박스함수
gensom 목적 SOM 을생성한다. 문법 [W NB] = GENSOM(P, M, N, OPTION) 입력 PATTERN : PxQ 패턴행렬 ( 하나의데이터는 1xQ 벡터 ) M : 생성하는뉴런의행수 N : 생성하는뉴런의열수 OPTION : "line" - 뉴런들이 1개의선으로연결 (1차원뉴런 ) "circ" - 유클리드거리로이웃을결정 ( 하나의뉴런에서같은거리를갖는집합의모양이원 ) "grid" - 대각선방향을 1로취급 ( 하나의뉴런에서같은거리를갖는집합의모양이정사각형 ) "diam" - 격자모양에서 1간의거리를 1로하여계산 ( 하나의뉴런에서같은거리를갖는집합의모양이마름모 ) "hexa" - 육각형모양으로이웃이생성 출력 W NB : MxN 생성뉴런행렬 : (MN)x(MN) 뉴런간의거리행렬 설명입력패턴과생성할뉴런의수, 이웃간의관계를이용하여하나의 SOM 을생성한다. 각차원에서입력패턴의최소값과최대값사이에존재하도록 W 가초기화되며, 주어진행, 열의수와옵션에의해이웃을가지도록 NB 가초기화된다. 사용예제 CEMTool>> P = [1 2; 2 1; 3 4] P = 1 2 2 1 3 4 CEMTool>> [W NB] = gensom(p,3,3,"circ") W = 0.0375 0.0120 0.0304 0.0817 0.0230 0.0748 0.0172 0.0063
NB = 0.0000 1.0000 1.0000 1.4142 1.0000 0.0000 1.4142 1.0000 1.0000 1.4142 0.0000 1.0000 1.4142 1.0000 1.0000 0.0000 관련함수 nbmat, somplane, distance, som 종류신경회로망툴박스함수
trainsom 목적 SOM 을학습한다 문법 W = TRAINSOM(W, NB, P, D0, TAU1, ETA0, TAU2, EPOCH, PPLOT) 입력 W : NxQ SOM 뉴런의연결강도행렬 NB : NxN 뉴런의거리행렬 P : MxQ 입력행렬 D0 : 이웃과의거리의초기값 (default : max(max(nb));) TAU1 : 이웃과의거리가줄어드는시상수 (default : 1000/log(D0)) ETA0 : 학습률의초기값 (default : 0.1) TAU2 : 학습률이줄어드는시상수 (default : 1000) EPOCH : 최대학습회수 (default : 2000) PPLOT : 뉴런상태를도시하는간격 (default : 100) 출력 W : NxQ 학습된뉴런의연결강도행렬 설명 SOM 을경쟁학습을통해훈련시키는함수이다. Ref Haykin, S., Neural Networks, 2nd Edition, Prentice-Hall, New Jersey, 1999 Lin, C.-T. and George, C.S. Lee, Neural Fuzzy Systems, Prentice-Hall, New Jersey, 1996 사용예제 CEMTool>> P = SOMPLANE(3,3,"grid"); CEMTool>> [W NB] = GENSOM(P,2,3,"hexa"); CEMTool>> W = TRAINSOM(W,NB,P,[],[],[],[],[],[]); 관련함수 simulsom, som 종류신경회로망툴박스함수
simulsom 목적주어진패턴과가장가까운 SOM 뉴런을찾는다. 문법 Y = SIMULSOM(W, P) 입력 W : NxQ SOM 뉴런의연결강도행렬 P : MxQ 입력행렬 출력 Y : Nx1 P 와가장가까운뉴런의번호 설명하나혹은여러개의입력패턴에대해가장가까운연결강도를갖는 SOM 의뉴런들을찾는다. 사용예제 CEMTool>> P = [1 2; 2 1; 3 4] P = 1 2 2 1 3 4 CEMTool>> [W NB] = gensom(p,2,3,"circ") W = 0.0011 0.0004 0.0335 0.0033 0.0356 0.0217 0.0537 0.0196 0.0700 0.0950 0.0275 0.0444 NB = 0.0000 1.0000 1.0000 1.4142 2.0000 2.2361 1.0000 0.0000 1.4142 1.0000 2.2361 2.0000 1.0000 1.4142 0.0000 1.0000 1.0000 1.4142 1.4142 1.0000 1.0000 0.0000 1.4142 1.0000 2.0000 2.2361 1.0000 1.4142 0.0000 1.0000 2.2361 2.0000 1.4142 1.0000 1.0000 0.0000 CEMTool>> Y = simulsom(w, [-1 2]) Y = 5
관련함수 trainsom, som 종류신경회로망툴박스함수
plotsom 목적 SOM 의뉴런들과이웃관계를도시한다. 문법 PLOTSOM(W, NB, D) 입력 W : PxQ 뉴런의위치행렬 ( 하나의뉴런은 1xQ 벡터 ) NB : 이웃과의거리를저장하는행렬 D : 이웃의최대거리 설명뉴런을 2 차원평면상에점으로도시하고, D 보다작거나같은이웃뉴런을선으로연결한다. 사용예제 CEMTool>> W = somplane(2,3,"hexa") W = 0.0000 0.0000 0.5000 0.8660 1.0000 0.0000 1.5000 0.8660 2.0000 0.0000 2.5000 0.8660 CEMTool>> NB = nbmat(2,3,"hexa") NB = 0.0000 1.0000 1.0000 1.7321 2.0000 2.6458 1.0000 0.0000 1.0000 1.0000 1.7321 2.0000 1.0000 1.0000 0.0000 1.0000 1.0000 1.7321 1.7321 1.0000 1.0000 0.0000 1.0000 1.0000 2.0000 1.7321 1.0000 1.0000 0.0000 1.0000 2.6458 2.0000 1.7321 1.0000 1.0000 0.0000 CEMTool>> PLOTSOM(W,NB,1) 관련함수 distance, som 종류신경회로망툴박스함수
예제이름 설명 쓰이는곳 demo_heb.cem Hebbian 학습규칙데모 2.2.1절 demo_pc.cem 퍼셉트론학습규칙데모 2.2.2절 demo_lin.cem Widrow-Hoff 학습규칙데모 2.2.3절 demo_del.cem 델타학습규칙데모 2.2.4절 demo_mlp1.cem 다층인식자학습데모 (XOR 문제 ) 3장 demo_mlp2.cem 다층인식자학습데모 ( 숫자인식 ) 3.3절 demo_rbf.cem RBFN 학습데모 ( 함수근사 ) 4.3절 demo_plan1.cem PLAN 학습데모 ( 함수근사 ) 5.3절 demo_plan2.cem PLAN 학습데모 ( 시계열예측 ) 5장 demo_som1.cem SOM 학습데모 (SOM 생성 ) 6장 demo_som2.cem SOM 학습데모 (1차원이웃구조 ) 6.3절 demo_som3.cem SOM 학습데모 (2차원이웃구조 ) 6.3절