Enseñando matemáticas a una red neuronal

He vuelto a dedicarle un rato de mis noches de insomnio a preparar un vídeo donde muestro cómo se puede entrenar una red neuronal (MLP) para enseñarle matemáticas simples en Python. En el vídeo puedes ver como la red neuronal aprende a sumar, restar, multiplicar y dividir en pocos minutos.

Es una pequeña demostración, el resultado no es ni preciso ni usable en ningún caso práctico (al menos a mi no se me ocurre ninguno), es sólo una forma de compartir la experiencia para que podáis ver lo sencillo que es empezar a hacer vuestros pinitos con el Machine Learning.

Puedes ver el resultado del código creado en mi cuenta de GitHub, en el repositorio que he llamado Neural Network aprendiendo Matemáticas.

¿Que te ha parecido? ¿Se te ocurre alguna idea interesante para el próximo vídeo? ;)

Entrenando una red neuronal en Python

Mucha gente cree que utilizar el Machine Learning para resolver problemas cotidianos es muy complicado, pero no es del todo cierto, en realidad conociendo algunas herramientas en poco rato se puede tener en marcha un sistema que aprenda a dar respuesta a un problema y se adapte con el tiempo para mejorar su precisión.

He creado un pequeño juego de Piedra Tijeras Papel para enseñar a una red neuronal (muy simple, sin hacer ningún tipo de configuración y “fine tuning”) y mostrar cómo la red neuronal aprende poco a poco y mejora con cada iteración su precisión.

El vídeo está hecho de madrugada, así que espero que sepáis perdonar mi lentitud a la hora de detectar los fallos que yo mismo voy cometiendo durante la creación del código.

¿Que te ha parecido? ¿Has conseguido llegar hasta el final sin dormirte?

Update: He subido el Notebook a mi cuenta de GitHub con el nombre PiedraTijerasPapel – LIVE

Probando Google OpenGallery

Hace unos días que recibí el mail de bienvenida al proyecto de Google OpenGallery, un nuevo proyecto de Google para crear exposiciones online.

Para probarlo un poco, he creado mi cuenta y he subido unas pocas fotos de mi set de Flickr llamado “Interesantes“.

Probando Google OpenGallery

La interfaz inicial del usuario es bastante simple y sencilla de utilizar, en la línea de todos los productos de Google. Pero con la ventaja de que no pierdes la posibilidad de subir el nivel de detalle a la hora de editar detalles de cada foto.

El contrapunto lo he encontrado en la presentación final a los visitantes en dispositivos móviles, que todavía tiene algunos detalles por pulir, pero siempre hay que tener en cuenta que todavía está en fase de prueba por invitación.

Me parece un proyecto muy interesante, donde muchos artistas pueden dar visibilidad a sus obras. De hecho, yo mismo voy a utilizar la plataforma para publicar, en conjunto con una galería de arte, algunas obras muy interesantes (en parte, un trabajo realizado que todavía no ha visto la luz pública). ;)

Nuevo cambio de ciclo profesional

Cuando decidí irme a trabajar como administrador de sistemas a una gran empresa, no sabía muy bien que me esperaba, lo que sí que tenía muy claro es que sería una experiencia muy interesante a la que sacarle mucho jugo.

Así ha sido, he disfrutado trabajando con grandes personas, he profundizado en mis conocimientos de administración de GNU/Linux, arquitectura, comunicaciones y me he familiarizado con mucho software “privativo” (en muchos aspectos, no sólo el económico).

No obstante, en los últimos meses no he parado de plantearme dejar la empresa, ya que había llegado a un punto en que la empresa poco podía aportarme (más que euros) y yo me encontraba con un muro cada vez que quería aportar algo más a la empresa. Una pena que los temas “políticos” de jefes, medallas y verdades maquilladas enturbie el trabajo de gente muy buena que intenta hacer lo mejor que le dejan las cosas.

Por lo tanto y tras agotar todos los cartuchos, decidí abandonar la empresa. Algo que tengo que reconocer que me ha sentado realmente bien. He vuelto a tener esas ganas de hacer cosas, de investigar, de ver un poco más allá. ¡Si hasta he vuelto a programar por puro placer!.

