Hace 6 años | Por --413043--
Publicado hace 6 años por --413043--

Comentarios

D

A los que os interese el tema podéis pasaros por DDataScience, que está muy solitario aquello

Estaría muy bien empezar a ver este tipo de temas por menéame

elvecinodelquinto

#17 A mí me interesa el tema, pero no sabia ni que existiese ese sub... =P

ccguy

Comentarios después de una lectura:
- De repente hablas de pesos sin explicar qué son, como se calculan, para qué sirven...
- Y no está explicado para qué sirven las capas, como se decide utilizar una o siete.

D

#1 Veo que ya te ha contestado #2 pero si quieres te lo traduzco para profanos.
Los pesos es la importancia que el sistema le da a cada entrada. Por ejemplo entre 0 y 1. Si el peso es 1, el valor de la entrada se mantiene, digamos que es muy valioso. Si el peso es 0, el valor de la entrada se anula, porque el sistema considera que no es útil. Cualquier valor entre 0 y 1 puede ser usado.

Respecto a las capas, como bien dice #2, no hay una regla general. Las capas sirven para representar el problema lo mejor posible, por lo tanto su número depende de la complejidad del problema. No obstante, para la mayoría de problemas del mundo real, con dos capas es suficiente usando redes neuronales. En redes de convolución o Deep learning, el número de capas puede aumentar, pero también puede aumentar la imprecisión y el coste, así que es un toma y daca.

Acido

#6 #1

Si buscas "peso" en el artículo, verás que la primera vez que dice esa palabra es en este texto:

-----
Como podéis ver, la imagen de arriba representa la función:

y = f(x1*w1 + x2*w2 + x3*w3 + x4*w4 + x5*w5)

Siendo f la función de activación, xn los valores de entrada de la unidad y w los pesos. Normalmente a la función se le añade una variable más llamada peso de sesgo que permitirá activar o desactivar la unidad, por lo que la función quedaría:

y = f(x1*w1 + x2*w2 + x3*w3 + x4*w4 + x5*w5 + b)

Siendo es este caso b el peso de sesgo (bias) y que no está representado en la ilustración superior.
----

Si miras con atención ves que sí te ha dicho a qué se refiere con "pesos" cuando habla, son números usados en cada unidad ('neurona' artificial) para calcular la salida. Esos números (w1, w2, w3, w4 y w5) se multiplican cada uno por un valor de entrada... (el w1 se multiplica por x1, el w2 por x2 y así... ).
Aunque no lo dice el texto, creo que no es difícil adivinar que la w viene de la palabra inglesa "weight" (peso) y la letra b viene de la palabra inglesa "bias" (sesgo) aunque yo he visto que a veces se le llama "threshold" ( 'umbral' ) porque es algo así como hacer una suma y ver si supera cierto valor, cierto umbral...

Y como ha dicho #3 esta multiplicación hace que "amplifiques" / 'aumentes el valor' de una entrada... de forma que si el peso es 0 estás multiplicando por 0, y, por tanto, anulando esa entrada. Digamos que anular una entrada implica que su valor no tiene ninguna importancia a la hora de calcular la salida... porque sea cual sea la entrada Xi al multiplicar por 0 queda Xi*0 = 0 y ese 0 se suma pero no vale de nada. Da igual que Xi sea 0.1 , que sea 0.5 o que sea 0.9 ... o que sea 200. Porque al multiplicar por 0 resulta 0.

En esa parte explica que según el valor que tengan los pesos, el valor de salida de una unidad cambia. La salida y = f ( entradas, pesos). Para unas mismas entradas, con unos pesos te da una salida y con otros otra salida.

Después, en otra parte posterior del artículo, explica que hay una operación llamada Backward Pass, o 'entrenamiento' que modifica los pesos, intentando que la salida sea la quieres... Y que la 'y' que obtienes (y_real) sea más parecida a la "y" que deseas ( que podemos llamar y_objetivo, o y_ideal) es lo mismo que decir que el error sea el mínimo... Ej: si (y_ideal - y_real) , es decir, la resta, la diferencia, es pequeña o es menor que antes entonces la distancia es pequeña o es menor y quiere decir que estás más cerca, que tu y_real está más cerca de la Y_ideal que quieres que te de la red.

En resumen:
los pesos (incluyendo el peso de sesgo) son números variables que definen el "estado" de la red y ese "estado" determina el valor de salida que obtienes para cada vector de entradas.
El entrenamiento de la red consiste en cambiar esos pesos (ej: unos los disminuyes, otros los aumentas, etc) para acercarte más y más a los valores de salida que deseas para cada entrada.
Cuando el valor de salida, para cada entrada, es el que deseas, o suficientemente cercano, ya puedes dar por finalizado el entrenamiento y mágicamente tu red neuronal artificial ha "aprendido" a clasificar las entradas en los grupos que querías. En el ejemplo del artículo, cuando la salida da 4 para cada conjunto de vectores que sean imágenes del número 4, y cuando da 5 para las imágenes de 5, y da 6 para las del 6.... la red ha aprendido a clasificar bien las imágenes, reconociéndolas cada una como el número que refleja. Al menos con ese conjunto de imágenes de entrada... porque podría fallar con otra imagen de un número que yo escriba, que no sea igual a esos con los que se ha entrenado.

cc #2

ccguy

#2 Lo que quería decir es que el artículo usa términos que no explica, y como tú dices es una introducción, se supone que el lector no conoce ninguno

U5u4r10

#2 Todo esto se entendería mejor con un ejemplo numérico simple.

D

#31 Yo la que conocía es la del año pasado el NIPS, dónde interrumpió la conferencia para decirle al Goodfellow que las GAN eran invención suya. Un tio con un par de huevos.

D

#44 Esa fue la mas sonada, pero ha tenido otras.

jorgemf

+1 por llamarlo deeplearning. Pero un par de matices. Primero, no es un campo moderno, la primera red de Deep learning es de los 90, pero hasta 2012 no existió ni la tecnología ni un conjunto de datos lo suficientemente grande para que esté método brillará. Hablo de los investigadores usando AlexNet sobre una GPU para ganar ImageNet. Segundo, las redes neuronales si se inspiran bastante en lo que sabemos del cerebro y cada vez tratan de hacerlo más por los avances que ello ha supuesto. Cada neurona se llama así porque es un modelo matemático de una neurona, las Redes convolución alea están inspiradas en como las neuronas de la visión se conectan, recientemente se añadió atención a los modelos que es una capacidad de la mente humana y está dando unos resultados muy buenos. Por último la función de perdida, loss, ha de ser un valor positivo lo más pequeño posible. Los métodos que menciones para optimizar la función de perdida don todos descuente del gradiente, pero con ligeras modificaciones. Hay otros no basados en descenso del gradiente pero son más costosos de calcular.

D

#4 De 1990? Que no te oiga Jürgen Schmidhuber.

1965: First Deep Learners: Ivakhnenko and Lapa published the first general, working learning algorithm for supervised deep feedforward multilayer perceptrons...

jorgemf

#7 http://www.scholarpedia.org/article/Deep_Learning The ancient term "Deep Learning" was first introduced to Machine Learning by Dechter (1986), and to Artificial Neural Networks (NNs) by Aizenberg et al (2000)

No creo que sea correcto llamar a un perceptron multicapa deep learning. Hubo muchos problemas que solucionar para poder llegar a arquitecturas con más de un par de capas.

Acido

#8

¿No será una cosa de terminología?

Si vemos lo que se llama "Deep Learning" por lo que he visto se trata de (1) estructuras de múltiples capas y (2) un aprendizaje (normalmente supervisado, pero podría ser no supervisado)... así que, desde este punto de vista, un perceptrón multicapa por sí solo no tiene por qué cumplir el punto (2) pero desde el momento que se usaron algoritmos de aprendizaje como el de Retropropagación ( Back Propagation , en 1986 )
https://en.wikipedia.org/wiki/Backpropagation#History
para esos Perceptrones Multicapa ya se puede decir que eran lo que hoy llamamos Deep Learning.

Lo que pasa es que:

* Hasta 1993 no se prestaba mucha atención a ese método... fue en ese año cuando un sistema basado en Retropropagación ganó una competición internacional de reconocimiento de patrones.

* Hasta el año 2010 o por ahí, cuando empezaron a usar las GPU para esto, el entrenamiento era muy lento, como dijo #4

* Por lo que he visto, ahora es mucho más común aplicar formas de conectar (la entrada o una capa con la siguiente) que no son densas, no son capas completamente conectadas... mientras que los modelos inciales, como el Perceptrón Multicapa eran densos: conectaban todo con todo y se suponía que eso ya incluía la posibilidad de falta de conexiones a base de hacer pesos iguales a cero, que es equivalente a quitar conexiones.
Lógicamente, el exceso de conexiones de los modelos iniciales hacía más pesado / lento y más cuestión de azar el entrenamiento.
Por ejemplo, en un reconocimiento de imágenes, en el modelo tradicional cada pixel de entrada se conectaba a todo en la segunda capa, de forma que el modelo no tenía en cuenta lo cerca que estaba un pixel del otro... lo cual tiene su importancia. Pero los modelos más recientes, los píxeles cercanos se conectan a las mismas neuronas (o la mayoría son las mismas) de la primera capa oculta... de forma que un pixel alejado no está conectado a ninguna que se conecta el otro (o una parte muy pequeña).


Vamos, que antes del año 2000 no se usaba ese término (Deep Learning) pero se hacía lo mismo que hoy llamamos Deep Learning aunque lo llamaban con otro nombre (entrenamiento de redes neuronales multicapa, etc).


cc #7

jorgemf

#23 Lo que dices de conectar capas que no son densas tampoco es una idea nueva, es de finales de los 90 con la arquitectura LeNet si no recuerdo mal. Por no mencionar los diferentes tipos de arquitecturas como las rede ART o las redes Hopfield. Desde que se utilizó el método de backpropagation hasta el punto de inflexión de 2012 ha habido que solucionar muchos problemas. Por mencionar algunos: la forma de inicializar los pesos de las neuronas, el Vanishing gradient problem que dejaba a 0 los gradientes en pocas capas, etc.

El punto de inflexión sigue siendo 2012: un gran conjunto de datos (ImageNet) y un modelo computacional mucho más rápido (GPUs). La teoría ya estaba allí, ya que llevaba desarrollandose desde los 90, pero sin demasiado interes porque no habia buenos resultados comparados con otras técnicas.

Acido

#24 Sí, vale, pero:

¿El perceptrón multicapa (MLP) tiene varias capas (de unidades no-lineales, etc)? Si, luego es Deep
¿El MLP con backprop es un sistema con aprendizaje? Sí, luego es Learning

Por tanto, era Deep Learning

* No tenía mucho éxito... pero era lo que llamamos Deep Learning
* Era lento... pero era Deep Learning
* Tenía problemas, que hoy se han solucionado / mejorado... sí, pero era Deep Learning

jorgemf

#25 Un MLP con backpropagaiton es Deep Learning? No, básicamente porque a partir de la tercera capa los gradientes son 0 y no aprende. No te puedo decir una fecha donde se pase de learning a deep learning, es más bien un proceso que empieza en los 90 y se desarrolla en los 90 y 2000 hasta culminar en 2012.

Acido

#26 ¿Es necesario tener más de 3 capas para que sea Deep Learning?

jorgemf

#27 ¿Llamarias a algo con 2 capas deep?

D

