Szybkie przeglądanie nowego artykułu Deepseek na temat Manifold-Constrained Hyper-Connections: - Chcesz zwiększyć rozmiar reszty z 1×C do n×C (n strumieni zamiast 1). Wcześniejsza aktualizacja reszty: x' = x + warstwa(x). Zrób x jako n×C i użyj x' = Ax + B warstwa(Cx) zamiast tego. A, B, C są zależne od x i są małymi macierzami (n×n, n×1, n×1). A wydaje się być najbardziej wpływowe. To są Hyper-Connections (HC). - HC ma ten sam problem co inne schematy modyfikacji reszty - ostatecznie iloczyn wyuczonych macierzy A (wzdłuż ścieżki tożsamości) eksploduje/zanika. - Aby to naprawić, projektują macierze A na polytop Birkhoffa (prościej mówiąc: przekształcają je, po exp, aby elementy były dodatnie, w macierz, której sumy wierszy i kolumn stają się 1 - nazywaną macierzą podwójnie stochastyczną). Ma to ładne właściwości - iloczyny tych typów macierzy nadal mają sumy wierszy i kolumn równe 1 (dzięki zamknięciu), więc rzeczy nie eksplodują (ograniczenie spektralne), a invariantem jest to, że suma wag w strumieniach wynosi 1. Dla n = 1 staje się to standardowym strumieniem reszty, co jest miłe. Ich metoda transformacji jest prosta - na przemian dzielą wiersze i kolumny przez sumy wierszy i kolumn odpowiednio przez 20 iteracji (konwergencja do naszej pożądanej macierzy, gdy iteracje dążą do nieskończoności). Odkrywają, że 20 jest wystarczające zarówno dla przejścia do przodu, jak i do tyłu (w 60 warstwach maksymalny zysk wsteczny wynosi 1.6 w porównaniu do 3000 z zwykłego HC, a 1.6 nie jest bardzo daleko od 1). - Komponowanie tych macierzy (wypukły zbiór wszystkich macierzy permutacyjnych) prowadzi do mieszania informacji w miarę wzrostu indeksu warstwy, co jest ładnym kawałkiem intuicji i jest również bardzo jasno pokazane w ich macierzy kompozytowej dla 60 warstw. Uważam, że ogólnie uzyskujemy ważoną sumę ścieżek reszty (myśląc o gradientach), gdzie logicznie grupowalne ścieżki mają wagi sumujące się do 1. Całkiem zasadnicze podejście IMO, które również czyni zyski (do przodu i do tyłu) bardzo stabilnymi. - Interesującą rzeczą do zauważenia jest to, że w pierwszej połowie warstw jest dużo mieszania przypominającego "pooling" w porównaniu do drugiej połowy warstw. Druga połowa warstw traktuje różne kanały bardziej precyzyjnie/ostro niż pierwsza połowa, co jest dość intuicyjne. - Zmieniają również parametryzację B i C (sigmoid zamiast tanh, aby prawdopodobnie uniknąć zmiany znaków, oraz czynnik 2 przed B, prawdopodobnie aby zachować średni mnożnik reszty, C nie potrzebuje tego, ponieważ wejście jest wstępnie normalizowane). - Fajne optymalizacje systemowe, aby przyspieszyć tę operację - wykonują fuzję rdzeni, ponowne obliczenia w mHC wstecznie, a nawet modyfikują DualPipe (ich implementację równoległości potokowej). - Tylko 6.7% narzutu w treningu, gdy n = 4, strata spada o 0.02, a poprawa w benchmarkach.