Además, he tenido la suerte de, sin apenas comentarlo con nadie, recibir varias ofertas de trabajo muy interesantes de las cuales ya he cerrado el trato con una que me apetece mucho. Me apetece de nuevo volver a volcarme en el mundo del software libre, que aunque nunca quise abandonar, reconozco que he ido dejando un poco de lado estos años. Me apetece volver a coger nuevos proyectos con ganas, desde el principio, explotando todo el potencial que sea capaz de sacar de las herramientas de las que dispongo y convertirlo de una simple idea en algo productivo, eficiente e incluso rentable. :)

De modo que ya me estoy poniendo el “chip” de productividad y eficiencia de nuevo, mientras voy dejando que mi cerebro vaya recordando de estos últimos años sólo las cosas que merece la pena recordar. Las personas, los proyectos realizados, los errores que nunca volveré a cometer, las risas y los cafés.

De nuevo un cambio de ciclo en mi vida profesional. En los últimos años en el sector informático (y no son pocos), cada cambio de ciclo me ha aportado mucho, muchísimo, mejorando mis conocimientos y mi forma de afrontar (o generar) el trabajo de una forma cada vez mejor. Así que espero que este nuevo ciclo sea más de lo mismo, mejorar un poco más en todas las áreas que pueda.

Algunas de las fotos de esos buenos momentos las dejo en este set de fotos de mi cuenta de Flickr.

Ya tengo ganas de empezar el primer día de mi nuevo ciclo. Me llevo puesto los buenos ratos con la gente con la que he trabajado. ¿Se acordarán ellos de mi? ;)

Ventajas y desventajas de trabajar en una gran empresa

Tengo la suerte de trabajar en lo que me gusta, disfrutar de ello y querer volver todos los días a la oficina. He trabajado en/para startups, pequeñas empresas, empresas medianas y en la etapa más reciente de mi vida laboral estoy trabajando en una “Gran Empresa”, así, con mayúsculas.

Ya que hay varias personas que me han preguntado al respecto para decidir si ir a trabajar o no a una u otra empresa, voy a compartir mi opinión en cuanto a mi experiencia laboral. Insisto, es mi opinión personal y concreta de mi experiencia en área técnica (Administrador de Sistemas GNU/Linux).

Trabajando entre terminales

Desventajas de trabajar en una gran empresa respecto a una pequeña startup

El ruído anula tu voz. En una gran empresa, hacer que te escuchen es muy complicado, incluso si lo que quieres contar es interesante, rentable o una buena idea. Tienes que esforzarte mucho más en expresar tu propuesta para que llegue a los suficientes oídos (o a los adecuados) y eso concluya en algo.

El talento no abunda. Aunque sin la menor duda te encuentras con personas con un talento impresionante, no es un porcentaje predominante ni mucho menos. Es más, si el talento no está bien estimulado, suelen bajar su nivel de esfuerzo y dedicación hasta estar ligeramente por encima de la media. Si el estímulo no aparece en un tiempo, el talento se va.

La culpa es de otro. Una de las peores cosas que he visto en una gran empresa es como se utiliza mucho tiempo y esfuerzo en buscar culpables de cualquier cosa, en soltar la patata caliente cuanto antes y que “el marrón se lo coma otro”. En una startup se asume que el error es posible, el que lo comete enseguida levanta la mano y aparecen alrededor compañeros que no hacen más que ayudar a solventar el problema. Os aseguro que el que levanta la mano una vez, no suele levantarla una segunda vez por lo mismo.

Jefes distantes. Por más que me esfuerzo, no entiendo que ven de positivo en crear distancias entre el grupo de trabajadores y los jefes. A más alto es el cargo, más distancia hay entre él y su subordinado directo. Esto no hace más que incentivar la hipocresía y la desconfianza. Los miembros del equipo se quejan de una y otra cosa, pero ante su jefe no se atreven a exponer el problema (o incluso su propuesta para la solución), y los jefes creen que tienen un equipo contento y motivado, por que no se les quejan de nada importante. Si alguien puede iluminarme en este aspecto, estaré encantado de intentar verle la parte positiva.

