今天一时兴起,在Matlab上画了下Cost函数,
成本函数的定义如下:
Matlab 源码如下:
close all;
clear;x = linspace(0, 1, 50);
x = [ones(50, 1),x'];
y = linspace(0, 1, 50);
y = y';
for k = 1:length(y)
if mod(k,2) > 0
y(k) = 1;
else
y(k) = 0;
end
end
w = linspace(-1, 2, 50);
b = linspace(-1, 2, 50);
J_vals = zeros(length(w), length(b));
for i = 1:length(w)
for j = 1:length(b)
theta = [w(i); b(j)];
J_vals(i,j)= -1 * sum( y .* log( sigmoid(x*theta) ) + (1 - y ) .* log( (1 - sigmoid(x*theta)) ) )/50;
end
end
J_vals = J_vals';
figure;
surf(w, b, J_vals)
xlabel('w'); ylabel('b');
function g = sigmoid(z)
g = zeros(size(z));
g = 1 ./ ( 1 + exp(-z) ) ;
end
执行结果: