Computer Vision์ ๊ธฐ์ด,,, Deep Learning์ ๊ธฐ์ด๋ฅผ ๋ค์ง๊ธฐ ์ํด Multiclass Classification์ ๋ํด ๊ณต๋ถํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
MNIST Dataset์ Machine Learning ๋ถ์ผ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ์ค ํ๋์ ๋๋ค.
์ด ๋ฐ์ดํฐ๋ ์์ผ๋ก ์ด ์ซ์ ์ด๋ฏธ์ง์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ ์ด๋ฏธ์ง๋ 28x28 ํฝ์ (dot๊ฐ ๊ฐ๋ก 28, ์ธ๋ก 28๊ฐ) ํฌ๊ธฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ด ์ด๋ฏธ์ง๋ 0๋ถํฐ 9๊น์ง์ ์ซ์ ์ค ํ๋๋ฅผ ๋ํ๋ ๋๋ค.
โ
์ํคํผ๋์ ํผ์ ๋ก๋ CNN์ผ๋ก ๋ง๋ค์ด์ง MNIST model๋ค์ด ๊ฐ์ฅ Error rate๊ฐ ๋ฎ๋ค์.
โ
์ฐ๋ฆฌ๋ ์ ๋ง ๊ฐ๋ ๋ง ์ดํด๋ณผ๊ฑฐ๋ผ,
1) 1pixel nosie ์์ด์ 5x5๋ฅผ ํ๋์ ์ด๋ฏธ์ง๋ก 50๊ฐ์ Data ์์ฑํ๊ณ .
์๋ฅผ๋ค์ด noise ์๋ 5๋ ์๋์ฒ๋ผ ์ด๋ฏธ์ง๊ฐ ๊ทธ๋ ค์ง๋๋ค.
1 1 1 1 1
1 0 0 0 0
1 1 1 1 0
0 0 0 0 1
1 1 1 1 0
โ
โ
2) 5x5 pixel๋ก 30๊ฐ ๋ฐ์ดํฐ์ ์ผ๋ก Trainingํ๊ณ , 20๊ฐ Data๋ก Test dat์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
์ผ๋จ MATLAB code ๋จผ์ ๋ณด์ฌ๋๋ฆด๊ฒ์. MATLAB code๋ C์ธ์ด ๋๋์ด๋ผ, C ๊ณต๋ถํด๋ณด์ จ์ผ๋ฉด ๋งค์ฐ ์ฝ๊ฒ ํ์ค ๊ฒ ๊ฐ์ต๋๋ค. ์๊ฐ ๋ ๋ pytorch ์ค์ต์๋ฃ๋ ์ถ๊ฐํด๋์๊ฒ์.
โ
โ
TestMultiClass.m : ์ด ํ์ผ์๋ Training Data๊ฐ ๋ค์ด์์ต๋๋ค.
2๊ฐ์ Hidden layer๋ก ๋์ด์๊ณ , 5x5๋ก ๋์ด์๋ ํ๋ ฌ 5๊ฐ๋ก ๊ตฌ์ฑ๋ 3์ฐจ์ ๋ฐ์ดํฐ ๋งคํธ๋ฆญ์ค์ ๋๋ค. hidden layer์๋ sigmoid function์ ์ผ๊ณ , output layer์๋ softmax๋ฅผ ์ฌ์ฉํ์ต๋๋คโฆ ์ด์ ๊ธ์์ ์ค๋ช ํ์ผ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์.
โ
X์์๋ Input image ๊ฐ์ ์ฃผ๋๊ฑฐ๊ณ , D์์๋ Input image๊ฐ ์ด๋ค ๊ฐ์ ๋ํ๋ด๋๊ฑด์ง ์๋ ค์ฃผ๋ ๊ฒ์ด๊ณ โฆ Sigmoid ํจ์๋ฅผ ํตํด Weight๋ฅผ ์ฐพ์๋๊ฐ๋ ๊ณผ์ ์ ๋๋ค.
clear all
rng(3);
X = zeros(5, 5, 5);
X(:, :, 1) = [ 0 1 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 1 1 1 0
];
X(:, :, 2) = [ 1 1 1 1 0;
0 0 0 0 1;
0 1 1 1 0;
1 0 0 0 0;
1 1 1 1 1
];
X(:, :, 3) = [ 1 1 1 1 0;
0 0 0 0 1;
0 1 1 1 0;
0 0 0 0 1;
1 1 1 1 0
];
X(:, :, 4) = [ 0 0 0 1 0;
0 0 1 1 0;
0 1 0 1 0;
1 1 1 1 1;
0 0 0 1 0
];
X(:, :, 5) = [ 1 1 1 1 1;
1 0 0 0 0;
1 1 1 1 0;
0 0 0 0 1;
1 1 1 1 0
];
D = [ 1 0 0 0 0;
0 1 0 0 0;
0 0 1 0 0;
0 0 0 1 0;
0 0 0 0 1
];
W1 = 2*rand(50, 25) - 1;
W2 = 2*rand( 5, 50) - 1;
for epoch = 1:10000 % train
[W1 W2] = MultiClass(W1, W2, X, D);
end
N = 5; % inference
for k = 1:N
x = reshape(X(:, :, k), 25, 1);
v1 = W1*x;
y1 = Sigmoid(v1);
v = W2*y1;
y = Softmax(v)
end
%-----Function Define-------
% MultiClass
function [W1, W2] = MultiClass(W1, W2, X, D)
alpha = 0.9;
N = 5;
for k = 1:N
x = reshape(X(:, :, k), 25, 1);
d = D(k, :)';
v1 = W1*x;
y1 = Sigmoid(v1);
v = W2*y1;
y = Softmax(v);
e = d - y;
delta = e;
e1 = W2'*delta;
delta1 = y1.*(1-y1).*e1;
dW1 = alpha*delta1*x';
W1 = W1 + dW1;
dW2 = alpha*delta*y1';
W2 = W2 + dW2;
end
end
% Sigmoid
function y = Sigmoid(x)
y = 1 ./ (1 + exp(-x));
end
% Softmax
function y = Softmax(x)
ex = exp(x);
y = ex / sum(ex);
end
๊ฒฐ๊ณผ๊ฐ์ ์๋์ ๊ฐ์ต๋๋ค. ์ ํธ๋ ์ด๋๋์๋ค์.
โ
โ
โ
์ฌ๊ธฐ์ 1 pixel noise๊ฐ ์์ธ Data set 5๊ฐ๋ฅผ ๋ฃ์ด๋ณด๊ฒ ์ต๋๋น.
clear all
TestMultiClass; % W1, W2
X = zeros(5, 5, 5);
X(:, :, 1) = [ 0 0 1 1 0;
0 0 1 1 0;
0 1 0 1 0;
0 0 0 1 0;
0 1 1 1 0
];
X(:, :, 2) = [ 1 1 1 1 0;
0 0 0 0 1;
0 1 1 1 0;
1 0 0 0 1;
1 1 1 1 1
];
X(:, :, 3) = [ 1 1 1 1 0;
0 0 0 0 1;
0 1 1 1 0;
1 0 0 0 1;
1 1 1 1 0
];
X(:, :, 4) = [ 0 1 1 1 0;
0 1 0 0 0;
0 1 1 1 0;
0 0 0 1 0;
0 1 1 1 0
];
X(:, :, 5) = [ 0 1 1 1 1;
0 1 0 0 0;
0 1 1 1 0;
0 0 0 1 0;
1 1 1 1 0
];
N = 5; % inference
for k = 1:N
x = reshape(X(:, :, k), 25, 1);
v1 = W1*x;
y1 = Sigmoid(v1);
v = W2*y1;
y = Softmax(v)
end
%-----Function Define-------
% MultiClass
function [W1, W2] = MultiClass(W1, W2, X, D)
alpha = 0.9;
N = 5;
for k = 1:N
x = reshape(X(:, :, k), 25, 1);
d = D(k, :)';
v1 = W1*x;
y1 = Sigmoid(v1);
v = W2*y1;
y = Softmax(v);
e = d - y;
delta = e;
e1 = W2'*delta;
delta1 = y1.*(1-y1).*e1;
dW1 = alpha*delta1*x';
W1 = W1 + dW1;
dW2 = alpha*delta*y1';
W2 = W2 + dW2;
end
end
% Sigmoid
function y = Sigmoid(x)
y = 1 ./ (1 + exp(-x));
end
% Softmax
function y = Softmax(x)
ex = exp(x);
y = ex / sum(ex);
end
๊ฒฐ๊ณผ๊ฐ์ ์๋์ ๊ฐ์ต๋๋ค.
์ฌ์ค ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋์ด ๋ณด๋ฉด, 1์ด๋ผ๊ณ ์๊ฐ ํ ๊ฒ ๊ฐ์๋ฐ, ์ ๊ฐ ๋ง๋ ํธ๋ ์ด๋์ธํธ์์๋ 4๋ก ์ธ์์ ํ๋๊ตฐ์. 2, 3, 5๋ ์ ์ฐพ๋ ๊ฒ ๊ฐ์๋ฐโฆ 1์ด๋ 4๋ฅผ ์ ๋ชป ์ฐพ๋ ๊ฒ ๊ฐ์ต๋๋ค.
โ
clear all
rng(3);
X = zeros(5, 5, 5);
X(:, :, 1) = [ 0 1 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 1 1 1 0
];
X(:, :, 2) = [ 1 1 1 1 0;
0 0 0 0 1;
0 1 1 1 0;
1 0 0 0 0;
1 1 1 1 1
];
X(:, :, 3) = [ 1 1 1 1 0;
0 0 0 0 1;
0 1 1 1 0;
0 0 0 0 1;
1 1 1 1 0
];
X(:, :, 4) = [ 0 0 0 1 0;
0 0 1 1 0;
0 1 0 1 0;
1 1 1 1 1;
0 0 0 1 0
];
X(:, :, 5) = [ 1 1 1 1 1;
1 0 0 0 0;
1 1 1 1 0;
0 0 0 0 1;
1 1 1 1 0
];
X(:, :, 1) = [ 1 0 1 1 0;
0 0 1 1 0;
0 1 0 1 0;
0 0 0 1 0;
0 1 1 1 0
];
X(:, :, 6) = [ 0 0 1 1 0;
1 0 1 1 0;
0 1 0 1 0;
0 0 0 1 0;
0 1 1 1 0
];
X(:, :, 7) = [ 0 0 1 1 0;
0 0 1 1 0;
1 1 0 1 0;
0 0 0 1 0;
0 1 1 1 0
];
X(:, :, 8) = [ 0 0 1 1 0;
0 0 1 1 0;
0 1 0 1 0;
1 0 0 1 0;
0 1 1 1 0
];
X(:, :, 9) = [ 0 0 1 1 0;
0 0 1 1 0;
0 1 0 1 0;
0 0 0 1 0;
1 1 1 1 0
];
X(:, :, 10) = [ 0 0 1 1 1;
0 0 1 1 0;
0 1 0 1 0;
0 0 0 1 0;
0 1 1 1 0
];
X(:, :, 11) = [ 0 0 1 1 0;
0 0 1 1 1;
0 1 0 1 0;
0 0 0 1 0;
0 1 1 1 0
];
D = [ 1 0 0 0 0;
0 1 0 0 0;
0 0 1 0 0;
0 0 0 1 0;
0 0 0 0 1;
1 0 0 0 0;
1 0 0 0 0;
1 0 0 0 0;
1 0 0 0 0;
1 0 0 0 0;
1 0 0 0 0;
1 0 0 0 0
];
W1 = 2*rand(50, 25) - 1;
W2 = 2*rand( 5, 50) - 1;
for epoch = 1:10000 % train
[W1 W2] = MultiClass(W1, W2, X, D);
end
N = 5; % inference
for k = 1:N
x = reshape(X(:, :, k), 25, 1);
v1 = W1*x;
y1 = Sigmoid(v1);
v = W2*y1;
y = Softmax(v)
end
%-----Function Define-------
% MultiClass
function [W1, W2] = MultiClass(W1, W2, X, D)
alpha = 0.9;
N = 5;
for k = 1:N
x = reshape(X(:, :, k), 25, 1);
d = D(k, :)';
v1 = W1*x;
y1 = Sigmoid(v1);
v = W2*y1;
y = Softmax(v);
e = d - y;
delta = e;
e1 = W2'*delta;
delta1 = y1.*(1-y1).*e1;
dW1 = alpha*delta1*x';
W1 = W1 + dW1;
dW2 = alpha*delta*y1';
W2 = W2 + dW2;
end
end
% Sigmoid
function y = Sigmoid(x)
y = 1 ./ (1 + exp(-x));
end
% Softmax
function y = Softmax(x)
ex = exp(x);
y = ex / sum(ex);
end
Model ๋ง๋๋ ๊ณผ์ ์ด ๊ทธ๋๊น,
โ
A Training set์ผ๋ก Model ๋ง๋ค๊ณ Testํด๋ณด๊ณ ,
B Training set์ผ๋ก Model ๋ง๋ค๊ณ Testํด๋ณด๊ณ โฆ.
์ด๋ฐ์์ผ๋ก ๋ฐ๋ณต์ ํด์, ๊ฐ์ฅ ์ข์ Training set์ ์ฐพ์์, Model ๋ง๋๋๊ฒ๋๋ค.
โ
AI๋ก ๋ฐ์ฌ๊ณผ์ ํ๊ณ ์๋ ์น๊ตฌํํ โฆ.
โTraining, Validation, Test ๋ฒกํฐ์ธํธโ ์ด๋ค ๋น์จ์ผ๋ก ์ฃผ๋๊ณ ๋ฌผ์ด๋ณด๋๊น, ๋ณดํต Training Data, Validation data, Test data๋ก 6:3:1์ด๋ 7:2:1 ํน์ 9:1๋ก ์ค๋ค๊ณ ํ๋๋ผ๊ตฌ์ฌ.
โ
โ
โ
์ด๋ฐ๊ฑฐ ํธ๋ ์ด๋ ๋ฐ์ดํฐ์ ์ค์๋ก ๋ฃ์๋ค๊ฐ, 2๋ 3 ๋๋ค ๋ชจ๋ธ์ด ์ด์ํ๊ฒ ๋ง๋ค์ด์ง๋๋ผ๊ตฌ์. ์ด๋ฐ๊ฑฐ ํธ๋ ์ด๋ ๋ฐ์ดํฐ์ ์ ๋ค์ด๊ฐ๋๋ก ์กฐ์ฌํ ํด์ผํฉ๋๋ค.
โ
๋ฐ์ดํฐ์ ํ 50๊ฐ ์ ๋ ๋ฃ์ด๋ณด๋, 5x5์์๋ ์ถฉ๋ถํ ๋ง์กฑ์ค๋ฌ์ด MODEL์ด ์์ฑ๋์์ต๋๋ค.
โ
โ
โ
์ธ๊ณต์ ๊ฒฝ๋ง์์ data์ ์๊ณผ ์ง์ด ์ด๋ป๋๋๊ฐ ๊ฐ์ฅ ์ค์ํ ์์์ธ ๊ฒ ๊ฐ๊ณ , ์ด ์์๋ค์ ์ด๋ค ๋น์จ๋ก Training, Validation์ผ๋ก ๋๋์ง๋ ์ค์ํ๋ฉฐ, ์ด๋ค ํจ์๋ฅผ ๋ช ๊ฐ์ Hidden layer๋ก ์ฌ์ฉํ ์ง ์์๋ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
Learning process๋ฅผ ์์ฝํ๋ฉด input ~ output ๊ฐ weight๋ฅผ ์ฐพ๋ ๊ฒ์ ๋๋ค. Training data์ ์์ด ์ ๊ฑฐ๋ ๋ถ๊ท ํํ๊ฒ ๋ถํฌ๋์ด ์๋ค๋ฉด, ๋ชจ๋ธ์ด ํ์ตํ ํจํด์ด ํธํฅ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋นํ ๋ ธ์ด์ฆ๋ฅผ ์ถ๊ฐํ์ฌ ๋ชจ๋ธ ์์ฑ์ ๋ ธ์ด์ฆ ๋ง์ง์ด ํ์ํฉ๋๋ค. ๋ฆฌ์์นํด๋ณด๋, sigmoid ํจ์๊ฐ binary classification์์ ๋ง์ด ์ฐ์ด์ง๋ง, ์ด์ธ์ ๊ฒฝ์ฐ์ relu ํจ์๊ฐ ๋ชจ๋ธ ์์ฑ์๋, ์๊ฐ์ ์ผ๋ก๋ ๋ ์ข๋ค๊ณ ํ๋ค์. ใ ใ
โ
โ
โ
ํด์ํ๊ทธ :