#4 #26 Yo diria que deep learning és un modelo basado en capas más un conjunto de hacks para hacerlo funcionar. Considerar sólo la red sin todo lo demás me parece insuficiente, nunca conseguirás entrenar una red sólo con backprop. Es la unión de las dos cosas lo que lo hace funcionar. Creo.

D

#23 Segun veia las ilustraciones , me venia a la mente un articulo de Omni sobre perceptrones y retropropagacion que leí a finales de los 80 asi que si , podemos decir que el deep learning sobre ordenadores es de esa epoca , pero por otro lado , las redes fisicas con reles y bobinas creo que ya estaban en marcha sobre finales de los 60 y los estudios matematicos son incluso anteriores , asi que ambos andais meneando razon

Me encanta que se publiquen estas cosas por y para meneantes.

Acido

#50

"redes fisicas con reles y bobinas"

Me extraña esto que dices... más que nada porque no veo cómo se podría entrenar una red de relés y bobinas... Otra cosa sería entrenar un modelo matemático y una vez entrenado construir físicamente los pesos en algún tipo de circuito.

Se que existen circuitos específicos de Redes Neuronales, es decir, chips... que, claro está, imagino que sí admiten entrenamiento y supongo que son digitales, pero estos no estarían formados únicamente por relés y bobinas sino básicamente por transistores y similares. Y creo recordar que los primeros son los de los 90 aunque no se si se haría alguno a finales de los 80. Me extraña que se hicieran antes. Pero, vamos, hablo de memoria, no me he puesto a consultar.

D

#51 Yo tambien hablo de memoria de un articulo que lei hace como 30 años...bastante hago acordandome que fue en Omni y que fue a finales de los 80 lol
He buscado y lo que usaban era memristores
https://en.wikipedia.org/wiki/ADALINE

Acido

#52

Ah, pues sí, el famoso ADALINE que luego tenía una versión de múltiples capas llamada MADALINE.

Pero no son memristores / "memristors" (que existen y son otra cosa) sino memistores / "memistors", es decir un tipo de resistencia (resistor) con memoria. El memistor tiene 3 "patas" y permite cambiar el valor de la resistencia, que haría el papel de un peso asociado a una entrada, que se multiplicaría por otro valor y que además es variable, con lo cual sí permite el entrenamiento.

Ahora bien, el ADALINE por sí mismo no define un entrenamiento, no dice ni establece un mecanismo concreto sobre una forma de modificar los pesos para obtener un resultado deseado... Por tanto, si no define un "Learning" no sería Deep Learning. Tampoco es Deep porque ADALINE es una capa y una de las cosas que implica el Deep son múltiples capas. El MADALINE con un algoritmo de entrenamiento que le permita aprender sí empezaría ya a poderse considerar Deep Learning (bueno, quizá), aunque lo cierto es que 3 capas no son muchas y los algoritmos que había cuando se propuso el MADALINE en 1962 no eran muy buenos, no era mucho "Learning" que digamos.

Aquí el artículo de 1960 sobre ADALINE:

http://www-isl.stanford.edu/~widrow/papers/t1960anadaptive.pdf

g

#7 lol completo tu referencia con el estudio histórico de Schmidhuber https://arxiv.org/abs/1404.7828

D

#29 Estaba buscando el video de una conferencia, no se si de Bengio o LeCun, en el que en el apartado de preguntas les echa en cara el que no citen a Ivakhnenko &cia. No lo conoceras, no?

Acido

#0

"redes neuronales, aunque podéis leer muchas cosas por ahí, estas redes no se basan en el funcionamiento del cerebro, básicamente porque desconocemos el funcionamiento exacto del cerebro. Este hecho es muy importante en cuanto a terminología, una red neuronal no está formada de neuronas, está formada de unidades."


Yo también diría, como #4 que sí se inspiran en el funcionamiento de neuronas biológicas, así que aunque no se podría decir que "funcionan igual que un cerebro" o "igual que una neurona de un cerebro", sí se podría decir que "se basan" (se inspiran) en el "funcionamiento" (mecanismos y estructuras que sí conocemos) del cerebro.

En cuanto a terminología sí se puede puede hablar de "neurona artificial" o "neurona de McCulloch y Pitts" o "neurona MCP"
https://es.wikipedia.org/wiki/Neurona_de_McCulloch-Pitts
En ese artículo de Wikipedia se puede ver que el modelo matemático de la neurona artificial que definieron en 1943 Warren McCulloch (un neurólogo, máster en Psicología y doctorado en Medicina) y Walter Pitts (matemático especializado en lógica) era el mismo que se usa en las "unidades" del Deep Learning: los pesos que se multiplican por entradas, se suman esas multiplicaciones, se aplica un umbral (se suma, o se resta) y por último una función de activación no lineal. Creo que es claro que este modelo está basado en neuronas biológicas reales, con el conocimiento que se tenía de ellas. Así que... sí, esas cosas llamadas "unidades" sí están basadas o al menos inspiradas en las neuronas biológicas reales, y se puede ver que habitualmente se las ha llamado "neuronas artificiales" sin ningún tipo de problema.
Eso en cuanto a las neuronas individuales, pero es que también el hecho de tener varias neuronas independientes que reciben las mismas entradas y operan en paralelo (mientras una hace unos cálculos / operaciones otra u otras 100 ó 1000 neuronas hacen otros cálculos / operaciones) también es la forma en la que funciona un cerebro biológico, y es algo fundamental que se suele poner como característica distintiva de un cerebro biológico y un ordenador tradicional, secuencial, ya que este último hace una operación en cada instante y no puede hacer 2 operaciones a la vez. Aunque es cierto que los ordenadores actuales tienen varios núcleos (que pueden hacer sus operaciones de forma independiente, en paralelo) y se da el importante hecho de que las GPU pueden hacer muchísimas operaciones en paralelo. Pero, vamos, que tanto la neurona individual, como la estructura de varias neuronas en paralelo, como ciertas configuraciones de conexiones SÍ están "basadas" o "inspiradas" en cerebros biológicos. Lo cual, evidentemente, no significa que sean iguales a un cerebro biológico... Un avión o un dron que mueve las alas puede estar "basado" o inspirado en un pájaro, y puede volar, pero es evidente que no es igual que un pájaro.

elvecinodelquinto

El articulo da un poco de grima, la verdad... Pretende ser una introducción pero mantiene una jerga absurda que para nada facilita la comprensión de alguien que no conozca el tema ¿"Pesos sinápticos"? Joer, que son los coeficientes de toda la vida de una combinación lineal... ¿"Unión sumadora"? ¿No queda mejor el clásico "suma"? "...a la función se le añade una variable más llamada peso de sesgo que permitirá activar o desactivar la unidad...". Es la ordenada en el origen de toda la vida y no, no sirve para activar o desactivar nada...

Al final un tema interesante se echa a perder, una pena.


Ah, y por supuesto que un perceptron multicapa con backpropagation es deep learning, vaya debates absurdos que montáis algunos...

D

#30 Para serte sincero la imagen es de la Wikipedia (https://en.wikipedia.org/wiki/Multilayer_perceptron). La jerga es la que se usa en el ámbito de las redes neuronales, al final es multiplicar matrices por matrices y sumar un offset. De heco al final una unidad se representa por una columna en la matriz.

