Мне кажется довольно странным, что математика обычно преподается людям на исторической основе. Вероятно, александрийский математик 4-го века мог бы преподавать геометрию в современной начальной школе и получать достойные результаты. Венецианский репетитор 18-го века мог довести учебную программу до старшей школы, хотя я допускаю, что им может потребоваться неделя или две, чтобы освежить в памяти наборы и некоторые современные обозначения.

С другой стороны, Дарвина или Хаксли, скорее всего, уволили бы в течение недели, если бы они попытались преподавать биологию в средней школе. Великий Аристотель не смог бы познакомить первоклассника с какой-либо из наук, несмотря на то, что его работы, предшествовавшие современной науке, оставались основополагающими более чем через тысячелетие после его смерти.

В значительной степени математические знания сохраняют свою актуальность с течением времени. Когда это знание плохо сформулировано или становится неактуальным, оно, тем не менее, остается в силе.

Очевидная гипотеза, почему это верно, состоит в том, что математика довольно чиста по сравнению со многими / всеми другими областями.

Это скучно. Я выдвинул вторую, более интересную и гораздо более скандальную гипотезу.

Математические абстракции очень дырявые

Если этот термин вам незнаком, дырявая абстракция - это абстракция, которая пропускает детали, которые предполагается абстрагировать.

Возьмем что-то вроде суммирования сигм (∑), на первый взгляд это выглядит как абстракция, но слишком дырявая, чтобы быть хорошей. Почему дырявый? Потому что все концепции, которые он «абстрагирует», необходимо понимать, чтобы использовать сигма-суммирование. Вам необходимо «понимать» операции, операторы, числа, диапазоны, пределы и серии.

В качестве другого примера возьмем интегралы (∫), где аргумент в пользу утечки можно кратко сформулировать. Чтобы овладеть абстракцией, нужно понимать все математические вычисления и все, что лежит в их основе (до 60 лет назад это также было известно как «вся математика»).

Нечеткая абстракция - это скорее правило, чем норма в математике. Единственный популярный контрпример, который приходит на ум, - это интегральные преобразования (вспомните преобразования Лапласа и Фурье). В самом деле, любой математик из аудитории может посмеяться надо мной за то, что я использую слово «абстракция» для того, что они считают сокращенными обозначениями.

Почему? Возможно, потому, что в математике нет такого понятия, как «наблюдение», над которым можно было бы абстрагироваться.

Наука имеет преимущество проводить наблюдения, она видит, что X каким-то образом коррелирует с Y, а затем пытается найти причинно-следственную связь между ними через теорию (которая, по сути, является абстракцией).

Наблюдения Дарвина о зябликах ни в коем случае не были «неправильными». Черт возьми, большая часть того, что Джабир ибн Хайян узнал о мире, вероятно, все еще верна. Неправильны или недостаточны те теоретические основы, которые они использовали для их объяснения.

Алхимия могла достаточно хорошо описать химические свойства и взаимодействия определенного типа материи. Мы заменили ее моделью химии Бхоринга просто потому, что она абстрагирует больше наблюдений, чем алхимию.

Мышление с конкуренцией, половым размножением, ДНК, РНК и мутациями объясняет наблюдения Дарвина. Это не означает, что его первоначальная эволюционная концепция «выживания наиболее приспособленных» была «неправильной». Это просто превращает его в инструмент, который изжил себя.

Итак, математика оказывается «дырявой», потому что в ней нет такого понятия, как «наблюдение». То, что 2 * 3 = 6 не соблюдается, это просто «известно». Либо это?

Утверждение 95233345745213 * 4353614555235239 = 414609280180109235394973160907 так же верно, как и 2 * 3 = 6.

Скажите хорошо образованному древнему греку: «95233345745213 умножить на 4353614555235239 всегда равно 414609280180109235394973160907, это должно быть фундаментально верно в рамках нашей математической системы», и он посмотрит на вас, как на сплошного психа.

Скажите тому же древнему греку: «2 умножить на 3 всегда равно 6, это должно быть фундаментально верно в рамках нашей математической системы», и он может подумать, что вы немного напыщенны, но в целом он кивнет и согласится с вашим довольно банальным утверждением. .

Для современного человека нет большой разницы в том, насколько «очевидно правдивыми» кажутся эти два утверждения, потому что у современного человека есть калькулятор.

Но до появления более современных методов работы с числами такие вычисления были недоступны для большинства, если не для всех. Не было бы «очевидного» способа проверить истинность этого первого утверждения… люди будут короткими 414609280180109235394973160897 пальцами.

Так что на самом деле есть что-то, что выполняет ту же роль, что и наблюдения в математике; то, с чем большинство согласится как с очевидной правдой. Очевидно, есть случаи, когда эта концепция немного нарушается (например, суммирование Рамануджана), но это скорее исключение, чем правило.

