Herramientas de usuario

Herramientas del sitio


inteligencia_artificial:conceptos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
inteligencia_artificial:conceptos [2023/05/04 13:53] – [Ajuste y sobreajuste] albertointeligencia_artificial:conceptos [2023/05/09 11:45] (actual) – [Ataques adversarios] alberto
Línea 67: Línea 67:
  
 ==== Modelo de regresión lineal simple ==== ==== Modelo de regresión lineal simple ====
 +En este modelo los datos tienen una única dimensión.\\
 Se puede visualizar una nube de puntos, en los que la dimensión de los datos de entrada se encuentra representada en los valores del eje X y los de salida en el eje Y, generando los diferentes puntos.\\ Se puede visualizar una nube de puntos, en los que la dimensión de los datos de entrada se encuentra representada en los valores del eje X y los de salida en el eje Y, generando los diferentes puntos.\\
 El modelo debe generar la recta que más se aproxime a los puntos de forma automática, a partir de los datos de entrada y las salida correspondiente (a partir de los datos entrada-salida suministrados).\\ El modelo debe generar la recta que más se aproxime a los puntos de forma automática, a partir de los datos de entrada y las salida correspondiente (a partir de los datos entrada-salida suministrados).\\
Línea 83: Línea 84:
 La mejor forma de representar estos valores, es de forma matricial:\\ La mejor forma de representar estos valores, es de forma matricial:\\
 Matriz de datos X = Matriz de datos X =
-| x<sub>11</sub> | x<sub>12</sub> | x<sub>13</sub>+| 1 | x<sub>11</sub> | x<sub>12</sub> | x<sub>13</sub>
-| x<sub>21</sub> | x<sub>22</sub> | x<sub>23</sub>+| 1 | x<sub>21</sub> | x<sub>22</sub> | x<sub>23</sub>
-| x<sub>31</sub> | x<sub>32</sub> | x<sub>33</sub>+| 1 | x<sub>31</sub> | x<sub>32</sub> | x<sub>33</sub>
-| x<sub>41</sub> | x<sub>42</sub> | x<sub>43</sub> |+| 1 | x<sub>41</sub> | x<sub>42</sub> | x<sub>43</sub> |
  
 Matriz de valores de salida Y = Matriz de valores de salida Y =
Línea 126: Línea 127:
  
 El problema es que resolver para cualquier GPU esta fórmula requiere de invertir matrices, lo cual tiene un coste computacional enorme. Además, no siempre será posible encontrar el mínimo de nuestra función de forma analítica. Esto es debido a que elevando al cuadrado el error, forzamos funciones convexas (con un sólo mínimo, para hacer posible este cálculo) cuando no necesariamente puede resultar lo más acertado.\\ El problema es que resolver para cualquier GPU esta fórmula requiere de invertir matrices, lo cual tiene un coste computacional enorme. Además, no siempre será posible encontrar el mínimo de nuestra función de forma analítica. Esto es debido a que elevando al cuadrado el error, forzamos funciones convexas (con un sólo mínimo, para hacer posible este cálculo) cuando no necesariamente puede resultar lo más acertado.\\
- +\\ 
 +Ejemplo de cálculo de los mínimos ordinarios en el [[https://youtu.be/w2RJ1D6kz-o|videotutorial de DOTCSV]] y en  [[https://colab.research.google.com/drive/1rGOAidz9Iyq63ybGY5TR16n-RKL9tO64?usp=sharing|mi Jupyter Notebook de regresión lineal]]
 ==== Descenso del Gradiente ==== ==== Descenso del Gradiente ====
 {{youtube>A6FiCDoz8_4?}} {{youtube>A6FiCDoz8_4?}}
Línea 224: Línea 225:
 Sólo hay 2 casos diferentes: la última capa en la que el error a pertenece a la función de coste, y el otro caso son el resto de capas, que dependen de otra capa. Sólo hay 2 casos diferentes: la última capa en la que el error a pertenece a la función de coste, y el otro caso son el resto de capas, que dependen de otra capa.
  
-===== Ajuste y sobreajuste =====+==== Ajuste y sobreajuste ====
 {{youtube>ZmLKqZYlYUI?}}\\ {{youtube>ZmLKqZYlYUI?}}\\
 Si un modelo no se ajusta adecuadamente a los datos suministrados, por ser demasiado rígido (por ejemplo, modelo de regresión lineal simple) o cualquier otro motivo, se dice que tiene //**underfitting**// o **subajuste**.\\ Si un modelo no se ajusta adecuadamente a los datos suministrados, por ser demasiado rígido (por ejemplo, modelo de regresión lineal simple) o cualquier otro motivo, se dice que tiene //**underfitting**// o **subajuste**.\\
Línea 230: Línea 231:
  
 La mejor forma de saber un modelo sufre de overfitting, es dividir los datos totales disponibles en dos grupos: generalmente un 80% para el entrenamiento y un 20% para hacer pruebas.\\ La mejor forma de saber un modelo sufre de overfitting, es dividir los datos totales disponibles en dos grupos: generalmente un 80% para el entrenamiento y un 20% para hacer pruebas.\\
-Se realizan pruebas al mismo tiempo que se entrena el modelo, de modo que podemos ver su comportamiento antes nuevos datos, que generalmente tendrá un error superior al de los datos de entrenamiento. Mientras este error (el producido con datos nuevos) siga decreciendo, no hay problema. Cuando este error empiece a incrementarse, se está produciendo overfitting.+Se realizan pruebas al mismo tiempo que se entrena el modelo, de modo que podemos ver su comportamiento antes nuevos datos, que generalmente tendrá un error superior al de los datos de entrenamiento. Mientras este error (el producido con datos nuevos) siga decreciendo, no hay problema. Cuando este error empiece a incrementarse, se está produciendo overfitting. Esta estrategia de entrenamiento se denomina **Hold-out**.\\ 
 + 
 +Para que la estrategia Hold-out funcione los datos deben estar idénticamente distribuidos en ambos grupos, de modo que no exista una naturaleza distinta. Esto puede conseguirse distribuyéndolos de forma aleatoria. Y asegurándonos que no existan dependencias entre datos que enmascare el overfitting (por ejemplo, en los fotogramas de una película, en las diferentes secuencias hay muchos iguales, lo que en función de cuáles sean elegidos para hacer test, puede enmascarar el overfitting).\\ 
 + 
 +Suele ser más complicado hacer un correcto tratamiento de los datos que realizar el entrenamiento (unas pocas líneas de código). 
 + 
 +===== Ataques adversarios ===== 
 +{{youtube>lPyogLghTKo?}}\\ 
 +Se trata de crear diferencias en los datos de entrada para confundir a la red neuronal y que de resultados erróneos. Algo equivalente a las "ilusiones ópticas" para las personas.\\ 
 +No necesariamente pueden ser fácilmente detectables. Por ejemplo en el caso de reconocimiento de imágenes, pueden ser imágenes modificadas y que llamen la atención por psicodélicas, pero también pueden ser imágenes aparentemente correctas con una modificación determinada de píxeles, que una persona pasa por alto, pero confunde a la red.\\ 
 +Se pueden crear dejando la red neuronal entrenada con los parámetros fijos y actuando sobre los datos de entrada (como si fueran parámetros) para maximizar el error.\\ 
 +Es muy probable que si afecta a una red neuronal, afecte también a otras redes neuronales del mismo tipo, o con la misma función.\\
inteligencia_artificial/conceptos.1683201213.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki