Усунення розриву між генетикою та нейронними мережами

Побудова та аналіз нейронних мереж на генетичних даних

Мірі Тропе

28 квітня · 12 хв читання

Нещодавно я проводив дослідження над генетичними послідовностями. Основним питанням, яке займало мене в цьому, було: "яка найпростіша із запропонованих нейронних мереж є найбільш сумісною з генетичними даними?" Після багатого огляду літератури я виявив, що найбільш «приземлена», але захоплююча робота, пов’язана з цією темою, відбулася в лабораторії професора Йошуа Бенджо. Документ під назвою "Дієтична мережа: тонкі параметри для геноміки жиру", і його основною метою було класифікувати генетичні послідовності 3450 особин на 26 етнічних груп. Ця робота надихнула мене, і тут я хотів би пояснити основи побудови нейронних мереж для вирішення такого роду проблем. Для розуміння цього блогу не потрібні попередні знання з біології; Я спробую охопити більшість необхідних частин, щоб перейти прямо до обчислювальних розділів.

розриву

Нас чекають складні часи: вірус SARS-CoV-2 залишив нас безпорадними перед потужною силою природи. Вивчаючи нові інструменти: отримуючи інтуїцію щодо геномних даних, та вивчаючи, які методи машинного навчання можуть найкраще узагальнити ці дані; Я сподіваюся, що ми зможемо об’єднати зусилля та внести зміни до кращих днів або, принаймні, використати неймовірний інтелект нейронних мереж, щоб зробити щось, крім розробки розважальних програм, але рятуючи наше життя і навіть нашу планету.

Чому я вважаю генетику такою привабливою?

Ваша генетика розкриває не тільки вашу біологічну інформацію, але й генетичну історію ваших предків, представляючи, які домінуючі частини вижили протягом багатьох років (перегляньте “реконструкцію послідовності предків”).

Іншими словами, це кодування біологічної еволюції вашої родини, і навіть більше того, згідно з Дарвіновою теорією еволюції, вся колекція органічних істот (рослин, тварин тощо) має однакові генетичні принципи.

Дозвольте мені ознайомити вас з іншими типами даних, такими як зображення та речення, щоб зрозуміти унікальність генетичних даних. З одного боку, зображення - це двовимірні дані (або тривимірні для томів) із взаємозв’язками сусідів. Речення - це одновимірні вектори приблизно до тисячі значень з ієрархічним характером речень, підготовлених без нагляду.

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

Таким чином, G-російський згладжувальний фільтр, який користується великою популярністю в обробці зображень, тут не актуальний, як і всі групи попередньо навчених моделей у зорі (I mageNet, V GG, R esNet ...) та обробці природних мов (W ord2Vec, G love, B ERT…) виведені з гри.

Чому це виклик?

Подумайте про базу даних, що складається з тисяч генетичних зразків. Вам потрібно знайти метод, який добре узагальнює (точність понад 90%) із вхідними даними в десятки мільйонів комбінацій. Нейронна мережа може підійти якнайкраще, оскільки вона використовує потужність повністю підключених блоків так, як це не вистачає в інших «класичних» алгоритмах, таких як PCA, SVM та дерева рішень, які не управляють даними окремо. Тим не менше, побудова найпростішої архітектури мережі вимагає більше десятків мільйонів вільних параметрів у вагах першого шару. Зменшення розмірності (щоб уникнути надлишку вільних параметрів) - один із способів вирішити цю проблему; ми обговоримо це пізніше у цьому блозі.

Щоб прояснити ситуацію та не створювати труднощів щодо головної мети цього форуму, я представляю тут лише погляд на високий рівень біологічних частин, необхідних у цьому блозі. Зайве говорити, що ви більш ніж раді вивчити будь-яку з цих біологічних тем далі.

Що таке генетична послідовність?

Молекула ДНК - це послідовність чотирьох типів основ, представлених буквами A, C, G, T. Конкретні частини послідовності (навіть якщо вони розташовані віддалено) співвідносяться з фенотипом. Наприклад, недавнє дослідження: «Спалах пневмонії, пов’язаний з новим коронавірусом із ймовірним походженням кажанів», вказує на те, що ген ACE2 може бути рецептором (фенотипом) господаря вірусу SARS-CoV-2. Цей приклад та багато інших чудово показують цінну інформацію (виявлення злочинців, відповідність штамів конопель, харчування та персоналізовані ліки), яку можна досягти виключно на основі вашої ДНК.