Компьютеры в основном позволяют нам поднять планку очевидно истинного по-настоящему высоко. Настолько высоки, что это очевидно неверно »подход грубой силы может использоваться для опровержения изощренных домыслов. Пока мы готовы доверять реализации программного и аппаратного обеспечения, мы можем быстро проверить любой математический инструмент в очень большой конечной области.

Компьютеры также позволяют нам строить функциональную математическую абстракцию. Потому что внезапно мы можем «использовать» эти абстракции, не понимая их. Возможность использовать функцию и понимать, что она делает, - разные вещи в наше время, но это совсем недавнее достижение.

По большей части компьютеры использовались для запуска ненадежных математических абстракций. Дырявый по замыслу, созданный для мира, где нужно было «накапливать» свои знания, чтобы использовать их на основе самых очевидных истин.

Однако я думаю, что неплотные абстракции постепенно появляются на вечеринке, и у них есть большой потенциал. На мой взгляд, лучший образец такой абстракции - нейронная сеть.

Нейронные сети как математические абстракции

Что касается методов уменьшения размерности (DR), автоэнкодер (AE), по сути, один из самых простых в объяснении, реализации и понимании. Несмотря на то, что он довольно сложен по сравнению с большинством других нелинейных методов динамического восстановления.

Я бы объяснил это (возможно, более строго, чем необходимо):

1. Постройте сеть, которая получает данные на входе и должна предсказывать те же данные, что и на выходе.

2. Где-нибудь в этой сети, предпочтительно рядом с выходным слоем, добавьте слой E размера n, где n - количество измерений, до которых вы хотите уменьшить данные.

3. Обучите сеть.

4. Пропустите ваши данные по сети и извлеките выходные данные из слоя E в виде уменьшенного размерного представления указанных данных.

5. Поскольку мы знаем из обучения сети, что значения, сгенерированные E, достаточно хороши для восстановления входных значений, они должны быть хорошим представлением.

Это очень простое объяснение по сравнению с объяснением большинства «классических» нелинейных алгоритмов DR. Что еще более важно, в нем вообще не используется математика. Вернее, здесь используется куча математики, но все это абстрагируется за словом «поезд».

Рассмотрим на мгновение конкретный случай DR. Можно утверждать, что подмножество AE в основном выполняет PCA (1) (2).

Однако в случае большинства «реальных» АЭ они нелинейны. Мы могли видеть, что они делают то же самое, что и PCA ядра, но избавляют нас от необходимости выбирать ядро.

АЕ впечатляют еще и тем, что «хорошо работают». Большинство людей, работающих над серьезной проблемой аварийного восстановления, вероятно, будут использовать какой-либо бренд AE (например, VAE).

Более того, AE довольно универсальны по сравнению с другими нелинейными алгоритмами DR, и таких алгоритмов много. Таким образом, можно стремиться понять, когда и почему применять различные алгоритмы DR, или можно стремиться понять AE. Конечный результат будет аналогичным по эффективности при применении к различным проблемам, но понимание AE намного быстрее, чем понимание нескольких десятков других алгоритмов DR.

Еще лучше, чтобы понять AE, единственная «сложная» часть - это понимание нейронных сетей, но нейронные сети - это очень широкий инструмент, поэтому многие люди могут уже иметь некоторое представление о них.

Чтобы понять нейронные сети, вам понадобятся еще три концепции: автоматическое дифференцирование, используемое для вычисления градиентов, вычисление потерь и оптимизация.

Автоматическая дифференциация сложна в той степени, в которой я предполагаю, что большинство людей, которые в остальном разбираются в кодировании и машинном обучении, не смогут воспроизвести jax Google или автоградиент Pytorch. К счастью для нас, автоматическое дифференцирование очень легко абстрагироваться и объяснять: «Основываясь на функции потерь, вычисленной между реальными значениями и вашими выходными данными (ошибка), мы используем {magic}, чтобы оценить, насколько каждый вес и смещение ответственны за эта ошибка и то, увеличило ли ее влияние или уменьшило ошибку. Более того, мы можем использовать {magic}, чтобы делать это эффективно партиями ».

Такое объяснение не слишком удовлетворительно, но я сомневаюсь, что большинство людей проходят по жизни, приобретая гораздо более глубокое понимание, чем это. У меня нет убедительных доказательств того, что это правда, но эмпирически я замечаю, что новые статьи о новых оптимизаторах и функциях потерь появляются каждый день на / r / MachineLearning. Я не могу вспомнить, когда в последний раз видел бумагу, в которой предлагалось значительно улучшить общие методы автоградации или вообще отказываться от них ради чего-то нового.

Оптимизаторы… не так уж и сложны. Объяснение кому-то чего-то вроде Адама или случайного градиентного спуска довольно интуитивно понятно. Поскольку сама оптимизация применяется к довольно тривиальным 2-мерным функциям, а процесс просто повторяется много раз, нетрудно представить себе, как это работает. Увы, вы, вероятно, сможете составить «просто так» историю, объясняющую, почему оптимизаторы работают аналогично той, что описана выше, посоветуйте людям использовать AdamW, и все будет в порядке.

