Огляд
Можливо, ви захочете спробувати варіант методу помножувальних напрямків множників (ADMM), який виявив дивовижну швидку конвергенцію при проблемах типу lasso. Стратегія полягає у формулюванні задачі з розширеним лагранжаном, а потім зробіть градієнтне сходження на подвійну задачу. Особливо приємно для цієї конкретної регуляризації, оскільки в негладкій частині кожної ітерації методу є точне рішення, яке ви можете просто оцінити елемент за елементом, тоді як гладка частина передбачає вирішення лінійної системи.l 1л1л1
У цій посаді ми
- отримати загальну формулювання ADMM для узагальнення вашої проблеми,
- вивести підпрограми для кожної ітерації ADMM та спеціалізувати їх на своїй ситуації, а потім
- досліджувати отриману лінійну систему , яка повинна бути вирішена кожної ітерації, і розробити швидкий вирішувач (або предобуславліватель) на основі попереднього обчислення власного значення розкладання (або низький ранг наближення цього) для і .У Й ТМТМYYТ
- підсумуйте за допомогою декількох заключних зауважень
Більшість великих ідей тут висвітлено в наступному чудовому оглядовому документі,
Бойд, Стівен та ін. "Розподілена оптимізація та статистичне навчання за допомогою методу змінних напрямків множників". Основи та тенденції в машинному навчанні 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf
Перш ніж розібратися в деталях, хочу зазначити, що це метод / алгоритм відповіді, а не практична відповідь на код - якщо ви хочете скористатися цим методом, вам знадобиться прокрутити власну реалізацію.
Формулювання ADMM
Загалом, припустимо, ви хочете вирішити
хвхвул∑i| хi|A x = b.
Проблема в оригінальному дописі потрапляє в цю категорію після відповідної векторизації. (це лише в принципі - ми побачимо, що векторизацію не потрібно виконувати на практиці)
Ви можете замість цього вирішити еквівалентну проблему,
який має лагранжець
L(x,z,λ,γ)=
хвx , zвул&∑i| хi| + α2| | x-z| |2+ β2| | Аz- б | |2А z= bx = z,
L ( x , z, λ , γ) ==∑i| хi| + α2| | x-z| |2+ β2| | Аz- б | |2+ λТ( A z- б ) + γТ( x - z)∑i| хi| + α2| | x-z+ 1αγ| |2+ β2| | Аz−b+1βλ||2+α2||1αγ||2+β2||1βλ||2.
Метод змінного напряму множників вирішує подвійну задачу
за допомогою градієнтного сходження на подвійні змінні, крім неточні чергування проекцій на подвійні підпрограми. Тобто, ітерація
x k + 1
maxλ,γminx,zL(x,z,λ,γ),
xk+1zk+1γk+1λk+1=argminxL(x,zk,λk,γk)=argminzL(xk+1,z,λk,γk)=γk+α(xk+1−zk+1)=λk+β(Azk+1−b).
За певних м'яких умов параметрів та (пояснено в зв'язаній вище роботі Boyd & Parikh) метод ADMM сходиться до справжнього рішення. Швидкість конвергенції лінійна, оскільки в основі лежить метод градієнтного сходження. Часто його можна прискорити, щоб бути суперлінійним шляхом 1) зміни параметрів та коли ви переходите на основі евристики, або 2) з використанням прискорення Нестерова. Примітки щодо зміни параметрів штрафу див. У дослідницькому документі Бойда, а про використання прискорення Нестерова з ADMM див. Наступний документ,β α βαβαβ
Гольдштейн, Том, Брендан О'Доног'ю та Саймон Сетцер. "Швидкі методи чергування напрямів оптимізації." Звіт про CAM (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf
Однак, навіть якщо загальний коефіцієнт конвергенції є лише лінійним, для проблем спостерігається метод, щоб знайти швидкість розрідженості дуже швидко, а потім повільніше сходитися на точні значення. Оскільки пошук шаблону розрідження є найважчою частиною, це дуже вдало! Точні причини, чому, здається, є сферою сучасних досліджень. Усі бачать, як шаблони розрідження швидко сходяться, але, здається, ніхто точно не знає, чому це відбувається. Деякий час тому я запитав Бойда і Париха про це через електронну пошту, і Паріх подумав, що це можна пояснити інтерпретацією методу в контексті систем управління. Інше евристичне пояснення цього явища знаходиться в додатку до наступної статті,l1
Голдштейн, Том і Стенлі Ошер. "Метод розщеплення Брегмана для задач, регульованих L1." Журнал SIAM про візуалізацію 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf
Звичайно, зараз складність полягає у вирішенні підпроблем оновлення та для вашої конкретної ситуації. Оскільки лагранжан є квадратичним в , підпрограма оновлення вимагає просто розв'язання лінійної системи. подзадача здається складніше , так як це недіфференціруемого, але виявляється, що є точна формула для вирішення , які можуть бути застосовані поелементно! Зараз ми обговоримо ці підпрограми більш детально та уточнимо їх до проблеми в початковому дописі.z z z xxzzzx
Налаштування підпрограми оновлення (лінійна система)z
Для оновлення ми маємо
a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αz
argminzL(xk,z,λk,γk)=argminzα2||x−z+1αγ||2+β2||Az−b+1βλ||2.
Це спеціалізується на вашій проблемі:
argminZJ,ZBα2||Jk+1−ZJ+1αΓJ||2Fro+α2||Bk+1−ZB+1αΓB||2Fro+β2||MZJ+ZBY−X+1αΛ||2Fro,
де позначає норму Frobenius (елементарно ). Це квадратична проблема мінімізації, де умови оптимальності першого порядку можна знайти, взявши часткові похідні цілі відносно та та встановивши їх на нуль. Це,
l 2 Z J Z B 0||⋅||Frol2ZJZB
00= - α2( Jk + 1- ZJ+ 1αΓJ) + β2МТ( МZJ+ ZБY- X+ 1βΛ ) ,= - α2( Вk + 1- ZБ+ 1αΓБ) + β2( МZJ+ ZБY- X+ 1βΛ ) YТ.
Як зазначається в коментарях оригінального плаката Джастіна Соломона, ця система для є симетричною, тому спряжений градієнт є ідеальним методом без матриць. У подальшому розділі розглядається ця система та як її вирішити / передумовити більш детально.ZJ, ZБ
Розв’язання підпрограми update (аналітичне порогове рішення)х
Тепер ми переходимо до підзадачі,
a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x ∑ i | х i | + αх
a r g m i nхL ( x , zк, λк, γк) = a r g m i nх∑i| хi| + α2| | x- zк+ 1αγк| |2
Перше, що слід помітити, це те, що суму можна розбити елементом на елемент
∑i| хi| + α2| | x- zк+ 1αγк| |2= ∑i| хi| + α2∑i( хi- zкi+ 1αγкi)2,
Таким чином, ми можемо вирішити елемент задачі оптимізації по елементам паралельно, отримуючи
хk + 1i= a r g m i nхi| хi| + α2( хi- zкi+ 1αγкi)2.
Загальна форма цього рівняння -
хвс| s | + α2( с - т )2.
Функція абсолютного значення намагається витягнути оптимальну точку до , тоді як квадратичний член намагається тягнути оптимальну точку до . справжнє рішення, отже, лежить десь на відрізку між двома, при збільшенні прагне витягнути оптимальну точку до , а зменшення тягне оптимальну точку до .s = t [ 0 , t ) α t α 0s = 0s = t[ 0 , т )αтα0
Це опукла функція, але вона не диференційована при нулі. Умовою точки зведення до мінімуму є те, що субпродукція цілі в цій точці містить нуль. Квадратний член має похідну , а функція абсолютного значення має похідну для , задане значення субдеривату як інтервал коли , і похідне для . Таким чином, ми отримуємо субдериватив загальної цільової функції,
- 1 s < 0 [ - 1 , 1 ] s = 0 1 s > 0 ∂ s ( | s | + αα ( s - t )- 1s < 0[−1,1]s=01s>0
∂с( | s | + α2( с - т )2) = ⎧⎩⎨1 + α ( s - t )[ - 1 , 1 ] + α t ,- 1 + α ( s - t ) ,s > 0s = 0 ,s < 0.
З цього ми бачимо, що субдериват цілі при містить якщо і тільки тоді , у цьому випадку є мінімізатором. З іншого боку, якщо не є мінімізатором, то ми можемо встановити однозначну похідну, рівну нулю, і вирішити для мінімізатора. Виконуючи це,
0 | т | ≤ 1s = 00 s=0s=0argmins| s| +α| т | ≤ 1αs = 0s = 0
a r g m i nс| s | + α2( с - т )2=⎧⎩⎨⎪⎪t−1α,0,t+1α,t>1α,|t|≤1α,t<−1α
Знову спеціалізуючи цей результат на справжню проблему, яку ми намагаємося вирішити в оригінальному питанні, де виходить,
Оновлення для просто
J k + 1 i j ={ Z k i j - 1t=Zkij−1αΓkij
Jk+1ij=⎧⎩⎨⎪⎪⎪⎪Zkij−1αΓkij−1α,0,Zkij−1αΓkij+1α,Zkij−1αΓkij>1α,|Zkij−1αΓkij|≤1α,Zkij−1αΓkij<−1α.
BBk+1=ZB−1αΓB,
як зазначив оригінальний плакат Джастін Соломон у коментарях. Загалом, роблячи оновлення для просто вимагає проглядати записи ваших матриць та оцінювати вищезазначені формули для кожного запису.J,B
Щур доповнення до системиZJ,ZB
Найдорожчим кроком ітерації є розв’язання системи,
00=−α2(Jk+1−ZJ+1αΓJ)+β2MT(MZJ+ZBY−X+1βΛ),=−α2(Bk+1−ZB+1αΓB)+β2(MZJ+ZBY−X+1βΛ)YT.
З цією метою варто докласти певних зусиль, щоб створити для цієї системи хороший вирішувач / попередній кондиціонер. У цьому розділі ми робимо це за допомогою векторизації , формуючи доповнення Щура , робимо кілька маніпуляцій з продуктом Krnoecker і потім невекторизуючи. Отримана система доповнення Шура є дещо модифікованим рівнянням Сильвестра .
Далі викладено наступні відомості щодо векторизації та продуктів Kronecker:
- vec(ABC)=(CT⊗A)vec(B),
- (A⊗B)(C⊗D)=AC⊗BD ,
- (A⊗B)−1=A−1⊗B−1 , і
- ( A ⊗ B)Т=AТ⊗BТ .
Ці тотожності дотримуються, коли розміри матриць і оберненість такі, що кожна сторона рівняння є дійсним виразом.
Векторизована форма системи -
( αя+ β[Я⊗ МТМY⊗ М( Y⊗ М)ТYYТ⊗ Я] ) [ v e c ( ZJ)v e c ( ZБ)]= [ v e c ( α J+ βМТХ+ ΓJ- МТΛ )v e c (αB+ βХYТ+ ΓБ- Λ YТ)] ,
або,
[ Я⊗ ( α I+ βМТМ)βY⊗ Мβ( Y⊗ М)Т( α я+ βYYТ) ⊗ Я] [ v e c ( ZJ)v e c ( ZБ)] = [ v e c ( F)v e c (G)] ,
де і - конденсовані позначення для правої частини. Тепер ми виконуємо блоко-гауссова елімінація / доповнення Шура для усунення нижнього лівого блоку матриці в процесі конденсації продуктів Kronecker. Це,
ЖГ
[ Я⊗ ( α I+ βМТМ)0β( Y⊗ М)Т( α я+ βYYТ) ⊗ Я- β2YYТ⊗ М( α я+ βМТМ)- 1МТ] …⋅ [ v e c ( ZJ)v e c ( ZБ)] = [ v e c (F)v e c (G)-βY⊗M( αI+ βМТМ)- 1v e c (F)] .
Розкриваючи два рівняння, які ми повинні вирішити послідовно, це:
ZБ( αI+βYYТ) - (βМ( αI+ βМТМ)- 1МТ) ZБ(βYYТ) …= G - βМ( α я+ βМТМ)- 1ЖYТ
( α я+ βМТМ) ZJ= F- βМТZБY.
Рішення системи комплементу Шура, коли - квадратні, високого рангуY, М
У цьому розділі ми вирішуємо систему доповнення Шура для (рівняння 1. вище), використовуючи попередньо обчислені повні SVD матриць і застосовуючи модифіковану версію алгоритму Бартелса-Стюарта для Сільвестра рівняння. Алгоритм трохи змінений зі стандартної версії для врахування додаткового на другому члені, що робить його не зовсім рівнянням Сильвестра. Після через перше рівняння, можна легко знайти з другого рівняння. Друге рівняння тривіальне для вирішення будь-яким способом, який вам подобається.ZБYYТ, ММТ, МТМβYYТZБZJ
Цей метод вимагає попередньої вартості для попереднього обчислення двох повних SVD до запуску процесу ADMM, але потім швидко застосовуватись у фактичних ітераціях ADMM. Оскільки метод стосується повних SVD матриць обмеження, він доцільний, коли вони близькі до квадратного та високого рангу. Також можливий більш складний метод з використанням СВД низького рангу, але представлений у наступному розділі.
Метод розвивається наступним чином. Нехай
позначає попередньо обчислене повне сингулярне значення розкладання, і конденсується права сторона , щоб бути . Тоді першим рівнянням стає
Множення ортогональними чинниками, щоб очистити ліворуч і праворуч і встановивши нову тимчасову невідому , це далі стає
Q D QТ= YYТ,WΣ WТ= ММТ,VТVТ= МТМ
НZБQ ( α I+ Г ) QТ- ШβΣ ( α I+ Σ )- 1Σ WТZБQ D QТ= Н.
A = WТZБQA ( α I+ D ) - βΣ ( α I+ Σ )- 1Σ A D =WНQТ.
Тепер ми можемо знайти , вирішивши діагональну систему,
А
( ( α I)+ Г ) ⊗ І+ D ⊗ βΣ ( α I+ Σ )- 1Σ ) v e c ( A ) = v e c ( WНQТ) .
Знайшовши , ми обчислимо , і знаючи ми вирішимо друге рівняння вище для , яке є тривіальним, оскільки у нас вже є власне значення розкладу для .АZБ= WA QТZБZJМТМ
Попередня вартість - це обчислення двох симетричних позитивних визначених власних значень декомпозицій і , і тоді ціна на ітерацію для повного вирішення переважає жменькою множин матриці-матриці, що знаходиться в тому самому порядку величина як 1 CG сублітерація. Якщо попередні розробки власних значень є надто дорогими, то їх можна обчислити недостовірно, наприклад, припинивши ітерацію Ланцоса на початку та утримуючи найбільші власні вектори. Тоді метод може бути використаний як хороший попередній засіб для CG, а не прямий вирішувач.МТМYYТ
Метод рішення, коли дуже прямокутні або мають наближення низького рангуМ, Y
Тепер ми звертаємо свою увагу на розв’язання або попереднє коли або а) вхідні матриці дуже прямокутні - це означає, що вони мають набагато більше рядків, ніж стовпці, або навпаки - або б) вони мають низький наближення до ранжу. Виведення нижче передбачає широке використання формули Вудбері, доповнення Шура та інші подібні маніпуляції.ZJ, ZБМ, Y
Почнемо з нашої системи доповнення Шура,
( α я+ βYYТ) ⊗ Я- β2YYТ⊗ М( α я+ βМТМ)- 1МТ.
Кілька маніпуляцій перетворюють цю систему в більш симетричну форму,
( α я+ βЯ⊗ ММТ+ βYYТ⊗ Я) v e c ( ZБ) = ( Я⊗ ( я+ βαММТ) ) v e c ( Н) .
Тепер ми вносимо низькі рангові наближення. Нехай
- або зменшені наближення SVD, або наближення низького рангу і ( є заповнювачем і не є б / в). Заміщення їх у нашій системі дає наступну матрицю, зворотну, яку ми хочемо застосувати,
Q D1 / 2QТ2= YWΣ1 / 2VТ= М
YМQ2( α я+ βЯ⊗ ШΣ WТ+ βYYТ⊗ Я)- 1.
Оскільки матриця, яку ми повинні інвертувати, є низьким ранг оновлення ідентичності, логічна стратегія полягає в спробі використовувати формулу Вудбері,
( A + UСUТ)- 1= А- 1- А- 1U( С- 1+ UТА- 1U)- 1UТА- 1.
Однак потрібна певна обережність, оскільки фігури низького рангу і не є ортогональними. Таким чином, щоб застосувати формулу Вудбері, ми збираємо обидва оновлення низького рангу в одне велике оновлення. Вчиніть так і застосовуючи формулу Вудбері,
Я⊗ ШY⊗ Я
( 1αЯ+ β[ Я⊗ ШQ ⊗ я] [ Я⊗ ΣD ⊗ Y] [ Я⊗ ΣТQТ⊗ Я] )- 1= α I- βα2[ Я⊗ ШQ ⊗ я] [ Я⊗ ( Σ- 1+ βαЯ)βαQТ⊗ ШβαQ ⊗ шТ( D- 1+ βαЯ) ⊗ Y]- 1[ Я⊗ ΣТQТ⊗ Я] .
Обернене ядро можна обчислити за зворотною формулою 2x2, зворотною формулою,
[ АБТБС]- 1= [ ( А - В С- 1БТ)- 1- С- 1БТ( А - Б С- 1БТ)- 1- А- 1Б ( С- БТА- 1Б )- 1( С- БТА- 1Б )- 1] .
Цей пост вже досить довгий, тому я пошкодую тривалих деталей обчислення, але кінцевим результатом є те, що підключення необхідних підматриць до обернено зворотних блоків і множення всього через отримання наступної явної форми для загального оберненого,
( α я+ βЯ⊗ ММТ+ βYYТ⊗ Я)- 1= 1αЯ- βα2( т. зв11+ с11+ т12+ с12+ т21+ с21+ т22+ с22) ,
де
т11с11т12с12т21с21т22с22D11D22лгод= αβЯ⊗ Шл- 1WТ= ( Q ⊗ Wл- 1) D11( QТ⊗ л- 1WТ)= - αβQ год- 1QТ⊗ Шл- 1WТ= - ( Q год- 1⊗ Шл- 1) D22( год- 1QТ⊗ ШТ)= t12= - ( Q год- 1⊗ Ш) D22( год- 1QТ⊗ л- 1WТ)= αβQ год- 1QТ⊗ Я= ( Q год- 1⊗ Ш) D22( год- 1QТ⊗ ШТ)= αβ( h ⊗ I- Я⊗ л- 1)- 1= αβ( Я⊗ л - год- 1⊗ Я)- 1= αβΣ- 1+ Я= αβD- 1+ Я.
У цій формі ми можемо застосувати зворотний і знайти термін за терміном через 8 бутербродів множення лівої та правої матриць. Загальна формула застосування суми продуктів Kronecker:
ZБ
( ( А1⊗ Б1) + ( А2⊗ Б2) + … ) V e c ( C) = v e c ( BТ1СА1+ ВТ2СА2+ … ) .
Зауважте, що всі явні звороти, у яких ми закінчились, діагональні, тому "вирішити" нічого.
Лінійний розв'язувальний код
Я реалізував вищевказані два в Matlab. Здається, добре працює. Код розв’язувача тут.zJ, ZБ
https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m
Тестовий скрипт для перевірки роботи розв’язувачів тут. Він також на прикладі показує, як викликати розв'язувальний код.
https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m
Прикінцеві зауваження
Методи типу ADMM добре підходять для подібних проблем, але вам потрібно прокрутити власну реалізацію. Загальна структура методу досить проста, тому реалізація не є надто складною у чомусь подібному MATLAB.
Частина, відсутня в цій публікації, яку потрібно було б вказати для повного визначення методу вашої проблеми, - це вибір параметрів штрафу . На щастя, метод, як правило, досить надійний до тих пір, поки паралелі параметрів не божевільні. У роботі "Бойд і Парих" є розділ про параметри штрафу, як і посилання на них, але я б просто експериментував з параметрами, поки ви не отримаєте розумні показники конвергенції.α , β
Представлені стратегії розв’язування є високоефективними, якщо матриці обмеження є або a) щільними, квадратними та високими рангами, або b) мають гарне наближення низького рангу. Інший корисний вирішувач , який може бути темою майбутньої роботи буде вирішувач оптимізований для наступного випадку - обмеження матриця розріджена і squareish і високого рангу, але існує хороший переобусловліватель для . Це було б у випадку, якщо, наприклад, - це дискретний лаплаціан.ZJ, ZБМα I+ ММТМ