bugler1 escribió:SpeakerTrading escribió:Es 'simplemente' una red neuronal con varias capas que son capaces de aprender varias características con distintos niveles de abstracción".
Es mucho más complejo que eso. Hay varios tipos de redes neuronales según lo que quieras hacer y dentro de cada tipo hay otros muchos tipos de redes.
La base es siempre la misma y el grueso del desarrollo también. Las redes neuronales, convolucionales, recurrentes... son solo pequeñas variaciones del modelo de la red neuronal. Los resultados pueden variar y hay redes que funcionan mucho mejor que otras para determinadas clasificaciones, pero las diferencias son muy pequeñas entre unos tipos de redes y otros. Ocurre lo mismo que con los algoritmos genéticos, que tienen distintos tipos de codificación, de operadores de cruce/mutación, modelos de islas, genéticos paralelos... pero en el fondo todos funcionan exactamente igual. Solo son variaciones del modelo base.
bugler1 escribió:SpeakerTrading escribió:Yo he estudiado las matemáticas que hay tras el aprendizaje automático porque quiero desarrollarlo, no directamente usar librerías que ya lo hacen..
Veo importantisimo saber las matemáticas y el porque de como funcionan las redes pero veo un esfuerzo innecesario desarrollar tu mismo la aplicación. Una aplicación como tensorflow ha llevado miles de horas de desarrollo y sigue mejorando cada día.
Has omitido en la referencia la frase "Obviamente, si lo necesito, usaré una de las muchas librerías que dan soporte para ello pero, a nivel pedagógico creo que lo mejor es hacerlo uno mismo". Para mi, la mejor manera de aprender a hacer algo es haciéndolo. Cuando vaya a desarrollar, lo haré con librerías que están mucho más depuradas, probadas, completas y optimizadas que mis "ejemplos para aprender".
bugler1 escribió:SpeakerTrading escribió:Esto implica definir la arquitectura de la red, sus variables, el entrenamiento... todo lo necesario. Después, una vez montado todo, si... le das los datos y a esperar el resultado.
.
No es así. Una vez has decidido el tipo de red que vas a usar y tienes los datos viene lo dificil que es entrenar la red con esos datos. Si lo haces mal no converge o memoriza los datos y entonces sus predicciones no valen nada.
Si el aprendizaje de la red es "no supervisado", entrenar la red es automático. Si es supervisado yo personalmente no le veo más dificultad que la que entraña la clasificación de la salida de la red. Si es un traductor, por ejemplo, la dificultad estriba en decir si la traducción es correcta o no para que la red ajuste los pesos.
La convergencia de la red depende de la función de costos. Si la función no es convexa puedes quedar atrapado en óptimos locales.
Lo difícil, en mi opinión, es definir las variables que vamos a clasificar con la red, con que arquitectura... no el entrenamiento que, con ayuda o no de un experto, es "relativamente sencillo". Yo no puedo entrenar una red que traduzca al chino porque no se chino pero si conozco a alguien que sepa chino, ese experto solo tiene que decir "esta bien traducido" o "está mal traducido". La red puedo montarla con las variables o arquitectura erróneas y, por mucho experto y datos que tenga a mi lado, la red nunca va a funcionar porque su diseño no le permite clasificar lo que estoy intentando clasificar.
bugler1 escribió:SpeakerTrading escribió:Nadie te va a dar una red que bata al mercado igual que nadie te da un sistema ganador. Si ya lo tienes, lo usas en vez de dárselo a otros.
Aunque eso está claro, si consiguese una ventaja estadística clara y en real me fucnionase y ganase dinero buscaría alguien que me la comprase por un buen dinero y a vivir que son dos días (aunque yo seguiría invirtiendo porque es cosa de 5 minutos al día tal y como lo tengo pensado.
Es una opción aceptable. Yo, si es realmente bueno, lo usaría exclusivamente para mi inversión. El interés compuesto y el tiempo harían el resto.
bugler1 escribió:SpeakerTrading escribió: Esto me parece un poco contradictorio. Si tienes algún documento, página Web... con más información me gustaría leerlo detenidamente.
Es el enlace que puse ya:
http://karpathy.github.io/2015/05/21/rnn-effectiveness/ . Verás escfritos de shakepeare escritos por la red, codigo C, páginas de algebra (inventada claro), ...
¿Cual es la clave para traducir entre 2 idiomas? Creas una representacíon intermedia entre las frases en un idioma y las frases en otro. Y se trata de entrenar la red para que produzca esa representación intermedia entre millones de frases.
Creo que el estado del arte de la IA permite que una red neuronal aprenda los patrones del precio y prediga los precios con cierta probabilidad por encima del azar como para ganar dinero al mercado. En diciembre me libero un poco del máster y me pondre de nuevo a ello.
Ademas el portatil con linux me va como el culo (tensorflow ahora no corre en windows) pero ya están portando tensorflow a windows y a ver si así trabajo mejor.
Yo en esa página veo muchos ejemplos de una red neuronal recurrente que genera textos en apariencia correctos pero cuya utilidad en la práctica es nula. Lo que consigue es meritorio ya que está generando estructuras correctas o casi correctas pero no tiene ninguna utilidad más allá de la que indica el autor varias veces: "diversión". Simplemente muestra el potencial de las redes neuronales pero para que tenga aplicación práctica hace falta mucho más trabajo que, obviamente, queda fuera del alcance que quiere darle el autor a ese texto.
Yo creo que el aprendizaje automático en general y las redes neuronales en particular tienen mucho potencial pero sigo pensando que hace falta algo más (mucho más) que meterle precios sin más para obtener esa ventaja.
Este hilo es interesante. Espero que puedas dedicarle tiempo y que escribas aquí todo lo que puedas: problemas que encuentres, software que uses... todo. Un servidor estará encantado de leerlo.
Un cordial saludo