Що таке генотипи SNP?

У наш час ми як ніколи близькі до досягнення майже повних генетичних послідовностей людини. Однак ми ще далекі від того, щоб охопити його цілісність. Поліморфізми одиночних нуклеотидних поліморфізмів SNP - це специфічні місця генотипів у геномній послідовності, як правило, представлені у вигляді RS [число]. Різні популяції мають різні інваріанти послідовності, але, ймовірно, приблизно однакові в межах сімей (отже, азіати виглядають інакше, ніж європейці). Аналіз послідовностей SNP буде ключовим моментом у решті цього блогу.

У цьому розділі я описую дані та дві основні архітектури мережі (і іншу мережу з покращеними параметрами для подолання деяких основних проблем машинного навчання), а також деякі технічні поради ...

Порівняно з іншими типами даних набори медичних даних важко знайти, головним чином через обмеження конфіденційності. У світлі цього проект 1000 геномів досяг значного прориву, опублікувавши загальнодоступний набір даних з 3450 зразків ДНК людини, 315 тис. SNP кожного з 26 популяцій у всьому світі. На наступному малюнку показана гістограма, отримана з даних 1000 геномів, що відображає частоту особин на популяцію (етнічну приналежність); Середня кількість зразків кожної популяції становить близько 133 генетичних зразків.

Як зазначалося вище, переважно зменшення кількості вільних параметрів у моделі (у нашому випадку ми маємо справу з близько 30 мільйонами параметрів). Запропонований метод для досягнення цього використовує іншу допоміжну мережу поверх дискримінаційної мережі, яка вводить гістограму на клас (матриця вбудовування, розрахована без нагляду). Вихід цієї мережі ініціалізує ваги першого рівня дискримінаційної мережі. Матриця вбудовування - це гістограма нормалізованих генотипів на популяцію, а її розмір - SNPs X [4x26], де чотири означають чотири комбінації генотипів, а 26 - кількість класів (популяцій). Реалізація такої матриці вбудовування описана нижче.

У будь-якому разі, це їхнє рішення; моє рішення полягає в зменшенні кількості шару прихованих одиниць (див. розділ архітектури). Я назвав цю нову архітектуру вдосконаленою моделлю, і однією з її переваг є подолання переобладнання, як обговорюється далі в розділі результатів.

У цьому блозі порівнюються дві основні мережі. Обидві мережі складаються з двох повністю підключених прихованих шарів, за якими слідує шар softmax, але другий (див. Наступну рисунку) включає допоміжну мережу, яка передбачає вільні параметри d кримінальної мережі. Допоміжна мережа приймає в якості вхідних даних матрицю вкладених елементів і повертає ваги дискримінаційної мережі, яка з’явилася першою пізніше (рис. 1).

Детальний опис архітектури можна побачити на рис. 2: норма партії, за якою слід залишити шар, що вимагається перед кожним повністю підключеним шаром.

Я написав цілий код у цій роботі з нуля в Pytorch, його можна знайти в загальнодоступному сховищі GitHub під назвою “геном людини”. Нижче наведено кілька загальних моментів, які я вважаю найбільш актуальними для цього форуму.

  1. Управління структурою даних

Для досягнення об’єктивних результатів ми генеруємо п’ять разів, по одному для кожного експерименту, обчислюючи варіанти статистики в кінці.

  • Розбиття та перемішування

Ми розділили 3,5 тис. Зразків на поїзд (60%), перевірку (20%) та тест (20%). Як зазвичай, ми випадковим чином перемішуємо дані та нормалізуємо значення:

2. Зменшення розмірності

Створення матриці вбудовування проводиться у два етапи: перший генерує гістограму генотипів на клас за допомогою bincount (), а другий нормалізує цю гістограму. Результатом є зменшення розмірності приблизно в десять порядків.

3. Підключення мереж

