KNOW INTUIT, Лекция, Бързо диференциране, дуалност и обратно разпространение на грешки

Изчислителен център на SB RAS в Красноярск

Тази лекция представя материал, чието значение за изчислителната математика и всичко, което на английски се нарича "компютърни науки", далеч надхвърля невроинформатиката. След време той със сигурност ще бъде включен в програмите на университетските курсове по математически анализ.

Нека обсъдим една "очевидна" догма, без унищожаването на която би било невъзможно ефективното обучение на невронни мрежи. Нека изчислителната цена (изчислена чрез времето, прекарано от някакво универсално изчислително устройство) за изчисляване на една стойност на функция от n променливи H(x1. xn) е приблизително равна на T . Колко време отнема на същото устройство да изчисли gradH (с разумно програмиране)? Повечето математици с висше образование ще отговорят:

Това не е вярно! правилен отговор:

където C е константа, независима от размерността n (в повечето случаи C

За всички функции на много променливи, срещани в практиката, необходимите изчислителни разходи за намиране на техния градиент са само два до три пъти по-високи от разходите за изчисляване на единична стойност на функцията. Това е изненадващо - в края на краищата n частични производни служат като координати на градиентния вектор и цената на изчисляването на една такава производна в общия случай е приблизително същата като изчисляването на стойността на функцията. Защо е по-евтино да се изчислят всички заедно, отколкото поотделно?

„Чудото“ се обяснява съвсем просто: необходимо е рационално да се организира изчисляването на производните на сложна функция на много променливи, като се избягва дублирането. За да направите това, е необходимо да представите подробно изчислението на самата функция, за да не се занимавате след това с "черна кутия", която трансформиравектор от аргументи във функционална стойност, но с подробна изчислителна графика.

Удобно е да мислим за търсенето на gradH като за някакъв двоен процес върху структурата на изчислението на H . Междинните резултати, които се появяват при изчисляване на градиента, не са нищо повече от множители на Лагранж. Оказва се, че ако представим H като сложна функция, която е суперпозиция на функции на малък брой променливи (и не можем да изчислим функции на много променливи по друг начин) и внимателно използваме правилото за диференциране на сложна функция, без да правим ненужни изчисления по пътя и запазваме полезни междинни резултати, тогава изчисляването на целия набор е малко по-сложно от една от тези функции - всички те са събрани от едни и същи блокове.

Обучение на невронни мрежи като минимизиране на функцията за грешка

Изграждането на обучение като оптимизация ни дава универсален метод за създаване на невронни мрежи за решаване на проблеми. Ако формулираме изискванията за невронна мрежа като задача за минимизиране на определена функция - оценка, която зависи от част от сигналите (вход, изход, ...) и от параметрите на мрежата, тогава обучението може да се разглежда като оптимизация и да се изградят подходящи алгоритми, софтуер и накрая устройства (хардуер). Функцията за оценка обикновено съвсем просто (явно) зависи от част от сигналите - вход и изход. Неговата зависимост от регулируемите параметри на мрежата може да бъде по-сложна и да включва както явни компоненти (термини, фактори. ), така и неявни - чрез сигнали (сигналите, очевидно, зависят от параметрите, а функцията за оценка - от сигналите).

Извън проблемите, при които невронните мрежи се формират по изрични правила (мрежи на Хопфилд, проективни мрежи, минимизиране на аналитично зададени функции и т.н.), ние не знаем случаи, когато изискванията за невронни мрежимрежите не могат да бъдат представени под формата на минимизиране на функцията за оценка. Не бива да се бърка подобна постановка на проблема с неговия много частен случай - "обучение с учител". Вече методът на динамичните ядра, описан в „Решаване на проблеми чрез невронни мрежи“, показва как неконтролираното учене при проблеми с класификацията може да се опише като минимизиране на целевата функция, която оценява качеството на разделянето на класове.

Ако не е възможно изрично да се формира мрежа за решаване на проблема, тогава учебният проблем може като правило да се формулира като задача за минимизиране на оценката. Предпазливостта на предишната фраза („като правило“) се дължи на факта, че всъщност не знаем и никога няма да знаем всички възможни задачи за невронни мрежи и може би някъде в неизвестното има задачи, които са несводими до минимизиране на оценката.

Минимизирането на оценката е сложен проблем: има астрономически много параметри (от 100 до 1000 000 за стандартни примери, реализирани на компютър), адаптивният релеф (графиката на оценката като функция на регулируеми параметри) е сложен, може да съдържа много локални минимуми, криволичещи дерета и т.н.

И накрая, дори за да се използват най-простите методи за плавна оптимизация, е необходимо да се изчисли градиентът на функцията за оценка. Тук се сблъскваме с една „очевидна“ догма, без унищожаването на която би било невъзможно ефективното обучение на невронни мрежи.

Графика за изчисляване на сложна функция

Сложна функция се дава чрез суперпозиция на някакъв набор от "прости". Простите функции принадлежат на първоначално определеното крайно множество F . Формално те се отличават само по принадлежност към множеството F - в общия случай не се предполагат други задължителни разлики на тези функции от всички останали.

В този раздел ще научим как да настройвамесложни функции, тоест формули и съответните им графики. Свойствата на самите функции сега не ни интересуват (ще разглеждаме бележки, а не да слушаме музика).

Теорията на изразите, които дефинират сложни функции, е най-простият клон на математическата логика, в който самите изрази се наричат ​​термини [3.4].

Термините са добре оформени изрази на някакъв формален език. За да зададете такъв език, трябва да дефинирате неговатаазбука. Състои се от три набора от знаци:

  1. C е набор от символи, обозначаващи константи;
  2. V е набор от символи, обозначаващи променливи;
  3. F е набор от функционални символи, , където е набор от символи за обозначаване на функции на k променливи.

Въвеждайки различни набори от символи, ние постоянно се позоваваме на технитетълкувания(". символи, обозначаващи. "). Строго погледнато, това не е необходимо - възможно е (и от чисто формална гледна точка - и трябва) да опишем всички правила на действие със символи, без да прибягваме до тяхното тълкуване, но използването му ни позволява да съкратим представянето на формалните правила, като се позоваваме на съществуващия смислен опит.

Термините са дефинирани индуктивно:

  1. всеки знак от е термин;
  2. ако са термини и , тогава е член.

Наборът от термини T е обединение:

Където ,

Удобно е да се раздели T на непресичащи се множества - слоеве. Елементите ще се наричат ​​термини на дълбочина i или термини на i-слой. Наборът включва изрази, обозначаващи онези функции от условията на предишните слоеве, които сами по себе си не принадлежат към тях. .

Две теореми са много полезни за работа с термини[3.4].