Tuesday, December 05, 2006
maquina vs hombre
Entrevista con Mathias Feist, programador de Fritz... Casi todos están a favor de Kramnik. A Deep Fritz 10 eso le da lo mismo: no tiene emociones y siempre está en forma. Sin embargo, el hombre que está detrás de la máquina, Mathias Feist, el programador de Fritz, sí que vive todas las sensaciones humanas y sufre cuando el programa quiere realizar jugadas que él mismo jamás elegiría. El Dr. René Gralla, del periódico "Neues Deutschland", habló con él sobre la fuerza de juego del ordenador, la inteligencia artificial y muchas cosas más.
leer entrevista
Sunday, December 03, 2006
RedNeuronal.sci
/////////////////////////////////////////////////////////////////////////////////
// INTERFAZ
// crea una red neuronal de varias capas
function r = red(varargin)
r = tlist(['red' 'capas' 'errf' 'W' 'gW' 'x'])
Ni = varargin(1)
k = 2;
capas = list()
while k< t =" varargin(k)" no =" varargin(k+1)" ni =" No" k =" k+2" t =" varargin(k)" t="=" w =" []" x =" list()" k="1:size(capas)" w =" [w,zeros(capas(k)('Rw'))]" y =" reval(r,x,l)" red =" r" l =" size(red('capas'));">red('capas')(1)('Ni')
error("evalRed: input no calza")
end
for k=1:l
x = evalCapa(red('capas')(k),x)
end
y = x
// calcula el error de la red r para cada entrada x y salida deseada d
function e = rerr(r,x,d)
global("red","N","D")
red = r
N = size(x,'c'); D = d
if size(x,'r')<>red('capas')(1)('Ni')
error("evalRed: input no calza")
end
if size(d,'r')<>red('capas')($)('No')
error("evalRed: output no calza")
end
if size(x,'c')<>size(d,'c')
error("evalRed: input no calza con output")
end
for c=red('capas')
x = evalCapa(c,x)
end
e = evalCapa(red('errf'),x)
// calcula el gradiente de la red r para entradas x y salidas deseadas d
function gw = grad(r,x,d)
global("red")
red = r
rgrad(x,d)
gw = red('gW')
// calcula el gradiente de la red r para entradas x y salidas deseadas d
// con diferencias finitas (se utiliza para verificar que la retropropagacion
// este bien implementada)
function gw = gradf(r,x,d)
delta = .0000001
w = r('W')
gw = zeros(w)
e0 = sum(rerr(r,x,d))
for i=1:size(w,'c')
v = w(i); w(i) = v+delta; r('W') = w; e = sum(rerr(r,x,d))
gw(i) = (e-e0)/delta
w(i) = v
end
// entrenamiento batch de red r con entradas x i salidas deseadas d
// f es el factor de entrenamiento, c la cantidad de ciclos de l epocas
// una epoca es una pasada sobre todos los ejemplos
// la variable global ERR contiene la secuencia de errores para cada ciclo
function r = batch(r,x,d,f,c,l)
global("red","ERR")
[lhs,rhs] = argn(0)
if rhs < l =" 1;" red =" r" err =" zeros(1,c+1)" k="1:c" e="1:l" r =" red" r =" batch(r,x,d,1,100,20);" r =" red(4,'afin',2,'tanh',2,'afin',4,'logit',4,'errEC')" x =" eye(4,4)" d =" x">