
En este artículo te muestro como hacer tu primera red neuronal, sin tener conocimientos previos de Inteligencia Artificial, y sin necesidad de instalar nada en tu equipo. «Tu primer Hola Mundo Machine Learning».
Los requisitos son:
- Un editor de texto
- Un Navegador (Firefox, Chrome, Edge, etc.)
- Conexión a internet.
Vamos alla:
Vamos a crear un fichero html con nuestro editor favorito por ejemplo notepad.
El fichero lo vamos a denominar «hola mundo machine learning.html»
Este fichero una vez completado lo vamos a abrir con nuestro navegador favorito: Firefox, Chrome, Edge, etc.
El objetivo es mostrar un formulario y usar una red neuronal para sumar dos números.
No suena muy emocionante, pero esta aplicación es un «Hola Mundo» lo de menos es la funcionalidad, lo importante es que vamos a usar nuestra primera red neruronal para resolver el problema.
La red neuronal la vamos a entrenar con cinco sumas ( 1 + 0 = 1, 2 + 1 = 3, 1 + 4 = 5, 6 + 1 = 7, 4 + 4 = 8) y tendrá que inferir nuevas sumas por ejemplo 2 + 5, 3 + 4, que le podremos preguntar mediante un formulario.
El fichero está escrito en html y javascript, y la librería de machine learning que utiliza es brain.js
<!DOCTYPE html>
<html>
<head>
<title>Hola Mundo Machine Learning</title>
<style type="text/css">
#cuadro {
padding: 2rem;
font-size: 4rem;
margin-left: 15rem;
}
</style>
<style type="text/css">
#cuadro2 {
padding: 2rem;
font-size: 1rem;
margin-left: 15rem;
}
</style>
</head>
<body>
<div id="cuadro">
Hola Mundo Machine Learning
</div>
<div id="cuadro2">
<p>Vamos a sumar dos números menores que 10:</p>
<input id="numero1"><br>
<input id="numero2">
<button type="button" onclick="miFuncionSuma()">Sumar</button>
<p id="resultado"></p>
</div>
<script src="https://unpkg.com/brain.js"></script>
<script type="text/javascript">
function miFuncionSuma()
{
var x,y,suma,text;
x = document.getElementById("numero1").value;
y = document.getElementById("numero2").value;
if (isNaN(x) || isNaN(y))
{
text = "Es necesarios introducir dos números válidos";
}
else
{
if (x > 9 || y > 9)
{
text = "Los números deben de ser menores que 10";
}
else
{
suma=sumaMachineLearning(x,y)
text= suma;
}
}
document.getElementById("resultado").innerHTML = text;
}
function sumaMachineLearning(x,y)
{
//Inicializar red neuronal
var redneuronal = new brain.NeuralNetwork();
// Entrenar la red neuronal
redneuronal.train
([
{input: {cifra1: .1, cifra2: 0}, output: {suma: .1}},
{input: {cifra1: .2, cifra2: .1, }, output: {suma: .3}},
{input: {cifra1: .1, cifra2: .4}, output: {suma: .5}},
{input: {cifra1: .6, cifra2: .1}, output: {suma: .7}},
{input: {cifra1: .4, cifra2: .4}, output: {suma: .8}},
]);
console.log(x);
console.log(y);
e1 = x/10;
e2 = y/10;
console.log(e1);
console.log(e2);
var entrada =
{
cifra1: e1,
cifra2: e2,
};
//Obtener la prediccion de la red
var r = redneuronal.run(entrada);
console.log(r);
// redondear el resultado
resultado = Math.round(r.suma*10);
console.log(resultado);
salida = resultado;
return salida;
}
</script>
</body>
</html>
Esta es la pantalla de la aplicación:

Si queremos sumar 2 + 3, que es un valor que no está en los datos de entrenamiento.

¡¡¡Da 5!!!, veamos como lo hace la red neuronal.
El código contiene la definición del formulario y el código javascript para filtrar los parámetros, pero nos vamos a centrar en la función sumaMachineLearning(x,y) que es donde se emplea la red neuronal.
function sumaMachineLearning(x,y)
{
//Inicializar red neuronal
var redneuronal = new brain.NeuralNetwork();
// Entrenar la red neuronal con cinco sumas
redneuronal.train
([
{input: {cifra1: .1, cifra2: 0}, output: {suma: .1}},
{input: {cifra1: .2, cifra2: .1, }, output: {suma: .3}},
{input: {cifra1: .1, cifra2: .4}, output: {suma: .5}},
{input: {cifra1: .6, cifra2: .1}, output: {suma: .7}},
{input: {cifra1: .4, cifra2: .4}, output: {suma: .8}},
]);
console.log(x);
console.log(y);
e1 = x/10;
e2 = y/10;
console.log(e1);
console.log(e2);
var entrada =
{
cifra1: e1,
cifra2: e2,
};
//Obtener la prediccion de la red
var r = redneuronal.run(entrada);
console.log(r);
// redondear el resultado
resultado = Math.round(r.suma*10);
console.log(resultado);
salida = resultado;
return salida;
}
