machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Прогнозирование молекулярной активности с помощью глубокого обучения в TensorFlow

Дата публикации Jun 30, 2018

Имея богатый опыт работы в области STEM, я видел бум в использовании машинного обучения для решения сложных научных задач в последние пару лет. Тем не менее, относительно трудно иметь глубокие знания как в области STEM, так и в области машинного обучения. Например, если вы учитесь на материаловедов или биохимиков, вы можете провести большую часть дня, размышляя о том, как планировать эксперименты и как собирать данные. Вы слышите, как все говорят о машинном обучении в наши дни, и чувствуете, что это действительно круто. Тем не менее, вы не знаете, как погрузиться в эту растущую область с вашим научным прошлым. Вот эта статья. Это обеспечит всеобъемлющую демонстрацию для решенияМерк Молекулярная активность Kaggle Challengeиспользуя глубокое обучение с библиотекой TensorFlow.

1.описание проблемы

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

Метод QSAR имеет следующие характеристики:

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

2) Каждое соединение обычно представлено списком признаков или дескрипторов отпечатков пальцев. Эти отпечатки пальцев обычно описывают содержание, химию и молекулярную топологию молекулы и кодируются вектором признаков. Например, содержание и химия могут включать в себя дескрипторы для числа атомов углерода и азота, доноров и акцепторов водородных связей, зарядов, полярных и неполярных атомов и функциональных групп (кетон, карбоновая кислота и т. Д.). Топология включает в себя то, какие атомы связаны с какими другими атомами в пределах определенного радиуса (то есть подграфа молекулярного графа). Задача Мерк, описанная в Kaggle, не дает конкретных используемых отпечатков пальцев, а содержит только векторы признаков в виде необработанных данных.

3) Каждый набор соединений может включать общее количество тысяч дескрипторов отпечатков пальцев. Следовательно, векторы, описывающие каждое соединение, являются редкими, и только небольшая их часть отлична от нуля.

4) Эти дескрипторы не все независимы. В зависимости от структуры соединения могут существовать сильные корреляции между различными дескрипторами.

2.Цель и данные

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

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

3.Метрика оценки

Прогнозы активности будут оцениваться с использованием коэффициента корреляции R ^ 2, усредненного по 15 наборам данных. Для каждого набора данных

гдеИксэто известная деятельность,Иксозначает известную активность,Yэто прогнозируемая активность,Yявляется средним значением прогнозируемой активности, иNsчисло молекул в наборе данных s.

4.Подходы и решения

Учитывая, что целевая переменная активность является непрерывной и каждый набор данных содержит десятки тысяч записей, это проблема регрессии, и я буду строить нейронную сеть (NN), используя библиотеку TensorFlow в Python для прогнозирования. Функция стоимости определяется как среднеквадратичная ошибка или MSE в этой работе.

Ниже приводится краткое изложение факторов, рассматриваемых в данной работе:

4 1 Одна модель для каждой молекулы-мишени или для всех молекул-мишеней

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

4.2 Предварительная обработка данных

4.2.1 Цель

Данные обучения имеют 37 тыс. Записей, среди которых более 20 тыс. Имеют одинаковое значение активности 4,30, а остальные между 4,30 и 8,5 (рисунок 1).

Рисунок 1. Гистограмма значений активности в обучающих данных для молекулы 1.

Это происходит от установки порога в процессе сбора данных. Например, любые данные ниже 4.30 не собираются или сопоставляются с 4.30 из-за экспериментальных ограничений. Таким образом, большинство целевых данных усекается, и у NN могут возникнуть проблемы, когда он прогнозирует выходные данные как одно единственное значение. Выполняются следующие шаги предварительной обработки:

1) без предварительной обработки

2) удалить все записи с целевым значением 4,30

3) случайно удалить 90% всех записей с целевым значением 4,30

Среди них 1), по-видимому, дает самое высокое и наиболее последовательное значение R ^ 2, вероятно, связанное с наличием наибольшего количества входных данных, подаваемых в NN (рисунок 2). Таким образом, предварительная обработка цели y не выполняется. Однако оптимизатору явно сложно работать с набором данных, о котором я расскажу в разделе 4.3.5.

Рисунок 2. Значение R ^ 2 для 8 прогонов одной и той же нейронной сети с полным набором обучающих данных или частичным набором данных со всеми записями с целевым значением 4,30.

4.2.2 Количество функций

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

1) без предварительной обработки

2) отфильтровать объекты с дисперсией ниже порогового значения. Например, порог 5e-4 удалит 3,31% функций.

3) использовать уменьшение основной размерности (PCA), чтобы уменьшить размерность (например, до 6000 вместо 9491 элементов)

Оказалось, что и 1), и 2) дают сопоставимые значения R ^ 2, а 3) дают более низкие значения R ^ 2. Таким образом, в следующих результатах функции не были предварительно обработаны.

4.2.3 Дескрипторы

Все дескрипторы являются неотрицательными целыми числами. Варианты преобразования дескриптора:

1) без преобразования

2) логарифмическое преобразование, т. Е. У = лог (х + 1)

3) двоичное преобразование, т. Е. Y = 1, если x> 0, в противном случае y = 0.

На рисунке 3 показано, как функция стоимости изменяется с количеством эпох для трех вышеупомянутых различных этапов обработки. Очевидно, что двоичное или логарифмическое преобразование дескрипторов x уменьшит функцию стоимости до уровня ниже 0,2 и меньше колебаний с увеличением числа эпох. Стоит отметить, что функция стоимости выше 0,2 обычно означает, что R ^ 2 близко к 0.

Рисунок 3. Изменение функции стоимости при увеличении числа эпох для трех различных x предварительной обработки.

Сопоставимые значения R ^ 2 (около 0,6) достигаются с помощью логарифмического и двоичного преобразования дескрипторов x. Таким образом, логарифмическое преобразование дескриптора x используется для остальной части процесса обучения.

4,3Параметры нейронной сети

4.3.1Архитектура нейронной сети

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

Определение количества скрытых слоев имеет решающее значение. В то время как один скрытый слой подходит для большинства проблем, NN с одним скрытым уровнем дает значение R ^ 2 около 0 или бессмысленное значение NAN, поскольку все прогнозируемые целевые значения в точности совпадают. Увеличение количества скрытых слоев до двух без оптимизации гиперпараметров может дать R ^ 2 около 0,56. Поэтому NN с двумя скрытыми слоями являются предпочтительными.

Что касается количества нейронов в каждом скрытом слое, то наиболее распространенные эмпирические правила гласят: «Оптимальный размер скрытого слоя обычно находится между размером входных данных и размером выходных слоев». На рисунке 4 сравнивалось значение R ^ 2 для 4 разных NN с разным количеством узлов в скрытых слоях в течение нескольких тренировочных испытаний. NN с 5 и 2 узлами в первом и втором скрытом слое, соответственно, имеет аналогичные максимальные значения R ^ 2 (~ 0,6), что и остальные три NN с большим количеством узлов, но у него есть три испытания с гораздо более низким R ^ 2, что указывает на нестабильность NN с небольшим количеством узлов. NN с 50 и 25 узлами в первом и втором скрытом слое показывает наиболее последовательный результат среди 8 испытаний со средним значением R ^ 2, равным 0,568, и стандартным отклонением, равным 0,027. Наибольшее NN с 100 и 50 узлами в первом и втором скрытом слое также демонстрирует несогласованность среди 8 испытаний, причем 1 бессмысленный R ^ 2 и 1 R ^ 2 близки к 0. Это, вероятно, потому что 300 эпох недостаточно для большего NN, чтобы достичь своего глобального минимума последовательно. В самом деле, чем больше NN, тем больше эпох необходимо для того, чтобы получить последовательно приличную R ^ 2. В идеале мы хотим запускать NN, пока вычислительная мощность позволяет, пока мы не увидим, как оптимизатор сходится к решению.

Рисунок 4. Значение R ^ 2 в разных испытаниях для NN с 2 скрытыми слоями и разными номерами узлов ((5, 2), (10, 5), (50, 25), (100, 50) для первого и второго скрытых слой соответственно.) 300 эпох выполняется для каждого NN.

4.3.2Функция активации

Практическая роль функций активации состоит в том, чтобы позволить NN моделировать сложные нелинейные функции. Без нелинейных функций активации NN будет равно линейной функции. В этой конкретной задаче ReLu и Sigmoid используются в качестве функций активации. ReLu работает лучше, чем Sigmoid и используется во всех скрытых слоях. Функция стоимости действительно не сходится при использовании функции активации Sigmoid. Это может быть связано с тем, что функция активации сигмоида ограничивает весь выходной сигнал от 0 до 1 и, таким образом, снижает способность NN к обучению для этой конкретной проблемы.

Линейная активация используется для выходного слоя, что является обычной практикой для обучения NN для проблем регрессии.

4.3.3 Скорость обучения

Выход NN очень чувствителен к начальной скорости обучения градиентного спуска. Я начал с скорости обучения 0,05 и заметил, что функция стоимости либо расходится, либо быстро выходит за пределы максимального числа с плавающей запятой, давая NaN. Уменьшение скорости обучения приведет к уменьшению функции стоимости, однако функция стоимости легко захватывается локальным минимумом (например, 24,085, 22,220, 14,683). Только когда скорость обучения снизилась до 0,001, я начинаю видеть постоянный результат стоимости и значения R ^ 2 более 0,1. Таким образом, скорость обучения сохраняется на уровне 0,001.

4.3.4 Вес и уклоны

Учитывая, что функция стоимости легко переходит к локальным минимумам, также важно начать с оптимизированного веса и уклонов. Наши оптимизированные веса и отклонения являются случайными значениями из усеченного нормального распределения со средним значением 0 и стандартным отклонением 1. Значения, находящиеся за пределами [-2, 2], отбрасываются и выбираются повторно - этот шаг очень важен для обеспечения согласованности полученные результаты.

4.3.5 Оптимизатор

Оптимизатор Adam оказался лучшим оптимизатором. Первоначально использовался случайный градиентный спуск, но в большинстве случаев функция стоимости будет поймана в локальные минимумы (например, 0,45). Снижение скорости обучения и добавление импульса не очень помогли. После переключения оптимизатора на оптимизатор Adam (адаптивная оценка моментов) функция стоимости начала уменьшаться до целых 1 и сходилась. Оптимизатор Adam вычисляет адаптивные показатели обучения для каждого параметра и сохраняет экспоненциально убывающее среднее значение прошлого градиента. Обычно это оптимизатор перехода для NN с входными данными в качестве разреженной матрицы.

Однако функция стоимости (MSE) все еще может быть поймана в локальный минимум. Например, на рисунке 5 показано изменение функции стоимости и значения R ^ 2 вместе с увеличением числа эпох для NN с двумя скрытыми слоями с 1000 и 500 узлами соответственно. В эпоху 865 стоимость превращается из небольшого скачка от 0,2 до 0,4 в резкие локальные минимумы, из которых она никогда не восстанавливается. Впоследствии R ^ 2 был действительно плохим, хотя до эпохи 865 года он был намного лучше. Ландшафт функции стоимости, вероятно, будет охватывать множество очень острых локальных минимумов, поскольку мы часто видим, что тренировочные испытания оказываются в ловушке около 0,4–0,5 мс. плохой R ^ 2 (см. рисунок 4 для некоторых примеров). Это явление происходит случайно во всех симуляциях, и его трудно контролировать. Таким образом, для каждой оптимизированной модели я обычно запускаю ее несколько раз, чтобы получить согласованные результаты.

Рисунок 5. Изменение функции стоимости и значения R ^ 2 с номером эпохи. NN имеет 2 скрытых слоя с 1000 и 500 узлами соответственно. Все остальные параметры NN оптимизированы, как показано в этом отчете.

4.3.6 Выпадение

Dropout - это общая стратегия, используемая для предотвращения переоснащения в NN. Оптимизированные результаты достигаются с помощью 25% нейронных узлов, выпадающих случайным образом в скрытом слое, и без выпадения в выходном слое.

5 Резюме

В заключение, оптимизированный NN, который дает наибольшее значение R ^ 2, имеет следующие символы:

  • Все обучающие данные и все дескрипторы используются без какой-либо фильтрации.
  • Логарифмическое преобразование дескрипторов x и отсутствие предварительной обработки цели y.
  • У NN есть два скрытых слоя. Первый и второй скрытые слои имеют 50 и 25 нейронов соответственно.
  • ReLu используется в качестве функции активации для всех скрытых слоев. Линейная функция активации используется для выходного слоя.
  • Скорость обучения сохраняется на уровне 0,001.
  • Веса и смещения - это случайные значения из усеченного нормального распределения со средним значением 0 и стандартным отклонением 1. Значения, находящиеся за пределами [-2, 2], отбрасываются и переизбираются.
  • Адам оптимизатор используется.
  • Уровень выпадения 25% используется для всех скрытых слоев, и в выходном слое не используется отсев.
  • Размер партии - 300, номер эпохи - 900.

Наибольшее значение R ^ 2 в данных теста (которое на 20% отличается от данных тренировки) составляет 0,568 +/- 0,027. Таблица лидеров Kaggle показывает максимальный средний показатель R ^ 2 0,494 для всех 15 молекул. По сравнению с этим результатом значение R ^ 2 от NN является приличным и удовлетворительным.

Пожалуйста, посмотрите этоGitHubхранилище для всего кода и дополнительной информации. Не стесняйтесь оставлять комментарии или свяжитесь со мной, если у вас есть какие-либо вопросы.

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map