Обидві мережі (допоміжна та дискримінаційна) мають окремі обчислювальні графіки, які ніяк не пов'язані між собою. Обчислювальний графік дискримінаційної мережі, що містить втрати, не має інформації про залежність між втратами та тензором вкладання. Рішенням може бути встановлення значення градієнта тензора вбудовування зі значенням градієнта дискримінаційної мережі вручну та виклик torch.autograd.backward () в мережі вбудовування, оскільки в обчислювальному графіку мережі вбудовування залежність між тензорами відомі.

Навчальний цикл:

  • Передача вперед у вбудовуванні мережі
  • Встановіть вагу першого прихованого шару в дискримінаційній мережі із значеннями вбудовування
  • Передача вперед у дискримінаційній мережі
  • Відсталість у вбудовуванні та дискримінаційних мережах
  • Оновлення параметрів

У першому прихованому рівні дискримінаційної моделі ми ініціюємо її 30 мільйонів ваг висновком допоміжної мережі (яка є шаром вбудовування)

Форвард передає:

Оптимізатор повинен оновити параметри обох мереж:

Зворотні паси:

Оскільки ми встановлюємо обчислювальний графік мережі вбудовування, відома залежність між вбудовуванням та дискримінаційними мережами.

4. Навчальна сесія

Даніель Годой пояснює у своєму блозі тренувальний процес, я хотів би розширити коло його роботи відповідно до нашої роботи з міні-партіями.

  • Міні-партія та Епоха

Функція: loss_fn (y, yhat) повертає середню квадратичну помилку (квадратичну норму L2) між кожним елементом на вході y та цільовим yhat. Оскільки ми хочемо обчислити втрати, нам потрібно помножити це значення на розмір партії, а потім підсумувати всі повернені значення кожної міні-партії.

Зрештою, кожна епоха містить накопичене значення з останнього розділу. Таким чином, щоб отримати збиток, нам потрібно розділити на кількість міні-пакетів у цьому циклі.

Я настійно рекомендую вам скористатися ранньою зупинкою, обгрунтування цього автоматично визначається відповідно до втрат під час перевірки, коли саме час зупинити тренування та зберегти найкращий результат останньої моделі.

Нижче наведено кілька цікавих інструментів, які я вважаю корисними (і безкоштовними):

  • Бібліотека нейронної мережі

Я мушу зазначити перевагу використання Pytorch як найкращої бібліотеки нейронних мереж, на моєму досвіді, у порівнянні з багатьма іншими, вона є найкращою у багатьох відношеннях. У статті: «Порівняльне вимірювальне дослідження глибокого навчання як основи обслуговування» представлений емпіричний аналіз основ: TensorFlow, Caffe, Torch та Theano.

  • Навчання на хмарі

Вам було б корисно навчити свою модель на хмарі та заощадити час. Ашвін Де Сільва описує у своєму блозі, як ви можете працювати локально, фіксувати та надсилати до вашого сховища GitHub, перетягувати свої коміти в хмару та проводити там свої тренінги. На мій погляд, варто витратити час і зусилля на тестування деяких тестів з різними параметрами, такими як кількість прихованих одиниць, значення відсіву тощо.

У ретроспективній перспективі я пройшов через відомі труднощі серед вчених-дослідників даних під час аналізу результатів і виявив важливим поділитися з вами, щоб надати вам чесні докази динамічної поведінки розвитку таких мереж. Під час дослідження ефективності вашої мережі я вважаю такі зауваження головними героями:

Почнемо з функції втрат: це "хліб і масло" продуктивності мережі, яка експоненційно зменшується протягом епох. Більше того, модель, яка добре узагальнює, зберігає втрати від перевірки під час тренувальних втрат. Причина цього проста: модель повертає вищі значення втрат під час навчання, не перевіряючи. Якщо ви зіткнетеся з іншим випадком (втрата тренувань є втратою під час перевірки), ваша модель, ймовірно, переобладнана. Рішення для переобладнання можуть бути одними або комбінацією наступних: по-перше, це зниження одиниць прихованого шару або видалення шарів для зменшення кількості вільних параметрів. Як ми вже обговорювали вище, заради покращення цієї проблеми на допомогу приходить наша вдосконалена мережа, а також допоміжна. Інші можливі рішення - збільшення значення відсіву або регуляризація. У своєму блозі Мазид Осені пояснює різні типи методів регулювання та реалізації. На рис. 3 показана функція втрат простішої версії моєї мережі до (ліворуч) і після (праворуч) вирішення так званої проблеми переобладнання.