Lo de activar o desactivar unidades tampoco es una terminología incorrecta. Es cierto que es la ordenada en el origen, un offset o llámalo como quieras. Pero cuando se utiliza con una función de activación del estilo ReLu (https://en.wikipedia.org/wiki/Rectifier_(neural_networks)) esa suma permite que la función de activación devuelva siempre 0 independientemente de la entrada. Como en la capa siguiente al final lo que tienes una multiplicación de matrices, lo que aporta esa unidad "no es nada" (aporta un 0 que ya es bastante lol) y comunmente se dice que la unidad se desactiva o se muere (dying ReLu) aquí viene explicado con más detalle: https://medium.com/the-theory-of-everything/understanding-activation-functions-in-neural-networks-9491262884e0

Obviamente todo esto depende de la función de activación, en el caso de la sigmoide el problema que aparece es el vanishing gradient (https://en.wikipedia.org/wiki/Vanishing_gradient_problem)

elvecinodelquinto

#34 Precisamente la jerga que se usa es mas que cuestionable. Parece creada expresamente para inflar una burbuja. Por eso no me parece adecuada para un escrito de introducción (a ningún tema).

Lo de activar o desactivar unidades, por ejemplo, solo es cierto para un caso particular de función de activación. ¿Crees adecuado entonces usar esa expresion hablando del caso general?

D

#35 Entiendo lo que dices, pero no soy yo quien va a juzgar la moda. Al final es terminología para acercarse a un tema concreto. Es decir, te pongo el ejemplo de un websocket, no deja de ser un socket normal y corriente donde hay un stream de datos, pero cuando dices websocket ya contextualizas. Aunque obviamente si aparece un tío de hace 20 años lo más probable es que nos insulte y nos mande a la mierda por tal aberración.

Respecto a la desactivación, puede que tengas razón, solo trataba de que fuera más fácil visualizar para que puede servir esa variable. En cualquier caso, la desactivación es bastante común que ocurra, casi todos los modelos usan ReLu por lo fácil que es de calcular y sus propiedades.

D

#30 Al principio se les llamaban synaptic weigths. A día de hoy todavía uno de los libros de texto de referencia es el "Neural Networks" de Haykin, que es en el que parece basarse el diagrama que está puesto ahí "castellanizado". A día de hoy se les llama simplemente weights, en castellano, al menos con los compañeros de doctorado, les llamamos pesos y no coeficientes.

A lo que él llama "peso de sesgo" le llamamos bias y punto, no lo traducimos al castellano así que no sabría decirte si alguien le llama comunmente "ordenada en el origen". Pero sí que seguramente lo correcto sería llamarle sesgo porque al menos cuando una red está muy "biased" sí decimos que está sesgada.

En cuanto a la activación, efectivamente el bias no activa o desactiva, lo que hace es desplazar la función de activación (shift). Sea una sigmoide, tanh o ReLu, un desplazamiento a la derecha puede causar que un input que activaría ya no lo haga, y a la izquierda un input que no activaba sí lo haga.

D

Muy buen artículo! Pensaba escribir yo uno a la vuelta de vacaciones, pero si ya está tratado el tema supongo que ya nada Felicidades! Si puedo poner una pega pequeña es que no es moderno, lo que es moderno es usar convoluciones, y luego inception y resnet. En el año 95 el ejercicio final de sistemas conexionistas en la universidad ya era hacer una red de reconocimiento de imagen con Matlab. También recuerdo echar unas risas cuando las cosas se resolvían "por Kohonen".

D

#47 2000 para todo MNIST, es decir, 200 por número (del 0 al 9), y el accuracy y el loss ya será suficientemente aceptable como para que si sigues entrenando no observes cambios significativos. Puedes probarlo tú mismo entrenando con el propio navegador: http://cs.stanford.edu/people/karpathy/convnetjs/demo/mnist.html

TonyIniesta

#48 ahh, ok. Muchas gracias

Gato-Pardo

#0 Utilizas una imagen de stock con marcas de agua. Ademas de quedar como el culo haciendo esto das a entender que el tiempo y trabajo del artista digital autor de la imagen te importa bastante poco. Luego querrás que la gente menee este artículo y deje comentarios valorando que bien articulado está tu texto. Te pediría que por favor elimines la imagen del artículo, o mejor aún, que compres la imagen original, por respeto al trabajo intelectual que tanto deberíamos apreciar en Menéame.

Molari

#5 ¿Cómo sabes que las está usando sin permiso? ¿Eres el autor de las imágenes?

D

#5 Tienes toda la razón excepto en que no sabes si el legítimo propietario de la imagen le ha dado derechos de reproducción o de si ha utilizado, como es bien sabidos para fines académicos el derecho relativo a la LPI...en definitiva. El que tenga una marca de agua no demuestra nada y en todo caso, si se cita la fuente y en este caso valdría con seguir el rastro de su origen con su url, existe el derecho de cita.
Otra cosa es que se lucrase de dicha imagen o la difundiera para fines espurios sin marca de agua. Para todo lo demás el copyleft: si eres bueno no necesitas copyright. De hecho, el copyright solo protege hasta cierto punto, ya que las ideas al final son mezcla de otras, por mucho que conozca la LPI no dejo de pensarlo y estar cada vez más a favor del copyleft y de pedir que se use algo con campañas de marketing (no confundir con publicidad) en condiciones: ejemplo: Iron Maiden

Gato-Pardo

#5 #11 Tan sencillo come que si hubiese comprado la imagen en https://www.bigstockphoto.com/image-118747484/stock-photo-cybernetic-brain habría utilizado la imagen sin marca de agua. No sé si utilizar la imagen con marca de agua en otros sitios aparte del de la tienda online va en contra de los Términos y Condiciones de la propia tienda. Pero desde luego lo que muestra es una falta de respeto hacia el autor original que no recibirá ninguna retribución por este uso.

D

#12 o también una excelente promoción de tal imagen y su autor si los humanos que lo ven se sienten interesados en más material de este tipo. El problema es que todo termina derivando en trolls de patentes y afortunadamente en Europa las aprendes de software las tenemos que disfrazar de algoritmos que tienen parte física en un hardware específico y en los que el hardware en si supone un avance y guarda todas las características de una patente. (no podemos a las claras patentar software que no sea parte de un sistema físico) y todo va por LPI. (Un 70% igual y todas esas evidencias)
En definitiva, lo que falla no es el respeto, como falsamente nos vendió la sgae y otros lobbies muy a sabiendas: Está fallando el modelo de negocio

Gato-Pardo

#14 No te vayas por los cerros de Úbeda. El autor del artículo buscó una imagen en Google para acompañar el texto y esta del cerebro mecánico salió en los primeros puestos y le gustó. En lugar de registrarse en la tienda de imágenes en stock y pagar por la imagen, le pareció que no merecía ni su esfuerzo ni su dinero. El problema es que en este caso lo que tienes que hacer es o buscar una alternativa abierta o no usar la imagen. Pero no usarla sin licencia. El autor vive de los royalties de la imagen no de la publicidad.

D

#15 El problema es el sistema de "vivir de royalties", que genera una plusvalía que no debería tener, ya que el valor de una creación al tener estos tipos de licencias genera que todo se pervierta: i.e. mueren personas porque no pueden cultivar con semillas que han cultivado de una multinacional o acceder a un medicamento: lo de que la investigación es carísima es cubrirse las espaldas (te lo digo yo).

Deberías hablar 10 minutos como he hecho yo con Richard Stallman y luego igual pensabas de otra forma.
Legalmente tienes razón: moralmente en el medio y largo plazo ¡NO!

Gato-Pardo

#18 El autor de la imagen es legítimo propietario de ella y la comercializa como quiere. Lo que tu llamas 'vivir de royalties' se llama trabajo digno para la mayoría de artistas digitales y fotógrafos. No sé a quien tienes en mente si los Rolling Stones o la familia de Elvis Presley. Pero la mayoría de autores (como el de la foto en cuestión) son autores pequeños donde un uso particular de una foto significa parte del sueldo mensual.

Quizás tendrías que ponerte en la piel de muchos pequeños artistas y fotógrafos y le cuentas la misma historia de las multinacionales. Y aunque supusiésemos que el artista detrás de esta imagen es un multimillonario con puro, esmoquin y sombrero de copa alta y planteases esta acción como un acto de rebeldía ante una supuesta ley injusta, este no es el caso. El autor del artículo simplemente copió y pegó la imagen sin importarle un pimiento la autoría ni los royalties ni ninguna ley inmoral.

D

#20 Estoy criticando el modelo de negocio y lo que implica incluyendo el empobrecimiento de tu autor

D

#5 Te doy la razón, ha estado mal copiar la imagen con marcas de agua, quito la imagen, que además no aporta nada sustancial al artículo.

D

"la resolución de las imágenes es de 28x28x1 (ancho x alto x profundidad de color)"
y después
"Una imagen del MNIST es una matriz cuadrada (o tensor de orden 2) que contiene valores de 0 a 255"

Si la imagen tiene 255 tonalidades de gris, entonces sería una imagen de 8bits, ¿no?

Por lo que la afirmación inicial sería:
"la resolución de las imágenes es de 28x28x8 (ancho x alto x profundidad de color)"

D

#40 Nope. En el input la profundidad es el número de colores. Piensa que internamente son números reales, no bits. Lo que sí se hace es normalizar cada color, en este caso convertirlo en un número entre -0.5 y 0.5. Paara hacerlo tan sencillo como p/255-0.5

Oniros

A ver si dejáis ya las drogas...

TonyIniesta

Muchas gracias por tu tiempo, por tu resumen y por usar la jerga del aprendizaje profundo (deep learning).
Unas primeras dudas que surgen, al comenzar a entender qué piezas participan en este complejo sistema es: el backward pass. Es decir, cómo le decimos al sistema que el resultado es el que queremos.
Y más concretamente, ¿cuántas veces le tenemos que decir que una imagen es un 4 para que las siguientes imágenes de un 4 las acierte?

D

#42 Va a depender de muchas cosas: la topología, el learning rate, si usas data augmentation... de todas maneras piensa que no acertará el 100%, igual que un humano no siempre acierta con la letra de otra persona. Pero por poner un ejemplo con MNIST, entrenado con adadelta, y una topología fácil (conv relu pool conv relu pool softmax) con 2000 ejemplos vistos ya tira bien.

TonyIniesta

#46 2000 veces hay que decirle manualmente al sistema si ha acertado ?

akaks

no he entendido la mitad de lo que has escrito pero lo considero sumamente interesante y ademas agradezco que compartas lo que sabes, de momento he aprendido que el deep learning es un proceso por capas en el cual los datos se van filtrando de una a otra con distintos baremos hasta que una vez filtrados son comprensibles por el ordenador, me recuerda a los arboles de toma de decisiones por lo del peso y eso, esperando las otras 3 partes, aunque no me entere lol

D

y el 2 de 4 ?

e

@dmoran muchas gracias por esta introducción. Me ha sido muy útil

alcornoque

#37 Te animo a que sigas publicando las otras partes de tu artículo. A mi me interesan, y conocía solo algunas cosas. Veo que te han puesto algunos negativos, pero no haría mucho caso. Lo que si te pido es si puedes actualizar el artículo principal con las correcciones o aportaciones que te han hecho algunos compañeros (a no ser que vayan a ir en las siguientes partes). Gracias.

m

¿Qué licencia tendrán tus artículos?
En https://tech.io se puede montar un curso igual pero con los ejercicios y ejemplos que corran dentro de una máquina virtual.
Si la licencia es MIT y los ejercicios no requieren de mucho tiempo de CPU y recursos normalitos supongo que se puede portar y tener el curso con los ejercicios de tensorflow interactivos.

D

#16 Anda, no conocía tech.io, le echaré un ojo. La verdad que el artículo lo puedes usar para lo que quieras lol. A no ser que algún voluntario me vaya a dar unos millones...