YouTube2Text

Gradiente Descendente Paso a Paso con Python: Un Algoritmo de Optimización para Machine Learning — Transcript

by Codigo Maquina · 8,454 words · 1,324 segments · language en · Watch on YouTube

Full transcript

  1. 0:00en la vida cotidiana comunmente
  2. 0:02intentamos optimizar por ejemplo
  3. 0:05intentamos realizar la mayor cantidad de
  4. 0:08actividades en el menor tiempo posible
  5. 0:12claro para lograr esto nosotros tenemos
  6. 0:14que hacer múltiples ajustes algo muy
  7. 0:17similar pasa dentro del contexto de
  8. 0:20aprendizaje de máquina las diferentes
  9. 0:22técnicas que nosotros utilizamos para
  10. 0:25predecir o para clasificar
  11. 0:26automáticamente
  12. 0:28tienen que ajustar sus parámetros para
  13. 0:32poder realizar esta actividad con el
  14. 0:35menor error posible claro está cada una
  15. 0:39de estas técnicas tiene su propia manera
  16. 0:41de optimizar sus parámetros de
  17. 0:44ajustarlos de forma que puedan predecir
  18. 0:47o clasificar con el menor error posible
  19. 0:50sin embargo existe un algoritmo de
  20. 0:54optimización que es muy relevante y muy
  21. 0:57utilizado y que es la base para entender
  22. 1:01muchas de las técnicas no solo de
  23. 1:04aprendizaje de máquina sino de
  24. 1:07aprendizaje de máquina profundo está
  25. 1:10técnica de optimización se llama el
  26. 1:12gradiente descendiente en este vídeo
  27. 1:16nosotros visualizaremos cómo funciona
  28. 1:19este algoritmo lo veremos paso a paso de
  29. 1:24hecho les comento realizaremos algunos
  30. 1:27cálculos sin embargo estos cálculos
  31. 1:29nosotros los realizaremos vía
  32. 1:32programación dado que estamos en un
  33. 1:35canal de programación mi nombre es
  34. 1:37octavio gutiérrez y en este canal
  35. 1:39aprenderemos programación inteligencia
  36. 1:42artificial y aprendizaje de máquina
  37. 1:43gracias por acompañarme
  38. 1:46[Música]
  39. 1:50vamos a iniciar la explicación del
  40. 1:52algoritmo descendiente utilizando un
  41. 1:53contexto un poco extraño sin embargo ya
  42. 1:56verán este contexto nos ayudará
  43. 1:58muchísimo a entender a groso modo cómo
  44. 2:02funciona este algoritmo ok la imagen que
  45. 2:05nosotros estamos viendo aquí es una
  46. 2:08imagen de una zona montañosa y la
  47. 2:11estamos viendo grises y está porque se
  48. 2:13asume que está de noche pero de esas
  49. 2:15noches que no ves absolutamente nada y
  50. 2:18en el fondo de estas zonas montañosas en
  51. 2:20la parte más baja se encuentra un arroyo
  52. 2:23y este arroyo lleva una corriente muy
  53. 2:28baja ok entonces ahora imaginemos que
  54. 2:32vamos en un avión 10 y se queda
  55. 2:34completamente extraño pero bueno síganme
  56. 2:35aquí vamos en este avión y nosotros
  57. 2:39queremos llegar al arroyo entonces pues
  58. 2:43no hay manera de que nosotros
  59. 2:44aterrizamos el avión nos lanzamos con un
  60. 2:46paracaídas
  61. 2:48podríamos caer aquí obviamente lanzarse
  62. 2:52con paracaídas salvo que se hace un
  63. 2:53experto pues no hay una manera así tan
  64. 2:56fácil de garantizar donde caer pero
  65. 2:58estás en una zona montañosa pero también
  66. 3:01pudimos haber caído por acá o pudimos
  67. 3:03haber caído por acá o pudimos haber
  68. 3:05caído en diferentes posiciones sin
  69. 3:08embargo cómo le hacemos si no traemos
  70. 3:12nosotros una lámpara para llegar a donde
  71. 3:15se encuentra el arroyo no tiene una
  72. 3:17corriente entonces no lo podemos
  73. 3:18escuchar está enteramente oscuro
  74. 3:21entonces no podemos ver pero estamos en
  75. 3:24una zona montañosa y sabemos que en el
  76. 3:26fondo se encuentra el arroyo entonces
  77. 3:30como llego yo al arroyo como llego yo al
  78. 3:33fondo asumamos que una vez que caemos
  79. 3:37dado que no podemos ni escuchar ni ver
  80. 3:40simplemente estamos un paso exploratorio
  81. 3:43hacia adelante y otro hacia atrás otro
  82. 3:45hacia la izquierda y otro hacia la
  83. 3:47derecha y nosotros vemos cuál de estos
  84. 3:50pasos nos lleva al fondo cuál de estos
  85. 3:54decae más y vamos a suponer que fue el
  86. 3:59paso hacia adelante entonces todo en mi
  87. 4:02paso y una vez que doy el paso
  88. 4:04nuevamente
  89. 4:06exploro porque la superficie podría ser
  90. 4:10irregular entonces vuelvo a dar un paso
  91. 4:13hacia adelante un paso hacia atrás un
  92. 4:15paso hacia la derecha y determinó cuál
  93. 4:19de estos pasos me lleva más hacia el
  94. 4:22fondo y ya se imaginarán podemos hacer
  95. 4:25exactamente el mismo procedimiento hasta
  96. 4:29que lleguemos al arroyo hasta que
  97. 4:31toquemos el agua y esto es gracias a que
  98. 4:34sabemos que el arroyo se encuentra justo
  99. 4:37en el fondo sin embargo qué pasa si lo
  100. 4:40trasladamos a una técnica de aprendizaje
  101. 4:43de máquina nosotros poco a poco
  102. 4:47utilizando una cierta dirección vamos
  103. 4:50ajustando los parámetros y nos vamos
  104. 4:54ajustando con el objetivo de llegar al
  105. 4:56fondo al fondo de que al fondo de una
  106. 4:59función de error donde una función de
  107. 5:02error se hace cero o se encuentra en la
  108. 5:05posición más baja y con esto yo habré
  109. 5:09logrado la optimización de ese parámetro
  110. 5:12y por tanto podría predecir o clasificar
  111. 5:16con el menor error posible ok podemos
  112. 5:20ver claramente por qué se le llama
  113. 5:22descendiente a este algoritmo sin
  114. 5:25embargo la parte de gradiente que es el
  115. 5:28gradiente el gradiente es justo la
  116. 5:31dirección y la magnitud con la cual
  117. 5:34nosotros tenemos que dar este paso
  118. 5:37matemáticamente qué significa cómo
  119. 5:40calculamos un gradiente lo calculamos
  120. 5:43utilizando derivadas pero en este punto
  121. 5:46no se me asusten las vamos a calcular
  122. 5:50utilizando python simbólico una librería
  123. 5:53que se llama simple no obstante aquí lo
  124. 5:56más importante es entender qué es lo que
  125. 6:00estamos haciendo con la derivada
  126. 6:02y va a ser muy fácil porque lo
  127. 6:06visualizaremos de hecho aquí permítanme
  128. 6:09mostrarles las diferentes
  129. 6:11visualizaciones que nosotros veremos a
  130. 6:14lo largo de este vídeo debo mencionar
  131. 6:17aquí veremos mucho código de
  132. 6:20visualización sin embargo no le vamos a
  133. 6:22dar énfasis en la enseñanza de la
  134. 6:24visualización para eso ya tenemos una
  135. 6:27playlist dentro de este canal que aquí
  136. 6:29arriba les dejo el vínculo recuerden
  137. 6:32estamos en un canal formativo de hecho
  138. 6:36tenemos justo un vídeo desde la
  139. 6:39instalación de payton para que nosotros
  140. 6:42podamos construir de una forma
  141. 6:45incremental paso a paso nuestra
  142. 6:48formación y el aprendizaje de máquina
  143. 6:51ok ahora sí ya estamos listos para irnos
  144. 6:55a la programación del algoritmo del
  145. 6:58gradiente descendiente vamos al código
  146. 7:01dentro de nuestra libreta de
  147. 7:04el algoritmo del gradiente descendiente
  148. 7:07es una técnica de
  149. 7:08optimización sin embargo nosotros que
  150. 7:11vamos a optimizar vamos a optimizar los
  151. 7:14parámetros de una regresión lineal de un
  152. 7:18modelo de regresión lineal quise
  153. 7:21seleccionar esta técnica de aprendizaje
  154. 7:23de máquina tal vez una de las más
  155. 7:26sencillas para tratar de simplificar lo
  156. 7:30más posible la explicación del gradiente
  157. 7:33descendiente sin embargo si alguien en
  158. 7:36este punto no está familiarizado con la
  159. 7:39técnica de regresión lineal aquí arriba
  160. 7:41les dejo un vídeo que podrían consultar
  161. 7:44podrían en este punto y sea a ver ese
  162. 7:47vídeo y después regresar no obstante no
  163. 7:50es enteramente necesario porque lo vamos
  164. 7:53a explicar
  165. 7:54rápidamente ok ahora permítanme ver las
  166. 7:58diferentes librerías que vamos a
  167. 8:00utilizar a lo largo de este vídeo vamos
  168. 8:04a utilizar un pactado que estamos
  169. 8:05trabajando con vectores vamos a utilizar
  170. 8:08más los lic porque ya vimos vamos a
  171. 8:10generar mucho de hecho muy bonitas vamos
  172. 8:13a utilizar la liberalidad de sim para
  173. 8:15que nos va a permitir hacer derivadas y
  174. 8:18derivadas parciales de una forma
  175. 8:20bastante sencilla donde nosotros nos
  176. 8:23podemos enfocar justo en su
  177. 8:26interpretación y no en cómo hacer una
  178. 8:30derivada y posteriormente utilizaremos
  179. 8:33hitler una de las librerías más
  180. 8:35utilizadas dentro del contexto de
  181. 8:37aprendizaje de máquina cuando se
  182. 8:40programa con python pero aquí está
  183. 8:43alquiler no para justo utilizar un
  184. 8:47algoritmo de gradiente descendiente que
  185. 8:49ya viene implementado ahí sino para
  186. 8:52generar el modelo de regresión lineal a
  187. 8:55través del método de mínimos cuadrados
  188. 8:57que es el método de optimización que
  189. 9:00justo utiliza la técnica de revisión
  190. 9:03lineal para calcular sus parámetros
  191. 9:05entonces nosotros vamos a calcular él
  192. 9:09óptimo donde la función de error llega
  193. 9:12hasta el fondo utilizando el gradiente
  194. 9:15descendiente pero para que sepamos que
  195. 9:18lo estamos haciendo de la manera
  196. 9:20correcta de la manera apropiada pues
  197. 9:23vamos a agarrar como referencia a que el
  198. 9:27algoritmo que ya tiene implementado sanz
  199. 9:30killer para este tipo de modelos ok
  200. 9:33entonces vamos a tener ahora otro
  201. 9:36contexto una variable independiente
  202. 9:38donde vamos a tener los años de
  203. 9:41experiencia de justo tres personas una
  204. 9:45persona que tiene 5 años 6 años y otra
  205. 9:47que tiene 13 años de experiencia y para
  206. 9:50cada una de ellas vamos a tener un
  207. 9:53salario que va a ser nuestra variable
  208. 9:56objetivo aquella variable que nosotros
  209. 9:57queremos predecir en función del número
  210. 10:00de años de experiencia laboral
  211. 10:03nosotros queremos determinar cuál sería
  212. 10:06el salario de esa persona en este caso
  213. 10:09tenemos una persona que tiene 5 años de
  214. 10:11experiencia y que aproximadamente gana 6
  215. 10:15punto 85 miles de pesos y tenemos una
  216. 10:19persona que tiene 6 años de experiencia
  217. 10:21y que aproximadamente gana
  218. 10:2316.83 miles de pesos estos datos están
  219. 10:28en miles de pesos y por último obtenemos
  220. 10:31una tercera persona que tiene 13 años de
  221. 10:35experiencia y su salario equivale a
  222. 10:3826.84 miles de pesos y con esto
  223. 10:43generamos el modelo de regresión lineal
  224. 10:47utilizando justo la librería de esa
  225. 10:50killer recuerden si quieren ver detalles
  226. 10:52de cómo crear lo utilizan 2 alquiler
  227. 10:55aquí arriba en el vídeo que les dejo ahí
  228. 10:57lo pueden consultar aquí simplemente lo
  229. 10:59vamos a crear lo está creando utilizando
  230. 11:03una técnica que se llama el método de
  231. 11:05mínimos cuadrados ok entonces nosotros
  232. 11:08ya generamos nuestro modelo que como es
  233. 11:10lineal no es otra cosa más que una
  234. 11:11simple línea recta
  235. 11:15aquí tenemos código de
  236. 11:19visualización y en este caso simplemente
  237. 11:22vamos a ejecutar
  238. 11:25aquí está vean que gráfica tan bonita
  239. 11:27nos está generando
  240. 11:28y qué es lo que tenemos nosotros estos
  241. 11:33datos en amarillo son justo los datos
  242. 11:37los valores verdaderos que nos sirvieron
  243. 11:39de base para crear nuestro modelo en
  244. 11:42este caso tenemos aquí la persona de 5
  245. 11:44años de experiencia ganando un salario
  246. 11:47de hecho déjenme verificar
  247. 11:506.85 aquí está más o menos 6.85 y acá
  248. 11:55tenemos la persona que tiene 13 años de
  249. 11:58experiencia aproximadamente ganando 27
  250. 12:00mil pesos ok y acá tenemos a la segunda
  251. 12:04persona y con estos tres datos nosotros
  252. 12:06creamos una línea un modelo es este
  253. 12:10modelo que está aquí ese está en línea
  254. 12:12rosa que nosotros tenemos y con este
  255. 12:15modelo nosotros podemos ahora sí
  256. 12:18realizar predicciones de cuánto ganaría
  257. 12:21una persona en función de los años de
  258. 12:24experiencia por ejemplo aquí tenemos que
  259. 12:26una persona de aproximadamente ocho años
  260. 12:29de experiencia podría ganar
  261. 12:32según este modelo aproximadamente 17 mil
  262. 12:36pesos ok este es nuestro modelo
  263. 12:38obviamente este modelo no es perfecto
  264. 12:41porque no es perfecto porque hay un
  265. 12:44error para la persona que tiene 5 años
  266. 12:46de experiencia el valor real la zona
  267. 12:49aproximadamente 6 mil pesos sin embargo
  268. 12:51que nos está diciendo a nuestro modelo
  269. 12:53nuestro modelo nos está diciendo que una
  270. 12:56persona de 5 años de experiencia
  271. 12:58aproximadamente gana 11 mil pesos y que
  272. 13:01nos está diciendo
  273. 13:02para una persona de 6 años de
  274. 13:05experiencia que aproximadamente gana 13
  275. 13:07mil pesos pero nuestros datos reales nos
  276. 13:10están diciendo que son 17 mil pesos más
  277. 13:12o menos y cuando llegamos a una persona
  278. 13:15que tiene 13 años de experiencia aquí el
  279. 13:18error no es tan grande sin embargo si
  280. 13:21hay un error a estos errores se les
  281. 13:23llama residuos y una métrica para
  282. 13:27determinar el error de un modelo de
  283. 13:30regresión es justo tomar en cuenta este
  284. 13:34error más este error más este error y
  285. 13:37elevarlo al cuadrado se eleva al
  286. 13:39cuadrado simplemente para quitar el
  287. 13:41signo porque acá podría ser un signo
  288. 13:43positivo y acá podría ser un signo
  289. 13:45negativo un error hacia arriba un error
  290. 13:47hacia abajo entonces lo elevamos al
  291. 13:49cuadrado el otro objetivo de elevarlo
  292. 13:51hasta el cuadrado es darle mayor
  293. 13:53importancia a los errores más grandes
  294. 13:55que a los errores pequeños ya tenemos en
  295. 13:58este canal un vídeo explicando las
  296. 14:01diferentes métricas para evaluación de
  297. 14:03modelos de regresión y ahí explicamos
  298. 14:06justo esta métrica que por sus siglas en
  299. 14:09inglés se llama rss que es simplemente
  300. 14:12la suma de los residuos al cuadrado
  301. 14:14recuerden que es un residuo este es un
  302. 14:16residuo este es un residuo este es un
  303. 14:18residuo lo sumamos pero cada uno lo
  304. 14:20elevamos al cuadrado ok entonces ya
  305. 14:24tenemos una manera de determinar el
  306. 14:26error porque estoy hablando muchísimo
  307. 14:28del error porque con el error nosotros
  308. 14:31podemos construir nuestra zona montañosa
  309. 14:34podemos construir el error y donde esté
  310. 14:36más al fondo donde esté el valor mínimo
  311. 14:40de la función del error quiere decir que
  312. 14:42hemos encontrado
  313. 14:43y el mejor parámetro de nuestro modelo
  314. 14:46de regresión en este caso de nuestro
  315. 14:48modelo de regresión lineal que estamos
  316. 14:50utilizando simplemente como cualquier
  317. 14:53otro ejemplo bien pudimos haber
  318. 14:55utilizado el perceptor una red neuronal
  319. 14:58ok entonces qué más tenemos aquí dentro
  320. 15:02de nuestros datos
  321. 15:03tenemos dos parámetros en el modelo de
  322. 15:06regresión lineal tenemos la pendiente
  323. 15:08que está
  324. 15:09acostada está nuestra línea podría estar
  325. 15:13así así así ésta es una pendiente m en
  326. 15:17este punto y de hecho está pendiente es
  327. 15:21de
  328. 15:212.10 ya esto es un valor óptimo y otro
  329. 15:27parámetro que tenemos en un modelo de
  330. 15:28regresión lineal es esta línea en qué
  331. 15:31parte cruza el eje de las y en qué parte
  332. 15:36la cruza aquí yo estoy
  333. 15:38con toda la intención haciendo un modelo
  334. 15:42de regresión que tenga un cruce en el
  335. 15:46eje de las y exactamente en el cero y
  336. 15:50con eso yo solo me voy a enfocar en un
  337. 15:53solo parámetro en determinar qué tan
  338. 15:55acostada está la mi línea recta estoy
  339. 15:59enfocándome en la optimización del
  340. 16:01parámetro y me di la pendiente de la
  341. 16:05recta ok entonces ya está ya
  342. 16:08determinamos un modelo que tiene una vez
  343. 16:11de cero entonces es interceptó lo vamos
  344. 16:14a ignorar completamente y el valor
  345. 16:16óptimo está 2.1 ya lo sabemos lo vamos a
  346. 16:19utilizar simplemente como referencia de
  347. 16:21hecho vamos a llegar a ese valor
  348. 16:24utilizando el gradiente descendiente
  349. 16:26además conocemos la suma de cuadrados de
  350. 16:30los residuos es simplemente el error que
  351. 16:33tenemos para este modelo que es de 31
  352. 16:37puntos 42 esto ya lo calculamos nosotros
  353. 16:40por aquí recuerden es el valor conocido
  354. 16:44al área esta es nuestra variedad el
  355. 16:45objetivo menos lo que nuestro modelo nos
  356. 16:49está diciendo lo que nuestro modelo está
  357. 16:51prediciendo y eso lo elevamos al
  358. 16:53cuadrado es justo lo que tenemos aquí y
  359. 16:56lo sumamos absolutamente esto lo estamos
  360. 16:59haciendo muy fácil a raíz de que lo
  361. 17:02estamos realizando con un pay que nos
  362. 17:06permite hacer cálculos vectoriales si
  363. 17:08alguien está interesado en un país que
  364. 17:10de hecho debería aquí arriba les dejo
  365. 17:14una lista a una playlist que ya tenemos
  366. 17:16en este canal ok ahora ya sabemos cuál
  367. 17:21es el error de un modelo óptimo para
  368. 17:24estos tres datos que nosotros tenemos y
  369. 17:27ya tenemos la pendiente óptima que es de
  370. 17:312.10 ahora sí estamos listos para tratar
  371. 17:36de llegar justo a ese valor utilizando
  372. 17:39el mecanismo del algoritmo del gradiente
  373. 17:43de descendiente entonces recuerdan esto
  374. 17:46que les comentaba yo acá en la persona
  375. 17:49pisa hacia delante pisa hacia atrás
  376. 17:51pisas a la izquierda pisa a la derecha
  377. 17:54esto como nosotros lo podemos ver dentro
  378. 17:59de un modelo de aprendizaje de máquina
  379. 18:02eso lo podemos ver nosotros variando el
  380. 18:04parámetro que queremos nosotros
  381. 18:06optimizar en este caso recuerden lo
  382. 18:09simplificamos solo tenemos un parámetro
  383. 18:12la pendiente que tan acostada va a estar
  384. 18:15nuestra línea para eso yo ya que prepare
  385. 18:19una visualización de diferentes
  386. 18:22pendientes para los diferentes datos que
  387. 18:24nosotros tenemos es un rango de interés
  388. 18:28para que nosotros lo podamos ver
  389. 18:30claramente aquí yo ya estoy creando un
  390. 18:33rango de diferentes pendientes que van
  391. 18:35de 2.5 al
  392. 18:371.6 y simplemente vamos a graficar estas
  393. 18:41pendientes en este rango de 3 ok aquí
  394. 18:45tenemos exactamente los mismos datos que
  395. 18:48teníamos nuestros 3 puntos 2 y 3 y
  396. 18:52tenemos múltiples pendientes múltiples
  397. 18:56líneas con múltiples pendientes de aquí
  398. 18:58como todas se están pegando porque todas
  399. 19:02tienen el interceptó debe igual a 0
  400. 19:06cruzan el eje de las y en el ser por eso
  401. 19:10se van pegando y atrás se van abriendo
  402. 19:12ok pues aquí tenemos diferentes
  403. 19:15pendientes la pendiente azul de
  404. 19:182.5 es justo está 2.4 2.3 2.2
  405. 19:242.12 1.9 1.8 y 1.7 son diferentes
  406. 19:30expedientes obviamente cada una de estas
  407. 19:32pendientes nos está representando un
  408. 19:35diferente modelo de regresión lineal son
  409. 19:37los pasos que les comentaba hacia atrás
  410. 19:40y delante se les quiera hacer la derecha
  411. 19:41y cada uno de estos pasos cada una de
  412. 19:46estas pendientes tendrá asociado en sí
  413. 19:47un cierto error aquí yo ya me di a la
  414. 19:50tarea de calcular el error el error del
  415. 19:542.5 de la pendiente de 2.5 es
  416. 19:5737.31 con esto me refiero al error y
  417. 20:00ricky si esta suma de los residuos al
  418. 20:05cuadrado y podemos ver que para el
  419. 20:08modelo de pendiente de 2.4 es de 50 y
  420. 20:121.44 para el otro es de 40 33 31 33 41
  421. 20:1852 69 que está pasando aquí cada una de
  422. 20:22estas pendientes tiene un error
  423. 20:24diferente podemos ver cuáles son las que
  424. 20:27tienen los errores más grandes los
  425. 20:30errores más grandes es de la azul y de
  426. 20:33este verde la de arriba y la de abajo la
  427. 20:37azul tiene 67 y la de abajo tiene 69
  428. 20:42aquí nos interesa la magnitud de hecho
  429. 20:46ambas tienen errores muy similares
  430. 20:48porque la línea con la pendiente de
  431. 20:532.1 que es esta maravilla que está por
  432. 20:56aquí está justo en medio
  433. 20:59es por eso que conforme nos vamos
  434. 21:01acercando a la pendiente óptima el error
  435. 21:04va reduciendo pero conforme nos vamos
  436. 21:08alejando de la pendiente óptima el error
  437. 21:12va aumentando entonces estos son
  438. 21:15nuestros pasos ok aquí no opte yo por
  439. 21:20ninguna dirección simplemente dije bueno
  440. 21:23qué pasa ha sido en múltiples pasos en
  441. 21:24diferentes direcciones y aquí podemos
  442. 21:27ver si efectivamente podemos construir
  443. 21:30estos modelos y para cada uno de ellos
  444. 21:32podríamos tener ciertos errores y el
  445. 21:34error nos está dando cierta información
  446. 21:37que tanto nos estamos alejando claro
  447. 21:40aquí tenemos la gran ventaja de que
  448. 21:43sabemos cuál es el valor óptimo pero el
  449. 21:46gradiente descendiente funciona aún sin
  450. 21:49saber el valor óptimo entonces vamos
  451. 21:53viendo todavía un poquito más de detalle
  452. 21:56ya gráfica vamos los diferentes modelos
  453. 21:59vimos los errores pero vamos a graficar
  454. 22:03en estos errores para que nos quede
  455. 22:04todavía más claro qué es lo que está
  456. 22:07pasando para eso yo aquí tengo código de
  457. 22:10matt del dif y nos genera esta gráfica
  458. 22:13que tenemos aquí es el error el rs5 esta
  459. 22:17suma de los residuos al cuadrado y en el
  460. 22:21eje de las x tenemos la pendiente que ya
  461. 22:24sabemos que el óptimo está muy cerca de
  462. 22:292.1 cuando utilizamos una pendiente de
  463. 22:322.1 ahí es el error más bajo de nuestro
  464. 22:37modelo y podemos ver que los errores más
  465. 22:41altos efectivamente se dan cuando
  466. 22:44tenemos pendientes alejadas de este 2.1
  467. 22:47el 1.7 y el 2.5 entonces vean aquí justo
  468. 22:52tenemos la función de error graficada y
  469. 22:57la misma función de error nos está
  470. 23:00indicando visualmente dónde se encuentra
  471. 23:04el error mínimo
  472. 23:06para que el valor de la pendiente se
  473. 23:09encuentra un error mínimo en mi modelo
  474. 23:12de regresión lineal sin embargo cómo
  475. 23:14puedo hacer esto vía programación
  476. 23:19automáticamente para esto requerimos las
  477. 23:22derivadas pero en este punto pareciera
  478. 23:25un concepto extremadamente matemático
  479. 23:27pero sí lo es sin embargo tiene una
  480. 23:29interpretación bastante aterrizada una
  481. 23:32derivada no es otra cosa más que una
  482. 23:34razón de cambio que tanto cambia una
  483. 23:37variable y con respecto a otra que tanto
  484. 23:41va a cambiar mi error con respecto a la
  485. 23:45pendiente vamos a ver todavía un poquito
  486. 23:48más de detalle para aterrizar justo este
  487. 23:51concepto entonces para eso nosotros
  488. 23:54tenemos que preparar nuestra función de
  489. 23:58error y una vez que nosotros creamos la
  490. 24:01función de error entonces si le sacamos
  491. 24:03la derivada y con eso vamos a obtener la
  492. 24:06razón de cambio para el error en función
  493. 24:09de la pendiente ok vamos a programar
  494. 24:13primero la función de error una vez que
  495. 24:17tenemos programada la función de error
  496. 24:19ahora sí le vamos a poder sacar la
  497. 24:22derivada afortunadamente aquí es
  498. 24:24bastante sencillo calcular el error dado
  499. 24:27que estamos utilizando la función de
  500. 24:29error o de pérdida como se le conoce
  501. 24:31también dentro de este contexto de la
  502. 24:33suma de los cuadrados de los residuos
  503. 24:36que no es otra cosa más que el valor
  504. 24:39real menos el valor predicho por nuestro
  505. 24:42sistema elevado al cuadrado la suma de
  506. 24:45cada uno de esos residuos elevada al
  507. 24:48cuadrado
  508. 24:49entonces aquí sacamos ventaja de que
  509. 24:52tenemos los datos de tres personas esos
  510. 24:55siempre los tendríamos tenemos una
  511. 24:57persona que gana aproximadamente seis
  512. 24:59mil pesos con cinco años de experiencia
  513. 25:01una persona que gana aproximadamente 16
  514. 25:03mil pesos con seis años de experiencia y
  515. 25:05una persona que gana 26 mil pesos con 13
  516. 25:08años de experiencia esto ya lo conocemos
  517. 25:10estos son los datos que nos van a servir
  518. 25:13para qué a nuestro poder para ajustar
  519. 25:15los parámetros entonces cuál sería la
  520. 25:18función de error a partir de estos datos
  521. 25:21para eso yo voy a definir aquí
  522. 25:22simplemente error va a ser igual al
  523. 25:26valor que ya conozco que es
  524. 25:28efectivamente correcto para la persona 1
  525. 25:31que en este caso es de 6.85 techo
  526. 25:35permítanme lo voy a copiar 6.85 aquí
  527. 25:38está y ahora qué es lo que tengo que
  528. 25:41hacer para aproximar me a la creación de
  529. 25:44mi función de error que es la suma de
  530. 25:46los cuadrados de los residuos
  531. 25:47simplemente restarle lo que nuestro
  532. 25:50modelo
  533. 25:51calcularía y nuestro modelo lo calcular
  534. 25:54ya en función de la pendiente que es el
  535. 25:55parámetro que nosotros queremos ajustar
  536. 25:57en por el número de años de experiencia
  537. 26:00pero eso ya lo tenemos nosotros aquí
  538. 26:02para la primera persona es simplemente 5
  539. 26:08y quedamos que lo elevamos al cuadrado
  540. 26:11para quitar los signos y para darle
  541. 26:13mayor relevancia a los errores más
  542. 26:15grandes y menor relevancia de los
  543. 26:17errores más pequeñas entonces lo
  544. 26:19elevamos al cuadrado pero este es el
  545. 26:22error de la primera persona entonces qué
  546. 26:26tenemos que hacer sumarle el error de la
  547. 26:29segunda persona y para eso pues nosotros
  548. 26:33ya conocemos exactamente el dato
  549. 26:37correcto
  550. 26:3816.83
  551. 26:40menos lo que calculó un modelo de m
  552. 26:46por los años de experiencia de esa
  553. 26:49persona que ya los conocemos 6 y
  554. 26:52aplicamos justo lo mismo lo elevamos al
  555. 26:55cuadrado y repetimos exactamente lo
  556. 26:58mismo para la tercer persona entonces
  557. 27:01puede copiar esta línea aquí está
  558. 27:06y le voy a restar el cálculo del modelo
  559. 27:09para una pendiente y mirada y le vamos a
  560. 27:12decir que es de 13 años de experiencia e
  561. 27:16igual lo elevamos al cuadrado ahora ya
  562. 27:19tenemos así de simple nuestra función de
  563. 27:22error claro ahora corresponde derivar la
  564. 27:27para poder obtener esta razón de cambio
  565. 27:29para que cuando yo le ponga un valor de
  566. 27:33m nos diga hacia donde tenemos que
  567. 27:36caminar y para eso voy a hacer uso de
  568. 27:40zinc para que es python simbólico
  569. 27:44entonces tengo que definir un símbolo
  570. 27:46que símbolo voy a definir una m
  571. 27:50ok entonces pongo mi m la defino justo
  572. 27:54utilizando python simbólico que ya lo
  573. 27:57importamos con el apodo de zinc justo en
  574. 28:00la parte inicial del vídeo ponemos el
  575. 28:03símbolo que nosotros queremos
  576. 28:05generar y en este caso le estamos
  577. 28:08diciendo vamos a tener una variable m y
  578. 28:10es un símbolo sobre esta variable
  579. 28:13nosotros vamos a hacer una operación
  580. 28:15simbólica qué operación vamos a hacer la
  581. 28:17derivada ok ahora si ya definimos
  582. 28:22nuestro símbolo tenemos nuestra función
  583. 28:24ya sólo corresponde sacar la derivada
  584. 28:27claro esto está bastante sencillo lo
  585. 28:29podríamos hacer manualmente pero estamos
  586. 28:31en un canal de programación entonces
  587. 28:33vamos viendo cómo derivar simbólicamente
  588. 28:36esta función ya definimos nuestro
  589. 28:39símbolo es muy sencillo la derivada de
  590. 28:41la función del error nosotros la podemos
  591. 28:43calcular fácilmente utilizando sin punto
  592. 28:46pib y pasándole la función que queremos
  593. 28:50derivar que en este caso es la del error
  594. 28:53y con respecto a que cuál va a ser la
  595. 28:56variable que nosotros vamos a derivar en
  596. 28:58este caso sólo tenemos una variable que
  597. 29:00es la pendiente y así está con eso
  598. 29:05calculamos nosotros justo la derivada de
  599. 29:08la función del error es bastante
  600. 29:10sencillo
  601. 29:12aquí les recomiendo si alguien no tiene
  602. 29:14conocimientos de cómo derivar le
  603. 29:16recomiendo que chequen un libro de
  604. 29:18cálculo es algo muy muy importante para
  605. 29:20avanzar en sus conocimientos de
  606. 29:22aprendizaje de máquinas conocimientos de
  607. 29:25cálculo son muy importantes para poder
  608. 29:27profundizar no obstante aquí lo
  609. 29:30importante es que conozcamos la
  610. 29:32interpretación de la derivada ok ya
  611. 29:36tenemos la derivada vamos a jugar un
  612. 29:38poquito con ella vamos a evaluar esta
  613. 29:41derivada para diferentes pendientes y
  614. 29:43así nosotros podemos ver si
  615. 29:45efectivamente nos está dando cierta
  616. 29:47información para determinar hacia donde
  617. 29:49debemos de caminar e inclusive la
  618. 29:51magnitud de qué tanto podemos caminar en
  619. 29:53esa dirección ok ahora sí vamos a
  620. 29:56evaluar para las diferentes pendientes
  621. 29:57recordando que vemos un vector de
  622. 29:59pendientes arriba que inclusive grafica
  623. 30:00mos entonces para cada una de esas
  624. 30:02pendientes que tenemos aquí
  625. 30:04vamos a imprimir la derivada que
  626. 30:07nosotros acabamos justo de programar y
  627. 30:11la vamos a evaluar vamos a ponerle aquí
  628. 30:13evaluación de chavannes vamos a poner la
  629. 30:16formateada con dos decimales aquí está y
  630. 30:19ahora simplemente evaluamos la derivada
  631. 30:22para evaluar una función en simple
  632. 30:26simplemente hacemos uso del método y fal
  633. 30:29efe entonces ponemos derivada punto
  634. 30:32igual
  635. 30:33efe y le decimos que sustituya el valor
  636. 30:37de m por cada una de las pendientes que
  637. 30:39nosotros tenemos en nuestro vector
  638. 30:42entonces escribimos subs
  639. 30:46aquí está escribimos la m y le decimos
  640. 30:49que cada una de estas m va a ser
  641. 30:52sustituida por cada una de las
  642. 30:54pendientes que nosotros tenemos y ahora
  643. 30:57sí vamos a ejecutar nuestro código y
  644. 31:00veamos que el resultado nos está dando
  645. 31:03vean bueno de entrada esta es la
  646. 31:05derivada de la función del error
  647. 31:07obviamente lo podemos hacer manualmente
  648. 31:10pero aquí lo hicimos bien programación
  649. 31:12porque estamos en un canal de
  650. 31:14programación y aquí tenemos los
  651. 31:17diferentes valores
  652. 31:19de la derivada evaluada en esta m noten
  653. 31:24todos los de arriba son positivos todos
  654. 31:28los de abajo son negativos
  655. 31:31el valor más pequeño está entre este y
  656. 31:36este el valor más pequeño ahí es justo
  657. 31:42este que nosotros tenemos por aquí es
  658. 31:44cuando la pendiente se acerca justo a
  659. 31:47este valor ok pues aquí ya tenemos
  660. 31:51efectivamente un error la derivada del
  661. 31:54error lo estamos evaluando para un valor
  662. 31:57de una pendiente dada y algún tipo de
  663. 32:01información nos está dando con esto de
  664. 32:03que es positivo y negativo ahora vamos a
  665. 32:06graficar esta información para ver cómo
  666. 32:09se ve ok aquí tengo yo ya preparado
  667. 32:14código para graficar estas evaluaciones
  668. 32:16de la derivada del error y aquí estoy
  669. 32:23presentando exactamente casi la misma
  670. 32:26información que teníamos tenemos aquí el
  671. 32:28error que está denotado por estos puntos
  672. 32:31cada uno de ellos en diferentes colores
  673. 32:33y en la parte del eje de las x tenemos
  674. 32:37las pendientes ahora estas líneas
  675. 32:42qué es lo que nos está representando
  676. 32:44aquí nosotros estamos
  677. 32:48graficando el gradiente nosotros estamos
  678. 32:52graficando la evaluación de la derivada
  679. 32:57del error evaluada en una pendiente dada
  680. 33:00por ejemplo aquí en el 1.7 nosotros
  681. 33:05tenemos nuestra función del error y la
  682. 33:08derivamos esta derivada le hablamos en
  683. 33:121.7 y después la gráfica moss es esta
  684. 33:17línea es una tangente a nuestra función
  685. 33:20de error la podemos ver aquí claramente
  686. 33:21como ésta no por usar la función es
  687. 33:24tangente aunque ahora tenemos la
  688. 33:28derivada del error evaluada en 1.8 y
  689. 33:31aquí tenemos otra tangente y acá tenemos
  690. 33:35la derivada del error y evaluada en 1.9
  691. 33:38y note tiene otra vez está tan gente que
  692. 33:42está por ahí y que pasa tocando
  693. 33:44exactamente en este punto a la función
  694. 33:48de error la toca es una tangente que
  695. 33:51está por ahí y lo mismo podemos ver aquí
  696. 33:53y lo mismo podemos hacer aquí no tener
  697. 33:55esta que está aquí tenemos nuestra
  698. 33:57función de error que evaluamos la
  699. 33:58derivada de la función de error justo en
  700. 34:00ese punto y vean lo que nos genera una
  701. 34:04línea tangente pero no tiene aquí la
  702. 34:07pendiente de esta línea tangente se está
  703. 34:10aproximando a cero eso que nos está
  704. 34:13diciendo recuerdan nuestro contexto
  705. 34:15extraño del inicio que nosotros estamos
  706. 34:17muy cerca del fondo que si damos un paso
  707. 34:20hacia adelante un paso hacia atrás paso
  708. 34:22a la izquierda un paso hacia la derecha
  709. 34:23nosotros nos damos cuenta que el declive
  710. 34:26de cada uno de esos pasos que tanto
  711. 34:28bajamos por cada uno de ellos es muy
  712. 34:30poco entonces aquí estamos viendo para
  713. 34:34qué nos sirve la derivada si nosotros
  714. 34:38aumentamos una pelotita acá o una
  715. 34:40pelotita para acá y esta pelotita caería
  716. 34:43obviamente al fondo si nosotros
  717. 34:45lamentamos aquí noten la pendiente va a
  718. 34:49provocar que esa pelotita caiga más
  719. 34:51rápido si nosotros lamentamos aquí la
  720. 34:53pendiente
  721. 34:55o jarque esa pelotita no caerá tan
  722. 34:57rápido entonces estás pendientes de la
  723. 35:01derivada del error nos están diciendo la
  724. 35:03dirección de hacia dónde se va a ir la
  725. 35:06pelotita si la soltamos aquí
  726. 35:07automáticamente sabemos que es hacia la
  727. 35:09izquierda si la soltamos aquí
  728. 35:10automáticamente sabemos que es hacia la
  729. 35:12derecha si la soltamos aquí pues bueno
  730. 35:16está pendiente va a provocar que baje
  731. 35:18muy rápido la pelotita sí lamentamos
  732. 35:20aquí va a provocar que baje muy rápido
  733. 35:22la pelotita caso contrario si lamentamos
  734. 35:25por aquí va a provocar que baje sí pero
  735. 35:28muy lento entonces con esto nosotros
  736. 35:31estamos calculando el gradiente que
  737. 35:34tanto cambia nuestra función de error en
  738. 35:37función de una pendiente dada además nos
  739. 35:41está diciendo hacia dónde tenemos que
  740. 35:43caminar la dirección pero también nos
  741. 35:45está dando la magnitud esto es
  742. 35:47verdaderamente una maravilla ahora vamos
  743. 35:51a generalizar lo porque lo que tenemos
  744. 35:54aquí es exclusivamente
  745. 35:57un parámetro pero pues los modelos de
  746. 36:00aprendizaje de máquinas las técnicas de
  747. 36:02aprendizaje de máquinas tienen muchos
  748. 36:04parámetros en este caso inclusive
  749. 36:06estamos con una regresión lineal la
  750. 36:08revisión lineal pues tiene dos
  751. 36:10parámetros el interceptó la ve donde
  752. 36:12cruza la línea con el eje de las y
  753. 36:14griegas y si también la pendiente y para
  754. 36:19fines de explicación nosotros asumimos
  755. 36:21que todas las líneas cruzaban en cero y
  756. 36:25eso nos permitió ignorar la ve pero qué
  757. 36:28pasa si no la ignoramos si queremos
  758. 36:31optimizar también y sabe es intercepta
  759. 36:34son dos parámetros a considerar entonces
  760. 36:37necesitamos hacer una generalización
  761. 36:40sin embargo esta generalización es
  762. 36:42bastante sencilla porque porque
  763. 36:45simplemente repetimos el mismo proceso
  764. 36:49pero cuando unos pequeños cambios ahora
  765. 36:52vamos a suponer que tenemos igual un
  766. 36:55modelo de regresión lineal pero ahora
  767. 36:58este modelo de regresión lineal lo vamos
  768. 37:00a querer optimizar tomando en cuenta
  769. 37:03parámetros 1 es la m la pendiente y el
  770. 37:07otro es la vez el interceptó donde la
  771. 37:11línea cruza el eje de las y
  772. 37:15ahora si recordamos en el ejemplo
  773. 37:17anterior sólo teníamos la m yo me
  774. 37:21encargué de que la b fuera igual a 0
  775. 37:25para poder explicar de una forma más
  776. 37:27sencilla sin embargo comúnmente las
  777. 37:31técnicas de aprendizaje de máquina
  778. 37:34tienen dos o más parámetros a optimizar
  779. 37:37entonces en este caso vamos a repetir
  780. 37:39exactamente un proceso pero tomando en
  781. 37:41cuenta los dos parámetros para eso yo
  782. 37:44aquí tengo datos muy similares a los que
  783. 37:47teníamos anteriormente sin embargo yo
  784. 37:50los varíe un poco para que tuviéramos un
  785. 37:52interceptó diferente de cero y una
  786. 37:56pendiente diferente de cero ahora
  787. 37:59permítanme ejecutar este código para
  788. 38:01visualizar el modelo y los datos
  789. 38:05aquí lo podemos ver igual tenemos en
  790. 38:09color amarillo los datos reales en color
  791. 38:12azul los datos pre dichos y en rosa
  792. 38:15tenemos nuestro modelo y ahora qué es lo
  793. 38:19importante aquí tenemos el valor del
  794. 38:22interceptó donde el modelo donde la
  795. 38:24línea cruza el eje de las y y es igual a
  796. 38:29menos
  797. 38:314.38 y la pendiente en este caso es de
  798. 38:352.45 e igual tenemos un error un error
  799. 38:39de la suma de los cuadrados de los
  800. 38:42residuos de
  801. 38:444.03 y obviamente nosotros queremos que
  802. 38:48al momento de que optimicemos nuestro
  803. 38:52modelo a través de el algoritmo del
  804. 38:55gradiente descendiente pues nos dé estos
  805. 38:58valores
  806. 39:00245 para la pendiente y menos 4.38 para
  807. 39:04el interceptó
  808. 39:07repetimos nuevamente el mismo
  809. 39:10procedimiento tenemos que calcular el
  810. 39:13error en el otro nosotros hicimos la
  811. 39:16fórmula del error
  812. 39:18exclusivamente en función de la m y este
  813. 39:23término que está aquí el más b de cada
  814. 39:26uno de ellos no estaba porque porque era
  815. 39:29igual a cero yo así lo definí
  816. 39:31explícitamente
  817. 39:33ahora tenemos dos parámetros por tanto
  818. 39:36la predicción involucra tanto la m la
  819. 39:40pendiente como el interceptó y por tal
  820. 39:42razón tenemos que definir así nuestra
  821. 39:45función de error ahora tenemos dos
  822. 39:48variables que pasa cuando gráfica mos la
  823. 39:51función de error en el otro se veía una
  824. 39:54función con pixar en este caso como se
  825. 39:59verá igual convexa pero de una forma
  826. 40:03tridimensional
  827. 40:05ahora que es lo que tenemos aquí cada
  828. 40:08uno de estos puntos y en moralito
  829. 40:11la evaluación de la función de error
  830. 40:14para una pendiente dada y para un
  831. 40:17interceptor aad aquí podemos ver un
  832. 40:20punto del error que tendría ese modelo
  833. 40:24para una pendiente igual a cero y para
  834. 40:26un interceptó de menos 10 eso es justo
  835. 40:30lo que tenemos aquí graficando cuál es
  836. 40:33el error para esos valores de los
  837. 40:37parámetros y igual como hicimos en el
  838. 40:40ejemplo anterior yo aquí estoy
  839. 40:42graficando el rango de interés donde yo
  840. 40:46ya sé dónde se encuentra el valor óptimo
  841. 40:49claro esto lo estoy haciendo
  842. 40:51exclusivamente por razones
  843. 40:54didácticas para que sepamos qué es lo
  844. 40:57que estamos haciendo hacia dónde vamos
  845. 40:59sin embargo esto no es un requisito del
  846. 41:03algoritmo del gradiente descendiente y
  847. 41:06lo que estoy graficando aquí en color
  848. 41:08azul claro es justo donde se encuentra
  849. 41:11el valor óptimo que fue igual calculado
  850. 41:14con la librería de sakhir line
  851. 41:17utilizando el método
  852. 41:19cuadrados que es el método que ya viene
  853. 41:21por defecto para crear los modelos de
  854. 41:24regresión lineal ok entonces así lo
  855. 41:28podemos ver nosotros tridimensionalmente
  856. 41:30para cuando tenemos dos parámetros vamos
  857. 41:34avanzando en el procedimiento recuerdan
  858. 41:37una vez que nosotros definimos una
  859. 41:39función de error que fue lo que hicimos
  860. 41:41sacamos la derivada de esa función de
  861. 41:44error y para que sacamos la derivada de
  862. 41:46la función del error para poder calcular
  863. 41:48el gradiente y que ahora nos diga hacia
  864. 41:52donde tenemos que avanzar porque justo
  865. 41:55cuando esa derivada de la función del
  866. 41:57error es igual a cero y es cuando hemos
  867. 42:02encontrado en nosotros ese valor mínimo
  868. 42:05y recuerdan en el caso anterior nos
  869. 42:07decía igual la magnitud y la dirección
  870. 42:10de hacia dónde avanzar acá es
  871. 42:14exactamente lo mismo la única diferencia
  872. 42:16que nosotros tenemos aquí es que ahora
  873. 42:18involucramos dos variables y por tanto
  874. 42:21definimos dos símbolos utilizando la
  875. 42:23librería
  876. 42:24sin pay para cálculo simbólico dentro de
  877. 42:28payton y poder calcular de una forma muy
  878. 42:30sencilla las derivadas en este caso y
  879. 42:33este es un concepto de cálculo no
  880. 42:36podemos sacar la derivada explícitamente
  881. 42:38porque la derivada sólo se puede hacer
  882. 42:40cuando tenemos una sola variable aquí
  883. 42:44tenemos dos variables
  884. 42:47entonces qué es lo que tenemos que hacer
  885. 42:49la derivada parcial recuerden la
  886. 42:53derivada es simplemente una razón de
  887. 42:56cambio cómo se comporta la función del
  888. 42:59error cómo se comporta el error cuando
  889. 43:01yo alteró la pendiente cuando yo alteró
  890. 43:04el interceptó cómo se comportaría el
  891. 43:07error para eso nosotros igual sacamos la
  892. 43:10derivada pero la derivada a pasear esto
  893. 43:13va a implicar que cuando yo derive por
  894. 43:16ejemplo con respecto a la pendiente se
  895. 43:20toma como constante el interceptó y
  896. 43:23cuando yo derive con respecto al
  897. 43:26interceptó se toma como constante la
  898. 43:28pendiente y así tengo yo una derivada
  899. 43:31del error con respecto al interceptó y
  900. 43:35tengo yo una derivada del error con
  901. 43:37respecto a la pendiente estas son
  902. 43:40derivadas parciales porque estamos
  903. 43:44involucrando dos variables aquí como es
  904. 43:47exactamente el mismo código yo ya lo
  905. 43:49dejé preparado y lo vamos a ejecutar y
  906. 43:54podemos ver que la derivada del error la
  907. 43:58derivada parcial con respecto a m de la
  908. 44:01función del error involucra
  909. 44:03efectivamente tanto b como m y tenemos
  910. 44:07exactamente lo mismo para la derivada
  911. 44:10parcial de la función de error con
  912. 44:12respecto a b cada una de estas derivadas
  913. 44:16nos da el gradiente pero en función de
  914. 44:19uno de los parámetros de nuestro modelo
  915. 44:21en uno es la pendiente y en otro es
  916. 44:24justamente el interceptó es exactamente
  917. 44:27la misma interpretación que teníamos en
  918. 44:30el ejemplo más
  919. 44:32nada más que aquí tenemos la derivada
  920. 44:35parcial porque involucramos dos
  921. 44:37variables ok entonces ya tenemos esta
  922. 44:41derivada parcial ahora sí estamos listos
  923. 44:44para ver el pseudo código del gradiente
  924. 44:47descendiente tenemos toda la parte
  925. 44:50matemática
  926. 44:51resuelta cómo funciona este algoritmo y
  927. 44:55hasta cierto punto lo definimos en la
  928. 44:58parte inicial de este vídeo sin embargo
  929. 45:00vamos definiendo lo un poquito más
  930. 45:02formal cuando llegaba el paracaidista y
  931. 45:07caía en esa zona montañosa yo les hable
  932. 45:10de que daba ciertos pasos pero cuántos
  933. 45:13pasos va a dar a lo mejor alguien podría
  934. 45:16decir pues ya no más doy diez pasos otra
  935. 45:18persona podría decir yo doy veinte pasos
  936. 45:20cuantos pasos requerimos nosotros para
  937. 45:22llegar al arroyo para llegar al mínimo
  938. 45:25para optimizar nuestro modelo pues en
  939. 45:30muchos casos no lo sabemos por lo tanto
  940. 45:32se define una constante la cual
  941. 45:34normalmente se ajusta de forma
  942. 45:36experimental
  943. 45:38en función de los mínimos que vamos
  944. 45:40detectando en este caso simplemente
  945. 45:43definimos un máximo de pasos un máximo
  946. 45:46de interacciones de este algoritmo en
  947. 45:49este caso de 10.000 podría ser un buen
  948. 45:52valor y obviamente vamos a necesitar una
  949. 45:55variable que nos va a ir contando
  950. 45:57cuántos pasos ha dado nuestro
  951. 45:59paracaidista y para eso tenemos esta
  952. 46:02variable llamada integración ahora
  953. 46:05tenemos esta tasa de aprendizaje que
  954. 46:10será esto qué significado tiene con
  955. 46:14respecto a este ejemplo ficticio que
  956. 46:16planteamos inicialmente ok con
  957. 46:18integraciones máximas sabemos cuántos
  958. 46:21pasos dar pero de qué tamaño va a ser
  959. 46:23cada paso va a ser un paso t va a ser un
  960. 46:26pasito va a ser un paso normal eso es
  961. 46:29justo lo que nos está definiendo la tasa
  962. 46:31de aprendizaje qué tamaño va a tener ese
  963. 46:35paso obviamente nosotros podríamos decir
  964. 46:37no yo quiero aprender
  965. 46:39muy rápido de hecho lo podríamos hacer
  966. 46:42así
  967. 46:43sin embargo recuerden nosotros vamos
  968. 46:45dando pasitos pasitos pasitos pasitos
  969. 46:47pasitos pasitos hasta que llegamos al
  970. 46:50óptimo al mínimo sin embargo imagínense
  971. 46:53que arrancamos aquí arriba y decimos no
  972. 46:56yo no voy a dar así llevo a dar brincos
  973. 46:58pues qué pasa de aquí yo puedo brincar
  974. 47:00pareja un paso tote que pasó me brinqué
  975. 47:04de brinque el mínimo y digo bueno pues
  976. 47:08regreso pues vuelvo a brincar regreso
  977. 47:10brincar aplicar brincar brincar y así
  978. 47:13voy y cada vez que voy brincando me voy
  979. 47:16brincando el mínimo de mi función de
  980. 47:18error eso no lo quieres a raíz de eso se
  981. 47:21define una tasa de aprendizaje
  982. 47:23relativamente pequeña igual que en el
  983. 47:26caso de las iteraciones máximas la tasa
  984. 47:28de aprendizaje es un valor que se ajusta
  985. 47:31en función de experimentación en este
  986. 47:34caso nosotros vamos a utilizar
  987. 47:35simplemente
  988. 47:360.001 yo ya hice algunas pruebas y estos
  989. 47:39parámetros realmente nos dan buenos
  990. 47:41resultados
  991. 47:43en nuestro ejemplo anterior teníamos un
  992. 47:45paracaidista que pudo haber caído en la
  993. 47:48montaña de la izquierda en la montaña de
  994. 47:50la derecha un poquito más para acá un
  995. 47:51poquito más para allá igual aquí donde
  996. 47:54vamos a arrancar explorar pues podríamos
  997. 47:57arrancar aquí con un valor de una
  998. 47:59pendiente y de un interceptor o
  999. 48:02podríamos arrancar con otros valores
  1000. 48:04completamente diferentes o un poquito
  1001. 48:06para
  1002. 48:07independientemente de los valores que
  1003. 48:09nosotros seleccionemos este algoritmo
  1004. 48:11nos va a llevar al mínimo al menos para
  1005. 48:15el caso de los modelos de regresión
  1006. 48:17lineal para los cuales se conoce que
  1007. 48:19tienen un solo mínimo global a raíz de
  1008. 48:22que su función de error es convexa que
  1009. 48:23tiene esta esta forma por eso es que
  1010. 48:26forzosamente vamos a llegar al mínimo si
  1011. 48:31ponemos una tasa de aprendizaje
  1012. 48:32relativamente pequeña y una cierta
  1013. 48:34cantidad de instalaciones máximas ok
  1014. 48:37entonces qué es lo que queda aquí pues
  1015. 48:41simplemente empezar a dar pasitos
  1016. 48:42entonces recuerdan del paso pero hacia
  1017. 48:46donde lo doy en qué magnitud
  1018. 48:48pues para eso necesito calcular los
  1019. 48:50gradientes en función de la posición
  1020. 48:52donde estoy pero eso ya sabemos cómo
  1021. 48:55hacerlo de hecho ya calculamos nosotros
  1022. 48:57las derivadas parciales tanto de la
  1023. 49:00función de error con respecto al
  1024. 49:01interceptó como de la función del error
  1025. 49:03con respecto a la pendiente nosotros ya
  1026. 49:06calculamos los gradientes las razones de
  1027. 49:10cambio y en función del gradiente
  1028. 49:12nosotros vamos a actualizar nuestros
  1029. 49:16parámetros la nueva pendiente y el nuevo
  1030. 49:19interceptó aumentamos una integración
  1031. 49:21más verificamos si todavía no llegamos
  1032. 49:24al máximo de interacciones que nosotros
  1033. 49:26definimos si no es así otra vez dimos un
  1034. 49:29paso calculamos el gradiente
  1035. 49:30determinamos hacia donde caminar y con
  1036. 49:34qué magnitud y otra vez volvemos a
  1037. 49:36actualizar nuestros parámetros la
  1038. 49:38pendiente y el intercepta aumentamos el
  1039. 49:41número de estaciones y lo repetimos así
  1040. 49:43hasta que eventualmente llegamos al
  1041. 49:46número de iteraciones máximas y si
  1042. 49:49seleccionamos apropiadamente una buena
  1043. 49:51tasa de aprendizaje y un cierto número
  1044. 49:53de intenciones máximas habremos llegado
  1045. 49:56a nuestro mínimo al menos para el caso
  1046. 49:59de los modelos de regresión lineal ok
  1047. 50:03este es el algoritmo básico ahora vamos
  1048. 50:05simplemente a programarlo para eso yo ya
  1049. 50:09tengo aquí un poco de código preparado
  1050. 50:12igual el número máximo de instalaciones
  1051. 50:15está en 10.000 justo lo que teníamos en
  1052. 50:17nuestro pseudo código definir la tasa de
  1053. 50:20aprendizaje igual a
  1054. 50:210.00 uno tiene que ser relativamente
  1055. 50:25pequeña y ese es un valor relativamente
  1056. 50:28común que nosotros utilizamos cuando
  1057. 50:31estamos trabajando con este tipo de
  1058. 50:32algoritmos y
  1059. 50:34como valor es completamente arbitrario
  1060. 50:37aleatorios use una pendiente de 0 y un
  1061. 50:40interceptó de menos 10 lo estoy poniendo
  1062. 50:42exclusivamente en ese valor porque al
  1063. 50:45momento de graficar no se ve muy claro
  1064. 50:48que es lo que está pasando sin embargo
  1065. 50:50crea me pude haber puesto cualquier
  1066. 50:53valor y si no me creen los invito por
  1067. 50:56favor descarguen esta libreta de júpiter
  1068. 50:59de nuestro sitio de hip hop y jueguen un
  1069. 51:02poquito con el código y vean cómo se
  1070. 51:04comporta este algoritmo y lo que tenemos
  1071. 51:07aquí es un arreglo en un país que nos va
  1072. 51:12a permitir capturar los diferentes
  1073. 51:15errores conforme vamos ajustando
  1074. 51:18los parámetros de la pendiente y el
  1075. 51:21interceptó la única razón por la que
  1076. 51:24estoy incluyendo aquí este vector es
  1077. 51:26porque quiero graficar cada uno de los
  1078. 51:29pasitos para que veamos
  1079. 51:31claramente qué pasó porque efectivamente
  1080. 51:34si llegamos a los valores óptimos de la
  1081. 51:37pendiente el interceptó y quedamos que
  1082. 51:41teníamos ahí un simple ciclo en este
  1083. 51:43caso yo voy a utilizar un force funciona
  1084. 51:46exactamente igual al pseudo código del
  1085. 51:47wine que teníamos aquí arriba entonces
  1086. 51:49no pasa nada y vamos a calcular primero
  1087. 51:53los gradientes en función de las
  1088. 51:54derivadas parciales de la pendiente y
  1089. 51:57del interceptó que ya nosotros definimos
  1090. 52:00y estos gradientes los voy a almacenar
  1091. 52:03en una simple lista que tenga dos
  1092. 52:07elementos el gradiente de la pendiente y
  1093. 52:10el gradiente del interceptó entonces eso
  1094. 52:13ya quedamos lo calculamos nosotros con
  1095. 52:16la derivada del error la derivada
  1096. 52:19parcial del error con respecto a la
  1097. 52:22pendiente la evaluamos que ya sabemos
  1098. 52:24que le va hablamos con punto vale efe y
  1099. 52:27sustituimos el valor de m con el valor
  1100. 52:32de la pendiente arbitrario que nosotros
  1101. 52:34definimos al menos para la primera
  1102. 52:36integración
  1103. 52:38aquí nuestras derivadas parciales
  1104. 52:41recuerdan tienen dos variables una es la
  1105. 52:45pendiente y la otra es el interceptor
  1106. 52:47entonces metemos el interceptó e igual
  1107. 52:50tenemos que evaluarlo con el valor
  1108. 52:55arbitrario que nosotros definimos en
  1109. 52:57este caso menos 10 interceptó
  1110. 53:00ahí está aquí es una comida y permítame
  1111. 53:05pueda ajustar
  1112. 53:07el código ok ahora sí ahí estamos
  1113. 53:12aquí está ahora aquí tenemos el
  1114. 53:14gradiente con respecto a la pendiente
  1115. 53:16pero nos queda con respecto al
  1116. 53:21interceptó en este caso quedamos que le
  1117. 53:24vamos a almacenar en una lista entonces
  1118. 53:28yo defino ahí mi lista y ahora utilizo
  1119. 53:32la derivada del error la derivada
  1120. 53:34parcial de el error con respecto al
  1121. 53:37interceptó lo evalúo con el valor
  1122. 53:41completamente arbitrario que yo definí
  1123. 53:44aquí está
  1124. 53:48pongo la pendiente de ahí pongo el valor
  1125. 53:52de interceptó esta y ahora si cierro mi
  1126. 53:58lista del gradiente aquí está ya tengo
  1127. 54:02los gradientes en estos ambientes me van
  1128. 54:05a decir en qué dirección y con qué
  1129. 54:07magnitud debo yo de avanzar ahora qué es
  1130. 54:12lo que queda actualizar los valores de
  1131. 54:15mis parámetros poco a poco poco a poco
  1132. 54:18paso a paso mis parámetros son
  1133. 54:21simplemente la pendiente
  1134. 54:24la cual se actualiza con el valor que
  1135. 54:28tiene hasta ese punto pero en función
  1136. 54:31del gradiente que justo nosotros
  1137. 54:33acabamos de calcular y quedamos que
  1138. 54:35debemos determinar qué tan grande o qué
  1139. 54:38tan pequeño debemos dar ese paso y eso
  1140. 54:41nosotros lo hacemos a través de la tasa
  1141. 54:44de aprendizaje entonces agarramos la
  1142. 54:48tasa de aprendizaje
  1143. 54:49luego multiplicamos
  1144. 54:52el gradiente correspondiente que en este
  1145. 54:54caso es el que se encuentra en la
  1146. 54:56posición ser el gradiente
  1147. 54:58correspondiente a la pendiente y aquí
  1148. 55:02está lo podemos hacer y con eso ya
  1149. 55:04actualizamos el valor de la pendiente de
  1150. 55:07hecho lo vamos a poner aquí abajito aquí
  1151. 55:09está y tengo un error de dedo aquí
  1152. 55:11pendiente listo ejecutamos y ahora si
  1153. 55:15interceptó está repetimos exactamente la
  1154. 55:21misma fórmula es el valor anterior
  1155. 55:26- la tasa de aprendizaje por el
  1156. 55:30gradiente correspondiente que se
  1157. 55:31encuentra en la posición 1 que es justo
  1158. 55:35este el correspondiente al interceptó
  1159. 55:39ahora sí ya tenemos nuevos valores para
  1160. 55:43la pendiente y para el interfecto aquí
  1161. 55:46yo ya calculé cómo se afectaron mis
  1162. 55:49parámetros una vez que di un paso ya sea
  1163. 55:52la derecha a la izquierda hacia adelante
  1164. 55:53o hacia atrás ahora sé dónde estoy
  1165. 55:56parado y como ya sé dónde estoy parado
  1166. 55:59que queda simplemente repetir volver a
  1167. 56:03calcular los gradientes y actualizar
  1168. 56:07repetir volver a calcular los gradientes
  1169. 56:09y actualizar los parámetros ahora
  1170. 56:14esto ya es el algoritmo del gradiente
  1171. 56:17descendiente es relativamente sencillo
  1172. 56:20una vez que sabemos qué es lo que
  1173. 56:22estamos haciendo
  1174. 56:23lo siguiente que voy a hacer es
  1175. 56:25simplemente almacenar el error que voy
  1176. 56:29obteniendo cada vez que doy un solo paso
  1177. 56:33entonces para eso voy a utilizar el
  1178. 56:35arreglo de nun para que justo definida
  1179. 56:37ahí arriba
  1180. 56:38se llama errores y lo vamos a almacenar
  1181. 56:42para el paso y obviamente necesitamos
  1182. 56:45guardar el valor de la pendiente y del
  1183. 56:49interceptó para poderlo asociar al error
  1184. 56:51de ambos
  1185. 56:53entonces guardamos aquí la pendiente y
  1186. 56:58ahora
  1187. 56:59guardamos
  1188. 57:02el interceptó
  1189. 57:05y posteriormente aquí es uno y
  1190. 57:08posteriormente
  1191. 57:09lo que hacemos es agarrar la función del
  1192. 57:14error que está definida aquí arriba y
  1193. 57:17que ya quedamos que es la suma de los
  1194. 57:19residuos al cuadrado
  1195. 57:22pues con esta función simplemente le
  1196. 57:25paso la pendiente y le pasó el
  1197. 57:27interceptó y ahora sí ya voy a tener yo
  1198. 57:31el error correspondiente en ese paso y
  1199. 57:36cada vez que hago una instalación voy a
  1200. 57:38guardar el error y cada vez que haga una
  1201. 57:41iteración voy a guardar el error y así
  1202. 57:42sucesivamente hasta que haya terminado
  1203. 57:45con el número de generaciones y ya con
  1204. 57:50eso terminamos permítanme ejecutar este
  1205. 57:53código y para eso yo aquí tengo código
  1206. 57:56complementario aquí está que simplemente
  1207. 57:59nos va a imprimir los valores finales de
  1208. 58:03los gradientes tanto para la pendiente
  1209. 58:05como para el interceptó y nos va a
  1210. 58:08imprimir el valor de la pendiente y el
  1211. 58:10valor del interceptó este ya es el
  1212. 58:13calculado con el método del gradiente
  1213. 58:16descendiente y para que podamos tener
  1214. 58:20una referencia de qué tan bueno o qué
  1215. 58:22tan malo fue nuestro algoritmo yo aquí
  1216. 58:25tengo los valores de la pendiente y del
  1217. 58:28interceptó que fueron calculados con el
  1218. 58:31método de mínimos cuadrados que viene
  1219. 58:33implementado dentro de esa killer
  1220. 58:35entonces ya tenemos una muy buena
  1221. 58:37referencia de qué valores efectivamente
  1222. 58:39debería de dar ahora antes de ejecutar
  1223. 58:42permítanme revisar rápidamente el código
  1224. 58:45para ver si no tengo un error si aquí
  1225. 58:48tenemos un arbolito
  1226. 58:49tenemos que regarla ine
  1227. 58:54parece que todo ya está perfecto
  1228. 58:56entonces si ejecutamos y no tiene aquí
  1229. 59:00está tardando un poquito es porque está
  1230. 59:03dando cada uno de los pasos que nosotros
  1231. 59:06le dijimos que diera en este caso
  1232. 59:09nosotros le dijimos que diera 10.000
  1233. 59:12pasos y está actualizando nuestros
  1234. 59:16valores para la pendiente y para el
  1235. 59:18interceptó ok ya terminó aquí tenemos
  1236. 59:22los resultados vean primero los valores
  1237. 59:26de los gradientes cero y menos
  1238. 59:300.002 para el caso del interceptó noten
  1239. 59:35están muy
  1240. 59:36cercanos a cero qué implica eso que las
  1241. 59:41pendientes están prácticamente planas y
  1242. 59:44qué pasa cuando están prácticamente
  1243. 59:46planas y estamos cerca o en el mínimo de
  1244. 59:52nuestra función de error eso lo podemos
  1245. 59:55ver aquí muy claramente con ésta
  1246. 1:00:00está pendiente aquí es muy cercana a 0 y
  1247. 1:00:04lo mismo nos va a aplicar para cuando
  1248. 1:00:08tenemos la forma tridimensional
  1249. 1:00:11involucrando los dos parámetros de hecho
  1250. 1:00:15aquí podría ser un poco extraño como lo
  1251. 1:00:18estamos nosotros viendo a lo mejor
  1252. 1:00:21alguien dice hoy en saná es el verdadero
  1253. 1:00:22mínimo pues
  1254. 1:00:24bien lo vemos así ahora sí aquí está se
  1255. 1:00:28ve claramente cómo es este mínimo y aquí
  1256. 1:00:31tendríamos nosotros las pendientes y
  1257. 1:00:34estas pendientes estarían prácticamente
  1258. 1:00:37ajustadas y eso es la representación del
  1259. 1:00:42gradiente tendríamos el gradiente del
  1260. 1:00:45interceptó y el gradiente
  1261. 1:00:47correspondiente a la pendiente
  1262. 1:00:48prácticamente
  1263. 1:00:50acostados lo que nos indica que estamos
  1264. 1:00:53en un mínimo de la función del error y
  1265. 1:00:57por tanto hemos encontrado un valor
  1266. 1:00:59óptimo para los parámetros de nuestro
  1267. 1:01:03modelo
  1268. 1:01:04ahora vamos a ver qué valores nos dio
  1269. 1:01:07para la pendiente y qué valores nos dio
  1270. 1:01:09para el interceptor primero de hecho
  1271. 1:01:11veamos en la pendiente nos dio
  1272. 1:01:142.44 vean 2.44 obviamente hay algunas
  1273. 1:01:20variaciones con respecto a los decimales
  1274. 1:01:23es perfectamente normal estamos dando
  1275. 1:01:25pequeños pasos estamos ajustando poco a
  1276. 1:01:28poco a partir de una posición que fue
  1277. 1:01:31definida aleatoriamente o
  1278. 1:01:33arbitrariamente en este caso ahora
  1279. 1:01:36veamos el valor del interceptó menos
  1280. 1:01:394.37 que es muy similar a menos
  1281. 1:01:434.38 que es el valor que fue calculado
  1282. 1:01:46con el método de mínimos cuadrados y con
  1283. 1:01:50eso ya estamos nosotros
  1284. 1:01:52optimizando nuestro modelo de regresión
  1285. 1:01:55lineal
  1286. 1:01:57ahora un último detalle para aumentar el
  1287. 1:02:00entendimiento de esta técnica
  1288. 1:02:04vamos graficando los errores estos
  1289. 1:02:06errores que nosotros almacenamos aquí
  1290. 1:02:09entonces yo ya aquí tengo el código
  1291. 1:02:12preparado para graficar justo ese error
  1292. 1:02:15simplemente lo vamos a ejecutar y vean
  1293. 1:02:20arrancamos nosotros por acá pero
  1294. 1:02:23nosotros arrancamos aquí y dimos un
  1295. 1:02:25primer paso recuerdan cuando les dije
  1296. 1:02:28que hay un ambiente además de darnos la
  1297. 1:02:32dirección hacia donde tenemos que
  1298. 1:02:34avanzar también nos daban la magnitud de
  1299. 1:02:36aquí que fue nuestro valor inicial de 0
  1300. 1:02:39y menos 10 recuerda pues dimos un brinco
  1301. 1:02:42tote hasta donde hasta acá y como aquí
  1302. 1:02:45ya nos empezamos a acercar al valor
  1303. 1:02:49mínimo ya empezamos a dar pasos más
  1304. 1:02:52pequeños y obviamente aquí estamos más
  1305. 1:02:54cerca empezamos a dar pasos más pequeños
  1306. 1:02:57más pequeños más pequeños más pequeños
  1307. 1:02:59más pequeños hasta que eventualmente
  1308. 1:03:02llega al mínimo de la función del error
  1309. 1:03:06donde el valor de la pendiente y del
  1310. 1:03:09interceptó podrían ser óptimos ok aquí
  1311. 1:03:14debo mencionar estamos nosotros
  1312. 1:03:17optimizando a partir de una función de
  1313. 1:03:19error que es convexa que es el caso de
  1314. 1:03:22los modelos de regresión lineal sin
  1315. 1:03:25embargo no siempre es el caso y tenemos
  1316. 1:03:29nosotros mínimos locales
  1317. 1:03:32mínimos globales sin embargo ese es tema
  1318. 1:03:35de otro vídeo si encontrara un valor en
  1319. 1:03:39este video por favor denle un like y si
  1320. 1:03:42aún no se han suscrito por favor
  1321. 1:03:43consideren hacerlo mi nombre es también
  1322. 1:03:46tierra hasta el próximo vídeo
  1323. 1:03:50para papá para
  1324. 1:03:51[Música]

About this transcript

This page contains the full transcript of Gradiente Descendente Paso a Paso con Python: Un Algoritmo de Optimización para Machine Learning by Codigo Maquina, generated from the public captions YouTube serves with the video. The transcript has 8,454 words across 1,324 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.