EDICIóN GENERAL
fluffy

fluffy

En menéame desde febrero de 2018

6,20 Karma
17K Ranking
1 Enviadas
0 Publicadas
88 Comentarios
0 Notas

Redirección permanente 301 en Nuxt.Js [2]

  1. #1 Yo mismo en el 90% de mis proyectos (mi empresa está en los 30 primeros puestos de la fortune 500). Netflix, paypal, trello, linkedin, walmart, uber, la NASA, Ebay... Creo que unas cuantas.

60.000 euros de indemnización por no reincorporar a un trabajador tras un despido nulo [92]

  1. La empresa en cuestión es un bazar chino cutre de polígono. El dueño no se presentó a la primera demanda, y no se presentó a esta.

Nada ha cambiado en los servidores de IRC [109]

  1. Ottia vaya foto... se reconocen ahí a Azrael-- y a hackelin... así que supongo que una quedada de ops en Coruña.

Nuevos datos sobre Alphazero, un avance muy significativo en la Inteligencia Artificial [80]

  1. #78 Bah. Había escrito algo pero paso... me reafirmo en que no tienes ni idea :-)
  1. #73 P.D. el tener dropout no quita interpretabilidad ojo, solamente es una técnica de entreno para evitar overfitting
  1. #74 Lo que dices se llama dropout, más que en IA moderna es en antigua, se utiliza para evitar overfitting, por ejemplo en las VGG se usaba. En redes más modernas la recomendación general es no utilizarlas, por ejemplo Inception y ResNet no usan dropout... te recomiendo la lectura de este paper del ICML del 2015: arxiv.org/pdf/1502.03167.pdf El paper es de Szegedy y Ioffe, la presentación estuvo muy chula.

    Por tu forma de expresarte me queda bastante claro que no te dedicas a esto, así que tampoco voy a seguir contestándote, claramente eres un opinador cuñado.
  1. #71 Te adjunto una imagen de ejemplo, porque creo que hay muchísimo desconocimiento... La imagen es el ejemplo más que clásico del Titanic: dados los datos de pasajeros del titanic, en los que coges una parte para entrenar y otra para evaluar, conseguir saber de los pasajeros si vivieron o murieron. Este ejercicio es, después del XOR, de lo más básico que hay en AI, pero me sirve para mostrarte cómo funciona internamente. El entrenamiento está hecho utilizando un árbol de decisión de dos clases y adaboost como optimizador. Ese es el árbol resultante con un AUC de 0.846 que está muy por encima del 0.5 que es el azar puro. Como ves, se sabe perfectamente por qué toma cada decisión. Si entrenas con métodos diferentes, con un tiempo o target loss diferente, efectivamente salen árboles diferentes, pero si estás generando un árbol de decisión todos ellos tendrán una serie de features comunes, cuanto mayor sea el AUC mayor se parecerán las features porque cada vez estarán acertando más.

    Si no fuese un árbol de decisión, sino un modelo puro de deep learning, efectivamente no es tan sencillo de ver "a simple vista", porque todo se representa como matrices de números reales. Pero aun así esas matrices y números representan identificación de features por parte de la red. Un ejemplo está en computer vision, cada kernel de las convoluciones está identificando unas features, y puedes pintarlas para entender qué es lo que hace que esa computer vision tome las decisiones. Puedes comprobarlo por ejemplo aquí: playai.herokuapp.com/#/example03 (todo el código es mío, incluyendo la librería de deep learning utilizada). Puedes ver la representación de cada capa de la topología tras cada convolución, activación y pooling, y así identificar (en blanco) las features que ha aprendido a ver cada filtro, y como estas features van avanzando hacia la última capa que es una softmax en la que verás que son 10 pixelotes cada uno de un color entre negro y blanco... ese color…  media   » ver todo el comentario
  1. #54 Por algo llamado optimizador que es un descenso de un gradiente y que uno de los primeros en estudiar cómo se hace fue Newton así que no nos pilla de nuevas. El problema es que la gente piensa que es "magia" y que todo es como en la ciencia ficción y que estamos creando a skynet, cuando la cruda realidad es que es todo matemáticas, matrices, sigmoides, tangentes hiperbólicas, producto de matrices,... pero es que a la peña os parece que las matemáticas son marcianadas.
  1. #24 No entiendo por qué dices que nadie sabe por qué. Una de las ramas de la AI es conseguir que los modelos sean explicables. En el caso de AlphaZero es explicable, crea un árbol para las decisiones y escoge en cada nodo usando Monte Carlo para recorrerlo con BFS en lugar de DFS. Esto no es algo nuevo, estamos hablando de que se usa desde 1987, aunque usualmente para juegos más complejos como el Go, mientras que en ajedrez se recorría con DFS pero con un límite de profundidad. La nueva estrategia es usar Monte Carlo e ir generando todo el árbol usando UCT y reinforcement learning. Y esto lo hacen de una forma muy agresiva, es decir, tiene un hardware bestial mejor que el que se ha usado en toda la historia, la red utilizada para entrenar es también brutal (está basada en ResNet), con data augmentation y con cross-validation para evitar el overfitting. Pero el resultado es un árbol que se puede entender. Y el por qué de cada nodo del árbol, es por haber jugado mucho, y decidido para cada nodo cual es la opción con mayor probabilidad de ganar.

Detenido en Brasil Carlos García Juliá, uno de los autores de la matanza de Atocha [106]

  1. Un buen momento para recordar que los hermanos García-Juliá eran 2, y eran cercanos a Blas Piñar. Uno participó en lo de Atocha, el otro, Ignacio, no. El que no participó colaboraba activamente en Hazte Oír, fue Director del Foro de la Familia, y luego su hija contó su tormento al pasar por el Yunque. Recomiendo rebuscar en internet información sobre esto, porque es como para hacer una serie de Netflix. En el trabajo le llamaban "el pim pam pum", por su hermano, en referencia a los disparos a los abogados de Atocha...
    También viene bien recordar que Manuela Carmena trabajaba en ese despacho, y ese día se libró gracias a una reunión.

Microsoft tira la toalla con Edge y prepara un nuevo navegador basado en Chromium [ENG] [161]

  1. A mí me parece una mala noticia. Primero por la eliminación de diversidad y por tanto ir hacia una monopolización del motor del navegador. Pero sobre todo porque significa una incertidumbre en el futuro de ChakraCore como alternativa a V8. Sé que ChakraCore tiene un uso marginal por ejemplo en Node.JS, la mayor parte de la gente cree que Node solamente tira contra la V8 pero no es así. El hecho de que ChakraCore exista es positivo porque hay una cierta competitividad entre dicho motor y el V8 que hace que ambos mejoren más deprisa, a la par que existen ingenieros pagados por Microsoft dedicados íntegramente al desarrollo de Chakra... la eliminación de Chakra de la ecuación significaría menos recursos dedicados a la evolución de los motores de javascript, y sobre todo menos vías de desarrollo e investigación, porque sus JIT siguen filosofías diferentes y ambos equipos aprenden el uno del otro.

    En fin, mala noticia para el futuro de javascript y webassembly.

Una mujer de 99 años será desahuciada y se queda en la calle por la estafa de su nieto [132]

  1. #59 Buen dato. Eso supone que pudo tener a tu hermana a los 50 o a los 30, dado que no indicas si es la mayor o la menor. Si fue a los 50, es un verdadero hito. Si fue a los 30 entra dentro de la normalidad de la época.
  1. #54 Pues depende... Estadísticamente el primer hijo durante la época franquista se tenía en el caso de la mujer antes de los 25. En el caso de tu abuela no conozco si tu padre es el primogénito, a lo mejor es el último de una lista larga de hijos, y no me estás dando el dato. Por otro lado, que algo sea la media o la moda, no quiere decir que todos los casos sean iguales, si definimos "raro" como diferente de lo "común" entonces me parecería más raro lo de tu abuela, siempre y cuando no me estés diciendo si tu padre es el primogénito porque asumimos que sí lo es.

    Un saludo.
  1. #39 Pues 99-55=44, es decir, de media 22 años... Yo creo que es correcto para las épocas que eran, que normalmente a los 20 ya tenías 1 hijo. Mi bisabuela, en paz descanse, tuvo 11 hijos y empezó a los 17 años.
  1. #22 55 añitos tiene el nieto sí, en plena juventud está.
  1. #7 Pues ahora tiene 99 años, pero hace un año tenía 98... www.europapress.es/madrid/noticia-nonagenaria-estafada-nieto-no-me-dej
    Esta señora ha salido por telecinco y demás. Al parecer el nieto la embaucó para que le firmara un poder notarial para hacer una sociedad para la venta de una plaza de garaje, y luego la convenció para firmar una ampliación de capital. Luego el nieto se mudó a EEUU con el dinero.

    Y el acta del auto penal: supremo.vlex.es/vid/707637409

    Y ahora ya puedes emitir tu propio juicio.

Este manual quiere que aprendas el 80% de todo JavaScript en 20% del tiempo [211]

  1. #206 Hola, sigo esperando.
    Por cierto, dado que dices lo de "no hay intérprete...", de nuevo si conocieses lenguajes formales sabrías lo que es un parser, el AST (Abstract Syntax Tree), compiler y linker, y tendrías la noción de que al crear un AST de un lenguaje, técnicamente es posible transformarlo a otro. Es cómo funciona la transpilación de typescript a javascript, pero no es la única: typescript transpila a C#. La diferencia es que el de typescript a C# también hace el reverso, de C# a typescript (salvando las distancias de que typescript no es .NET, pero léxicamente sí). Sin embargo de javascript a Typescript no hay transcripción porque la definición formal del lenguaje no es la misma.

    Yo lo tengo bastante claro, en mi código encontrarás también transpilaciones, por ejemplo conversiones de snowballs (stemmers de idiomas) que originalmente están en java, transpilados a javascript, o evaluación al vuelo sin usar eval ni VM, empleando directamente parsing, AST y evaluación con esprima y escodegen.

    De nuevo... en fin...

Este presentador del telediario en China está generado por inteligencia artificial, y no lo hace nada mal [36]

  1. La voz... la voz es del milenio pasado. Está tan alejada del estado del arte actual en TTS que me siento volver a loquendo.
    Toda la gente trabajando ya con tacotron2, con aplicación de estilo y prosodia, haciendo pruebas con el tone transfer, con voces que ya parecen humanas y con sentimiento, y estos sacan como logro una chusta que ni siquiera llega al estado del arte de Wavenet.

    En fin... La noticia debe ser que hay que tener unos cojones enormes para sacar esto como avance, cuando realmente está en el pasado.

Este manual quiere que aprendas el 80% de todo JavaScript en 20% del tiempo [211]

  1. #202 En cuanto al link que cuelgas, Crockford intenta explicar scope y closure de una manera cercana, pero no es exactamente lo mismo.

    En cuanto a lo demás, el movimiento se demuestra andando. Acabo de programarte un ejemplo sencillo con un log decorator, a cualquier clase que yo quiera independientemente de lo grande que sea, si la decoro con @logClass, automáticamente todos sus métodos escribirán log cuando se entra en el método, cuando se sale, cuando hay una excepción, incluyendo los valores de los parámetros de entrada y salida. Me gustaría que escribieras algo que haga lo mismo en ES6, que sea añadir solamente una línea a la clase, sin tocar module.compile. Que sea una simple línea decorando una clase.

    Por otro lado, ese @logClass, está logueando a través de un logger que se le especifica en un contenedor de dependencias, al cuál se le dice la implementación de la interfaz Log. Me gustaría ver cómo implementas interfaces en ES6. Ojo, no me la intentes colar con un prototype, no son lo mismo ni de lejos.

    El ejemplo en cuestión: github.com/jesus-seijas-sp/log-example
    Si necesitas ver la librería log-decorator que usa, también te la he dejado por ahí.

    A ver si al final resultará que no hay interfaces ni hay decorators, y que como decía formalmente (si es que has estudiado la asignatura lenguajes formales...) su sintaxis está más cercana a C#.

    En fin...
  1. #199 ¿Ah sí? ¿Todo lo que he dicho lo tiene ES6? Pensaba hacer este post con tono sarcástico y riéndome un poco, pero la verdad no hay sitio para la risa, así que mejor prefiero explicarte por qué estás equivocado punto por punto.

    Las propuestas de cuál es el futuro de javascript se hacen a través del Technical Committee 39, comúnmente llamado TC39. Ahí es dónde se hacen las diferentes propuestas y se van elevando de estado, comentando, descartando, refinando... Comienzan en nivel 0 y deben alcanzar el nivel 3. Si quieres saber más, cuando organizo conferencias o meetups de Node, siempre suele venir littledan que es uno de los chairmans del TC39 y que suele estar por Barcelona porque casualmente se mudó aquí, y tal vez puedas contrastar con él tus ideas.

    - Mencioné interfaces: los interfaces son necesarios para lograr completamente SOLID, porque para Liskov, Interface Segregation y Dependency injection son necesarios. Es por eso que en typescript puedes encontrar cosas como InversifyJS que no están presentes en javascript: inversify.io/ Interfaces NO están ni siquiera propuestos para javascript, con lo cual es imposible que los encuentres en ES6 o ES7.

    - Mencioné decorators: están en stage 2, el propio littledan es el impulsor, y van evolucionando y creo que llegarán a stage 3 a lo largo del 2019. Al no estar todavía en stage 3, no los encontrarás implementados ni en V8 ni en chakracore, y no son ni han sido jamás parte de ES6 o ES7. github.com/tc39/proposal-decorators

    - Scope de clase: No está ni tan siquiera propuesto en el TC39 de manera directa, pero hay tres propuestas que implicarían su implementación técnica en la V8 y Chakracore. Las tres propuestas en cuestión son las de private method, class fields y static class features:
    github.com/tc39/proposal-private-methods
    github.com/tc39/proposal-class-fields
    github.com/tc39/proposal-static-class-features/

    - Public protected private y readonly: hay propuestas para private methods y fields, que sería con el símbolo # antes del nombre de variable o método, por ejemplo #x significaría que x es privada. Protected ni está ni se le espera. Readonly solamente se logra mediante Object.defineProperty pero la sintaxis es engorrosa a más no poder, o el Object.Freeze a nivel de instancia.
  1. #2 ¿Sabes cómo sé que las películas de 50 sombras de grey son una chusta? Porque me las he visto todas. Lo mismo para Lars Von Trier, aguanté como un campeón anticristo, dancer in the dark, melancolía, ...
    Soy de la opinión de que no se puede criticar algo sin conocerlo lo suficiente.
    12 años, 12 años enteros de mi vida estuve con Java certificándome como arquitecto, 8 con .NET con MSCD pero sin certificarme como arquitecto. He programado en COBOL, C++, ensamblador, Delphi, Ruby, ... y de ninguno he dicho jamás que sea una abominación.
    A día de hoy casi todo lo que hago es NodeJS y Python. Y estoy contento con ello. Seguramente el primer día que escuché hablar de NodeJS me chocaba y tenía mis reticencias, ¿sabes cómo las superé? Usándolo.

    Así que te recomendaría que lo usaras antes de emitir un juicio de valor tan negativo.
  1. #74 Si obvias los decorators, la existencia de interfaces (lo cual hace que puedas hacer SOLID), el dependency injection, que tiene scope de clase y no solamente el global y local, los modificadores para public private protected y readonly, ... sí, efectivamente son prácticamente lo mismo, si consideras que C# y ES6 son prácticamente lo mismo, porque typescript está más cerca a nivel de lenguaje formal de C# que de ES6.