Tu esfuerzo se te pide, pero no se te valora. Cuando viene una época complicada y hay que apretar, aprietas. Cambias la agenda de tu vida personal y la “adaptas” a lo que la empresa necesita. Te dedicas a lo tuyo sin consultar el reloj, sólo te fijas en cuanto queda por hacer. Cuando aquello llega a su fin, cuando por fin se le puede dar carpetazo y respirar, tu esfuerzo ni se ha notado. Ha quedado diluido entre el ruido de otros muchos y pocos perciben que tu dedicación ha sido un extra. La empresa te compensa con otra época complicada y vuelves a apretar.

Ventajas de trabajar en una gran empresa respecto a una pequeña startup

El presupuesto. En una gran empresa el presupuesto es importante. Saben el valor que tienen sus datos, sus aplicaciones y la estabilidad de las mismas, por lo que la partida para soportar eso es holgada. Si el equipo está haciendo las cosas bien, no tendrá ningún problema en conseguir el presupuesto pertinente para aumentar sus recursos, probar un nuevo producto o ampliar los que ya tienen.

Los juguetes. Sólo en el último año, yo y/o mis compañeros han podido “jugar” con juguetes como Exadata, Cisco UCS, SAP Hana, F5… Son juguetes que difícilmente vas a poder ver en empresas medianas o pequeñas, ya que tienen precios prohibitivos y sólo las empresas con altos presupuestos se plantean utilizar. Tener 600 servidores operativos, cientos de teras en cabinas de disco o comunicaciones entre equipos de 20Gbps es algo que se convierte en una curiosa rutina.

El software. Al igual que con los juguetes, hay software privativo que no suele estar al alcance de la pequeña empresa (al menos, es sus versiones más grandes), así que es fácil que en pocos meses toques cosas del tipo Virtualización VMWare, Nagios (su versión licenciada), WebLogic, Coherence… Los que ya me conocéis sabréis que esto no lo valoro demasiado, pero por descarte, va en las “ventajas”. :)

La formación. Para que puedas jugar con los juguetes y el software mencionado, la empresa procura proporcionarte una formación adecuada de los mismos. Esto es bueno por que aprendes a exprimir bien el jugo de cada uno y ayudar a que la empresa obtenga un retorno por cada euro invertido en ello más rápido.

La planificación. Cuando tienes un gran castillo de naipes sobre el cual has puesto una vaca lechera a producir leche, sabes que tocar cualquiera de las cartas va a tener una afectación importante. Esto la gran empresa lo sabe (por experiencia) y te permite planificar las cosas, tomarte tu tiempo en estudiar el caso y plantear cómo abordar casos concretos. Al principio puede parecer una obviedad, pero os aseguro que la mayor parte del éxito de cualquier intervención sobre “producción” está en la planificación del mismo.

Las personas. Una gran empresa te permite conocer a grandes personas. Cuando rascas un poco en cada uno de los profesionales con los que vas colaborando ves que tienen detrás una gran experiencia en su área o vienen de otra que les aporta una perspectiva muy interesante. No es raro coincidir con personas que han participado en grandes proyectos, tanto de la empresa como de fuera, que han aportado grandes cambios a la forma de hacer las cosas. Sin duda, esta es una de las mejores cosas de trabajar en una gran empresa. Creo que es lo más enriquecedor a nivel personal y profesional.

Conclusiones

Si te lo estás pensando, no lo dudes, prueba a trabajar en una gran empresa. A pesar de algunas desventajas, la balanza se inclina al otro lado cuando tu experiencia en la misma es enriquecedora. Asume que no vas a jubilarte en ella y exprime hasta el último minuto (la empresa hará lo mismo contigo). Quién sabe, quizá seas tú lo que necesita la empresa para dar ese gran cambio que necesita para volver a estar en la brecha. ¿No te parece?