Функции потерь, безусловно, являются тривиальной концепцией, и если вы будете придерживаться эвристики, лежащей в основе основных функций потерь, и не будете пытаться разложить их на сумасшедшие выводы, я бы поспорил, что любой, вероятно, мог бы написать свои собственные функции потерь так же, как они пишут свои собственные учебные петли.

Действительно сложно спорить, насколько «труднее» понять эти три концепции в той степени, в которой вы можете понять, как проектировать нейронные сети, по сравнению с тем, насколько сложно понять трюк с ядром. Я бы определенно сказал, что они, вероятно, находятся в одном и том же диапазоне сложности и времени.

Однако преимущества нейронных сетей:

а) На самом деле вам не нужно глубоко понимать концепцию автоматической дифференциации и оптимизации, чтобы спроектировать сеть, которая делает примерно то, что вы хотите.

б) Изучив три основных понятия, вы получите основу для понимания всего, что связано с нейронными сетями. Будь то AE, RNN, CNN, остаточные блоки / сети или трансформаторы.

По сути, нейронные сети становятся своего рода математической абстракцией, которая не очень дырявая. Конечно, для того, чтобы понять, как его использовать, необходимо понимание основных концепций, но это довольно минимально. Вы можете обучить программиста с базовыми знаниями алгебры использовать Keras за несколько дней. Чего нельзя сказать об использовании четырехмерной геометрии или сложного исчисления.

А нейтральная сетевая абстракция дает нам язык более высокого уровня для обсуждения алгоритмов машинного обучения. Как и в случае с AE, некоторые из полученных алгоритмов, возможно, не так уж далеки от «классического» мира машинного обучения, но вместо интеллектуальных чудовищ конструкции на основе нейронных сетей концептуально просты, вся сложность заключается в нахождении веса и предубеждения, скрытые за абстракцией.

Например, я слышал, как утверждается, что типичная трансформаторная сеть (подумайте о BERT) в основном похожа по структуре на классический конвейер обработки NLP »(3)».

Около трех лет назад было очень популярно утверждать, что слои CNN можно рассматривать как детекторы признаков, которые следуют от простой до сложной иерархии, чем ближе вы подходите к выходному слою (например, первый слой обрабатывает края, второй слой обрабатывает простые геометрические формы… 12-й слой обрабатывает черты лица, характерные для кефали и чаек).

Однако тот факт, что они иногда напоминают эти алгоритмы, является скорее вишенкой на вершине, чем сутью дела. По сути, важно, чтобы модели, созданные с помощью этой абстракции, работали, и последние пять лет ответили на этот вопрос твердым «да».

Так почему это важно?

Что ж, это важно, потому что неплотные математические абстракции встречаются довольно редко. Особенно те, которые имеют такую ​​низкую точку входа и так широко используются. Я бы пока не стал сравнивать нейронные сети с интегральными преобразованиями, но я думаю, что мы приближаемся к этому.

Я бы также сказал, что это важно, потому что это объясняет, почему нейронные сети не только взяли на себя сферу «сложных» проблем машинного обучения, но теперь пробиваются во все аспекты машинного обучения, где SVM, или DT, или классификатор GB могли просто сработать. отлично. Это не обязательно потому, что они «лучше», а потому, что люди больше уверены, что используют их как абстракцию.

Наконец, это важно, потому что это способ понять, почему нейронные сети в некотором смысле лучше, чем классические алгоритмы машинного обучения. Поскольку это отсутствие утечек означает, что любой может поиграться с ними, не сломав все это и не упав на один уровень вниз. Хотите изменить форму? Конечно. Хотите изменить функцию активации? Конечно. Хотите добавить функцию состояния к определенным элементам? Вперед, продолжать. Хотите добавить случайные связи между различными элементами? Не понимаю, почему нет… и т. Д. У них много настраиваемых гиперпараметров, и они не могут быть изменены в принципе.

Конечно, каждый алгоритм машинного обучения имеет настраиваемые параметры, но как только вы начинаете изменять функцию ядра своей SVM, вы понимаете, что для того, чтобы настройки были полезны, абстракция должна сломаться, и вам нужно изучить концепции, лежащие в основе (и т. , и так далее).

Я редко утверждаю, что относительно популярная и разрекламированная вещь «даже лучше», чем думают люди. Но в случае нейронных сетей я действительно думаю, что они являются одними из первых математических абстракций «нового» типа. Они позволяют людям, не имеющим опыта изучения прикладной математики более десяти лет, заниматься прикладной математикой.

Вы можете прочитать эту статью и любые другие мои статьи в моем собственном блоге, если вы предпочитаете ее средней.

Если вам понравилась эта статья, вам также могут понравиться: