June 16th, 2018

thinking

Предсказания. 2

Зимой, по случаю всеамериканского умопомешательства на машинном обучении, начальство спустило циркуляр: всем немедленно применять сей передовой метод, отстающих выгоним (буквально, не шучу). Случился переполох. Через два месяца - стоп-машина, отбой, метод применять только по необходимости (начальство начальства внушило последнему, что самому главному начальству важен результат, а не метод его достижения).

***

Для батареек мы придумываем молекулы с труднореализуемыми свойствами. Я занимаюсь их физхимией; Лю их варит и испытывает, вместе мы разбираемся в результатах испытаний. Нарисовать формулу можно быстро, а синтез занимает недели, а то и месяцы. Ни интуиция Лю, ни моя физхимия не гарантируют успеха. Соединения должны пройти два теста, легкий и тяжелый. Даже легкий тест получается предсказать хуже, чем в половине случаев; с тяжелым тестом полная хана. Много сил уходит на синтез веществ, которые заваливают тесты.

Мы прикинули: раз такое дело, пусть решает машина. И для нас польза, и начальство довольно.

***

Почитав немного про машинное обучение (жена как раз брала стэндфорский курс), я понял, что из начальственных затей ничего не выйдет: данных слишком мало. Тогда я по ее совету решил попробовать логистическую регрессию, чтоб программа предсказывала вероятность прохождения первого теста. Переменными служат молекулярные дескрипторы: есть программы, которые их генерируют тысячами. Это, в основном, автокорелляторы атомных свойств через столько-то химических связей, но есть более заковыристые. Я соединил генетический алгоритм отбора дескрипторов с логистической регрессией, чтобы выбрать небольшое число самых важных дескрипторов. Поскольку "хороших" молекул немного, я добавил к ним "плохих": взял забракованные молекулы и сделал их еще хуже. Я натворил тысячи таких "плохих" молекул, чтобы хорошенько натаскать на них программу. Все сработало. Я нашел классификатор о пяти дескрипторах, который отлично классифицировал все, что я ему подсовывал, и посчитал свою задачу выполненной. Лю просиял, кода я ему об этом сказал.

Затем произошло непредвиденное.

***

Я показал Лю, как классификатор классифицирует молекулы. Он покивал головой, потом спрашивает: а как он это делает?

- Берет линейную комбинацию дескрипторов.
- Что они означают?
- Это и то.
- Мне неясно, что это за свойства, и почему они коррелируют с прохождением теста. Мы такими свойствами обычно не пользуемся.
- Мне это тоже неясно.
- Тогда ты должен создать теорию, почему и как работают эти дескрипторы. Разве ты не для этого написал программу?
- К сожалению, я не знаю, как такую теорию создать. Эти дескрипторы не говорят, какие барьеры каких реакций мне нужно рассматривать.
- Я не могу тратить недели на синтез, если не знаю, как работает твой классификатор.
- Но ты же сам нередко ошибаешься, подбирая новые молекулы, и это тебя не останавливает.
- Потому что это мои ошибки и мое время.
- Ты мне иногда жаловался, что плохо понимаешь мои доводы. Я твою структурную интуицию тоже не всегда понимаю, а объяснить ты мне ее не можешь. Тем не менее ты доверяешь мне, а я тебе. Мы верим, что за нашими доводами стоит некий образ мысли. И за классификатором тоже что-то стоит. В чем разница?
- "Хорошие" молекулы отобраны моим согласием синтезировать эти молекулы, - т.е. твоя программа отражает мою интуицию, и не более. Но есть разница. Моя интуиция хорошая, а твоя программа - плохая. Свою интуицию я понимаю, а твою программу не понимаю.
- Если у тебя такая замечательная интуиция, почему она часто отказывает? Наших интуиций нам явно не хватает, потому мы и решили попробовать программу. Ты не можешь всерьез ожидать, что такая программа будет 1) интуитивна и 2) при этом классифицировать лучше, чем твоя интуиция.
- Да, моя интуция иногда сбоит. А твой классификатор как часто будет отказывать?
- Откуда я знаю, если ты не хочешь даже попробовать?
- Будет ли он достоверно предсказывать "хорошее" соединение?
- Вряд ли.
- Можешь ли ты доказать, что он будет отказывать реже, чем моя интуиция?
- Не могу.
- Тогда зачем он нужен? У меня уже есть несовершенная интуиция, и мне не нужен несовершенный черный ящик. Я ожидал от тебя другого. Я хотел, чтобы компьютер чертил самые лучшие молекулы, а не судил, какая из начерченных мною может оказаться хорошей.
- Пойми, это тупая машина, у нее нет воображения. Но я могу комбинаторно наделать молекул, а она их потом оценит.
- Как ты будешь делать эти молекулы?
- На основе того, что работает.
- Это поиск ключа под фонарем. Так мы будем вертеться вокруг того, что уже знаем и не найдем ничего нового.
- Тогда зачем ты согласился на всю эту затею?
- Я ожидал программу, которая вообразит и оценит тысячи соединений и найдет среди них лучшие. А ты написал неизвестно что неизвестно зачем.
- Давай попробуем на бумаге.
- Попробуем что?
- Нарисовать новые молекулы, дать их машине, а мы их потом оценим и сравним. Если мы сойдемся на 70% - попробуем в жизни?
- Хорошо, давай.


Мы напридумали молекул, машина выбрала "хорошие", и после этого мы резко разошлись во мнениях, правильно ли машина их отклассифицировала.

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

Вот тебе и машинное обучение... Мой ближайший коллега на 20 лет меня моложе стал сомневаться в моей профессиональной пригодности и представил меня перед ультиматумом.

На хер мне сдалось такое обучение.

***

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

Я-то наивно полагал, что трудность с машинным обучением будет обучить машину...

В назидание дан пример оный.
thinking

Предсказания. 3

Когда мне в феврале прислали циркуляр о немедленном поголовном использовании машинного обучения, к нему был приложен образец для подражания: только что опубликованная статья о применении новаторского метода к "предсказанию" вязкости ионных жидкостей как функции композиции, температуры и давления. Авторы уверяли, что это чрезвычайно сложная задача. Сначала они пробовали линейную регрессию с лассо. Не получилось. Потом нейронную сеть (100 нод - это на 700+ измерений!). Получилось - слава нам, ура!

Я посмотрел детали ударной работы, и у меня буквально отвисла челюсть. Вязкость жидкости подчиняется уравнению Аррениуса: ее логарифм пропорционален обратной температуре. Если диапазон температур относительно невелик, возникает пропорциональность логарифма вязкости изменению температуры и его квадрату. Вместо этого авторы коррелировали вязкость и логарифм температуры! Немудрено, что регрессия не работала, и потребовалась нейронная сеть, чтобы исправить нелинейности. К статье были приложены данные, и я за интерес (мне все равно надо было отладить свою программу) их проанализировал. Я сразу получил лучшие результаты с небольшим числом параметров. "Трудность" задачи заключалась исключительно в использовании ошибочной формулы. Этот нонсенс предлагался нам как образец для вдохновений и подражаний.

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

Чистому все чисто.

***

Все это напомнило мне другую историю.

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

У корифея-теоретика был друг в том же университете, корифей-экспериментатор. Корифей-теоретик наводил теорию, а корифей-экспериментатор ее тут же подтверждал во всех деталях. Ни у кого другого воспроизвести эксперименты не получалось (и не получилось). Экспериментатор рано умер, и земля ему пухом, о покойных только хорошее. Но пока тот был жив (а он был очень влиятельным человеком), он делал абсолютно все, чтобы подавить дальнейшие исследования в этой области в Америке.

Прошло 20 лет, и мой соавтор давно профессор в Калифорнии. Выдумал он новый способ вывода псевдопотенциала и решил сравнить со старым. Сравнил - никакого подобия. Проверил выкладки, программы, сам замучился и студентов замучал - нет ошибки. Залез он в код старого потенциала, и сразу обнаружил там ошибку. Она была уже в формулах: в одном из интегралов был пропущен якобиан. Сотни людей ссылалось на статью, никто не проверил выкладок. Он говорил, что у него померк свет в глазах. У него одного статей 30 с этим псевдопотенциалом. Он разослал всем циркулярное письмо о своей находке.

Затем он опубликовал корригендум на все предыдущие работы, объяснив что случилось. Он так же исправил ошибку, и после этого половина результатов пошла в мусорную корзину. Новый же его псевдопотенциал дал качественно другие результаты: эффекты оказались чрезвычайно чувствительны к форме потенциала. Это похоронило дальнейшие надежды описания эффекта с помощью псевдопотенциалов: это оказался тупик. Из-за совпадения результатов ошибочных вычислений и невоспроизводимых экспериментов вся область задержалась на 25 лет. С тех пор в ней значительный прогресс.

Когда был опубликован корригендум, корифею-теоретику редакция предложила написать ответ. И он написал. Ответ занимал ровно один параграф. Суть ответа была в том, что его теории настолько замечательные, что все правильно описывают даже с ошибочным потенциалом.

Чистому все чисто.