Моє рішення - комбінація зменшення розміру прихованих одиниць (від 100 до 50 одиниць) та збільшення значення відсіву першого шару (з 0,5 до 0,8). Допоміжна мережа може вирішити проблему великої кількості вільних параметрів, але, як бачите, все-таки переоцінка (середня).

Точність тесту була розрахована для кожної архітектури. Дивно, але здається, що подолання переобладнання або зменшення кількості вільних параметрів не обіцяє більшої точності. На рис. 4 показана точність випробувань трьох архітектур: зауважте, що точність вища, хоча проблема переобладнання.

Тестування продуктивності з різними розмірами партії - забавне завдання. Кевін Шен у своєму блозі досліджує вплив розміру партії на динаміку тренувань. Відповідно до загального часу навчання, можливо, через різноманітність даних, розмір партії обернено пропорційний часу навчання (рис. 6). З тієї ж причини втрати прямо пропорційні розміру партії (рис. 5).

На рис. 6 чітко показано поведінку використання різних розмірів партії з точки зору часу навчання, обидві архітектури мають однаковий ефект: більший розмір партії є більш статистично ефективним, але не забезпечує узагальнення. Прочитайте статтю: «Тренуйся довше, краще узагальнюй: подолання прогалини узагальнення у великій партійній підготовці нейронних мереж», щоб глибше зрозуміти явище узагальнення та методи покращення результатів узагальнення, зберігаючи час навчання незмінним із використанням великих партій.

Зверніть увагу на ефект зміни архітектури з точки зору часу навчання (рис. 7). Час навчання значно менший або за 15 мільйонів безкоштовних параметрів, ніж допоміжна мережа.

Я також порівняв ефективність вдосконаленої моделі з підходом до дерев рішень, зокрема, з підсилювальною машиною легкого градієнта, яка зазвичай використовується в галузі науки про дані. Однак ефективність вийшла за наші межі з точки зору помилки при неправильній класифікації (докладніше див. Додаток).

Яка найкраща модель? (Питання про тисячу доларів)

У цьому блозі я описав дві основні мережі: з допоміжною мережею та без неї та додаткову мережу з покращеними параметрами. Перевага мереж прогнозування параметрів полягає в тому, що це значно зменшує кількість вільних параметрів у першому шарі моделі, коли вхідні дані дуже великі, як у генетичних послідовностях.

Я показав, як зміна параметрів базової мережі дало краще узагальнення з точки зору переобладнання. Я перевірив підходи цих мереж на загальнодоступному наборі даних 1000 геномів, вирішуючи завдання прогнозування походження на основі даних SNP. Ця робота продемонструвала потенціал нейромережевих моделей для вирішення завдань, коли існує невідповідність між кількістю зразків та їх великою розмірністю, як при секвенуванні ДНК.

Враховуючи високу точність, досягнуту в завданні прогнозування предків, я вважаю, що нейромережеві методи можуть вдосконалити стандартні практики аналізу генетичних даних. Я сподіваюся, що ці методи дозволять нам вирішувати складніші дослідження генетичних асоціацій.

Дякую Каміль Рошфор-Буланже (Монреальський університет) за те, що я дав мені хороші поради щодо процесу впровадження.

Для тих, хто цікавиться, який комп’ютер я маю: я хотів би сказати кілька добрих слів про мій MacBook Pro, 16 Гб пам’яті, Intel Core i7 за те, що я можу працювати над таким дивовижним завданням, залишаючи мені ті задоволені години навчання (див. розділ «Результати»), а також весь досвід «комп’ютерної лабораторії» (під час роботи вдома під час закриття коронавірусу).

Результати з використанням дерев рішень

На додаток до методу нейронної мережі, який я висвітлив у цьому блозі, я хотів би згадати результати свого досвіду з деревами прийняття рішень, що підвищують градієнт. Реалізацію можна знайти у цьому сховищі GitHub. Параметри алгоритму:

Результати показують, що помилка класифікації вища з деревами рішень, пояснюючи причини, що виходять за рамки блогу.