Изменения

Перейти к: навигация, поиск

Машинное обучение в медицине

6 байт добавлено, 15:35, 6 января 2021
Предсказание молекулярных свойств
Первые нейронные сети для предсказания молекулярных свойств использовали Моргановские фингерпринты (англ. Morgan fingerpints), которые для каждого атома в молекуле выделяли всех его соседей на каком-то определенном расстоянии (которое является гиперпараметром) и смотрели на наличие такой подструктуры в молекуле. Получался аналог некоторого оne-hot кодирования. Впоследствии этот метод был несколько усовершенствован, и стали смотреть не на наличие подструктуры, а на то, сколько раз она встречается в молекуле. Прорыв в этой области случился с появлением сети NeuralFingerprints <ref>[https://arxiv.org/abs/1509.09292 Duvenaud et al., Convolutional Networks on Graphs for Learning Molecular Fingerprints, 2015]</ref>, которая является примером одной из первых попыток применения [[графовые нейронные сети|графовых нейронных сетей]] в этой области.
NeuralFingerprints принимает один гиперпараметр {{- --}} максимальное расстояние, которое нужно учитывать при просмотре соседей каждого атома. После этого для каждого расстояния для каждого атома суммируются атомные представления его соседей на текущем расстоянии. Таким образом, получается векторное представление текущего атома фиксированной длины, которая равна количеству свойств у одного атома. Каждый элемент такого представления умножается на обучаемый параметр, уникальный для номера свойства и текущего рассматриваемого расстояния. После этого применяется функция активации к полученному ранее вектору, умноженному на вес, отвечающий за текущее расстояние. Полученные результаты для каждого из атомов на каждом из расстояний суммируются и получается результирующий вектор свойств для молекулы. Таким образом, в этой сети обучаемые параметры {{---}} веса для каждого из свойств атомов на каждом расстоянии (<tex>H^i_j</tex>, где <tex>i</tex> {{---}} индекс номера свойства (в модели их всего 5), <tex>j</tex> {{---}} индекс для текущего расстояния) и веса для каждого из расстояний (<tex>W_j</tex>, где <tex>j</tex> {{---}} индекс для текущего расстояния). Псевдокод представлен ниже.
'''function''' neuralFingerptint(molecule, R, H, W): <span style="color:Green"># R - максимальное расстояние, H - матрица весов размера len(molecule)<tex>\cdot</tex>R, W - вектор весов размера R</span>
f = array[len(molecule), 0]
Анонимный участник

Навигация