Algorismes d'optimització: descens del gradient, Newton i variables enteres
Vols practicar? Aquest tema té 134 exercicis interactius de 3 tipus, de deu en deu, amb correcció immediata i explicació pas a pas.
Un cop tens el problema ben plantejat, cal resoldre'l. Aquesta pàgina recull els algorismes bàsics i, sobretot, els criteris per triar el pas, per saber quan aturar-se i per no confondre «he trobat una solució» amb «he demostrat que és òptima».
Formular abans de resoldre
Un model especifica variables, domini, objectiu i restriccions. Les variables poden ser contínues, enteres o binàries, i sovint convé afegir-ne d'auxiliars per expressar coses que no són lineals de manera natural.
L'exemple canònic és el valor absolut. Minimitzar no és lineal, però es converteix en lineal introduint una variable i minimitzant-la amb les dues restriccions
A l'òptim, pren exactament el valor absolut, perquè la minimització l'empeny cap avall fins que una de les dues restriccions es satura. El mateix truc serveix per a màxims i per a normes.
La constant gran s'ha de triar amb criteri
Per imposar que una variable s'anul·li quan una decisió binària val zero, s'escriu amb binària i no negativa.
El valor de ha de ser una cota vàlida per a i tan ajustada com sigui possible. Si és massa petita, elimines solucions vàlides i el resultat és senzillament incorrecte. Si és excessiva, la relaxació contínua es fa molt fluixa, l'arbre de cerca s'infla i el problema numèric empitjora.
Posar-hi un número enorme «per si de cas» és un dels errors més comuns i més cars en modelització entera.
Descens del gradient
La iteració és moure's en la direcció oposada al gradient:
La pregunta important és quant avançar. Si el gradient és Lipschitz amb constant , es compleix la desigualtat de descens
i substituint-hi el pas del gradient surt que el valor disminueix sempre que el pas estigui entre i . Això explica per què hi ha un límit superior al pas: passat aquest llindar, el terme quadràtic domina i l'algorisme divergeix.
En problemes convexos suaus, passos adequats donen convergència del valor objectiu; amb convexitat forta, la convergència és geomètrica.
A la pràctica no se sol conèixer , i es fa servir una cerca enrere d'Armijo: es prova un pas, i mentre no es compleixi
amb una constant petita, es redueix el pas. La condició demana una fracció de la millora que prediu la linealització, i evita haver de fixar un pas sense mirar l'escala local del problema.
Per què el pas té un límit superior
Minimitza una paràbola simple i mira què passa segons el pas.
Amb la funció , el gradient val i la iteració és .
- Amb : la raó val i el mètode convergeix, encara que a poc a poc.
- Amb : la raó val zero i s'arriba al mínim en un pas.
- Amb : la raó val , i el mètode convergeix oscil·lant al voltant del mínim.
- Amb : la raó val , de mòdul més gran que , i el mètode divergeix.
La frontera és exactament , que és amb . És la condició general escrita en un cas on es pot veure a ull.
La lectura pràctica. Un pas massa petit fa perdre temps; un pas massa gran fa divergir. Per aixo gairebé mai no es fixa un pas constant: es fa una cerca enrere que el va ajustant a l'escala local.
Newton
Newton fa servir la curvatura: resol el sistema
i actualitza amb aquesta direcció, normalment amb una cerca de pas. A prop d'un mínim amb hessiana definida positiva i regularitat suficient, la convergència és quadràtica: el nombre de xifres correctes es duplica a cada iteració.
Lluny de l'òptim, però, la hessiana pot ser indefinida i la direcció resultant pot no ser ni de descens. Per això a la pràctica s'usen variants amb amortiment, regularització de la hessiana o regions de confiança, que limiten la mida del pas al radi on el model quadràtic és fiable.
Resoldre un sistema, no calcular una inversa
El pas de Newton es calcula resolent el sistema lineal, no invertint la hessiana. És més barat, és més precís i és el que farà qualsevol biblioteca decent. Si el teu codi escriu una inversa, gairebé segur que el que volies era resoldre.
Per a un conjunt convex tancat, el gradient projectat fa el pas habitual i després projecta el resultat sobre el conjunt. La condició d'optimalitat deixa de ser «gradient nul» i passa a ser que el gradient formi angle no agut amb qualsevol direcció admissible:
En un òptim de frontera, el gradient no s'anul·la, i esperar que ho faci és un error conceptual freqüent.
Variables enteres
Amb integritat, la relaxació contínua (deixar que les variables prenguin valors reals) dona una cota en el sentit favorable: cota inferior per a un problema de minimització. I qualsevol solució entera factible que trobis dona una cota en l'altre sentit.
La ramificació i acotació explota aquesta parella: divideix el domini (per exemple imposant que una variable sigui com a molt un cert enter, o com a mínim el següent), resol la relaxació de cada branca, i poda les branques la cota de les quals ja no pot millorar la millor solució coneguda.
El certificat és el gap, no la solució
Trobar una bona solució entera és la meitat de la feina. El que demostra optimalitat és la diferència entre les dues cotes: quan la millor solució factible i la millor cota de la relaxació coincideixen, tens un certificat.
Per això els programes d'optimització entera informen del gap: una solució amb gap del és òptima demostrada; una amb gap del és una bona solució sense garantia.
Ordres de convergència comparats
Minimitza una funció d'una variable amb mínim en un punt, i mira quantes xifres correctes guanyes per iteració.
Gradient amb pas fix: les xifres correctes creixen linealment amb les iteracions, i la taxa depèn del condicionament. Amb un problema mal condicionat, pot caler milers d'iteracions.
Newton: a prop de l'òptim, les xifres es dupliquen cada iteració. Passar de a a a xifres són quatre iteracions.
El preu. Cada iteració de Newton costa resoldre un sistema (ordre en dens) i calcular la hessiana; cada iteració del gradient només costa avaluar el gradient (ordre o poc més). Per a problemes amb milions de variables, el gradient i les seves variants guanyen encara que necessitin moltes més iteracions.
El compromís del mig: els mètodes quasi-Newton, que aproximen la hessiana a partir dels gradients ja calculats i obtenen convergència superlineal amb cost per iteració molt menor.
Criteris d'aturada
Aturar-se quan «els valors gairebé no canvien» és insuficient: un canvi petit pot indicar convergència, però també estancament per mal condicionament o per un pas massa curt. Cal comprovar:
- Factibilitat de les restriccions, amb tolerància.
- Estacionarietat o residu de les condicions KKT.
- Gap primal i dual, si està disponible.
I les toleràncies han de combinar escales absolutes i relatives, perquè un residu de vol dir coses molt diferents segons la magnitud de les dades. El resultat final hauria de dir de quina de les tres coses es tracta: òptim certificat, punt estacionari, o simplement la millor solució trobada.
Exercici resolt: rang de passos que convergeix
Per a , quins passos constants fan convergir el descens del gradient des de qualsevol punt inicial?
La iteració. El gradient és , de manera que
La condició. És una progressió geomètrica de raó , que tendeix a zero si i només si el mòdul de la raó és menor que :
Comprovació amb la teoria. La constant de Lipschitz del gradient és , i la condició general era . Coincideix exactament.
El cas òptim. Amb la raó val zero i s'arriba al mínim en un sol pas. Això no és casualitat: aquest pas és precisament l'invers de la segona derivada, és a dir el pas de Newton. Per a una funció quadràtica, Newton hi arriba sempre en una iteració.
Exercici resolt: cota de la relaxació
Un problema de minimització enter té relaxació contínua amb valor òptim , i s'ha trobat una solució entera factible de valor . Què es pot afirmar?
La cota inferior. Com que tota solució entera també és factible per a la relaxació, l'òptim enter no pot ser menor que . I com que és enter, ha de ser com a mínim .
La cota superior. La solució trobada dona .
Conclusió. L'òptim enter és o , amb un gap d'una unitat. Encara no està demostrat que sigui òptim: caldria o bé trobar una solució de valor , o bé millorar la cota inferior per sobre de (per exemple ramificant i comprovant que cap branca no baixa d'aquest valor).
Per què importa. Moltes vegades, la solució òptima es troba molt aviat i la major part del temps de càlcul es dedica a demostrar que ho és. Si per a la teva aplicació un gap del és acceptable, aturar-se abans estalvia moltíssim temps: però llavors has de dir que és una bona solució, no que és l'òptima.
Ara prova-ho tu. 134 exercicis d'aquest tema, de 3 tipus diferents, per resoldre en línia, de deu en deu: escrius la resposta, te la corregeix a l'instant i, si falles, t'explica com es fa pas a pas. Quan acabis una tanda, en tens deu més, amb dades noves.
Fer els exercicisSimulacre d'examen