Cómo entienden los bots el lenguaje [13]

  1. #11
    Microsoft LUIS no solamente no tiene contextos, es que no tiene NLG, es decir, su plataforma solamente es un NLU que dado un utterance te indica el intent, pero las respuestas las tienes que gestionar tú.

    La gestión de diálogos en SaaS está bien para pequeñas empresas. En empresas grandes, los diálogos tienen más reglas de las que sabe gestionar un proveedor en la nube, muchas de ellas dependientes de sus sistemas de Core IT, con lo cual el manejador de diálogos suele ser botkit (Node) o Microsoft Bot Framework SDK (C#, Node, Java y Python).

    He usado y uso productos como Watson, DialogFlow y LUIS. Llevo haciendo bots desde el año 97 (para IRC, bots de trivial, de cine, gestores de contenido, personalidades), haciendo Inteligencia Artificial desde el 95 (en aquel entonces con Matlab y C, a día de hoy mayormente python y Tensorflow), y en los últimos 3 años casi el 100% de mi tiempo dedicado a ello con un equipo de 8 personas, y 5 bots en producción y desarrollando 3 más. De uno de ellos tienes disponible la nota de prensa y el eco en diversos medios.

    Si no conoces RASA, estoy algo extrañado entonces, porque llevan 2 años y pico muy activos en todas las conferencias importantes de chatbots, New York, San Francisco, Viena, Berlín.... Alex, su CEO, es una persona brillante y le he visto ya en 3 conferencias diferentes de chatbots a lo largo del mundo, aparte de haber tenido el placer de hablar con él en dos calls. Supongo que tampoco conocerás Snips que es su competidor directo pero de origen francés, y que entra fuerte porque apuesta por un interfaz amigable.

    En cuanto a lo que pesan las reglas... Mi librería para frontend, minimizada y con 26 idiomas (en lugar de los 27 que soporto en backend, porque con chino hay un problema) pesa 7.84 MB. En 7.84MB va:
    - 26 idiomas con sus tokenizers y stemmers.
    - Brain.js
    - Implementación de matemática de vectores, matrices y descenso de gradiente
    - Implementación de Logistic Regression Classifier
    - Implementación de…   » ver todo el comentario
  1. #9 Bien, por eso mi artículo no se titula "proovedores de NLP del mercado", se titula "cómo entienden los bots el lenguaje". Porque su objetivo es mostrar cómo funcionan los NLP por dentro, no enunciar cada uno de los comerciales y sus características ni compararlos. Eso lo dejo a los señores comerciales.

    Pero ya que preguntas ventajas...:
    1. Entender. En lugar de usar una API, que es algo que sabe hacer cualquier persona, estás entendiendo realmente la IA y cómo funciona, y deja de ser una caja mágica que hace cosas.
    2. Gratuito y sin límites. Los que no cuestan dinero, tienen limitaciones al uso que no hacen posible implementar bots masivos a millones de usuarios.
    3. Privacidad. Según la legislación de cada región, algunas conversaciones de usuarios no pueden ser enviadas a un tercero, por ejemplo datos sobre alergias, enfermedades, etc.
    4. Velocidad. Al tener tu NLU directamente en el bot, el tiempo de clasificación de una utterance es de en torno a 1 milisegundo, frente al tiempo de transporte de una llamada a través de internet, que normalmente te pone en torno a 200ms mínimo, usualmente 400ms.
    5. Implementación de características propias. Un ejemplo: la manera que tiene los proveedores en nube de manejar el multiidioma es que en cada utterance tienes que decir también el locale. En mi caso, identifico automáticamente el locale y lo paso al clasificador que toca, con lo cual un usuario puede cambiar de idioma en caliente en el bot, sin necesidad de pasar por un proceso de selección de idioma para guardar el locale en el contexto.
    6. Modelo offline: Al entrenar tu modelo, puedes descargarlo e incluirlo en el bot, y no necesitar internet para nada. Por ejemplo para hacer bots que funcionan en móvil incluso si no hay cobertura. En mi caso lo que he implementado funciona en el browser, con lo cual se puede hacer una SPA sin estar consumiendo continuamente llamadas al backend.
    7. Implementación propia de contexto y control de sesiones. Un…   » ver todo el comentario
  1. #7 No entiendo muy bien tu pregunta la verdad. Lo que cuento en el artículo es con suficiente detalle el cómo se hace, precisamente para chatbots y no para análisis de corpus grandes. Y lo que cuento es con detalle lo que puedes encontrarte hoy en IA para trabajar con chatbots. Incluso incluyo una comparativa de NLU entre diversas plataformas. E incluso soy el desarrollador de la que tiene mejor score de NLU de todas ellas, así que creo que si sigues mi artículo paso a paso puedes desarrollar una IA exactamente igual, y que te dará mejor score que DialogFlow, y aproximadamente el de IBM Watson Conversation. No puedo confirmarte qué tipo de IA usa cada plataforma, lo que sí cuento en el artículo es cómo funciona una hecha con logistic regression classifier. Efectivamente no cuento binary relevance neural network, que es lo que permite dar mejor score que IBM Watson Conversation, pero mi código es licencia MIT, así que puedes ir a mirarlo.
    Es decir, he dado un detalle brutal sobre como funcionan las IAs de NLU para chatbots.
    Así que a lo mejor puedes reenunciar tu pregunta para que entienda qué es exactamente lo que echas de menos.
« anterior1

menéame