Наука
Mary Novo
12 406

Российский студент создал нейросеть, которая может обнаружить рак. Как это работает?

Ивану 21 год, он занимается разработкам в области машинного обучения для роботов Promobot. Ваня вместе с командой создал нейросеть, которая определяет вероятность раковой опухоли. Работа вошла в 1% лучших на соревновании Google.

В закладки

С чего всё началось

Я начал заниматься машинным обучением ещё 3 года назад, но серьёзно изучать глубокие нейронные сети стал не так давно — меньше года назад. Сейчас я работаю над обработкой естественного языка для сервисных роботов Promobot. «Естественный язык» — это речь человека, которую робот, стоя, например, в банке — должен обработать и оказать правильную услугу.

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

Буквально за два месяца я прошёл четыре больших курса по машинному обучению. Все курсы бесплатные, только за один я заплатил 3 000 ₽ (вообще-то это цена одного месяца курса, но я успел пройти всю программу за этот месяц).

  • Специализация от Эндрю Ына по глубокому обучению из 5 курсов (платно)
  • Курс от Стэнфорда по компьютерному зрению (бесплатно)
  • Курс от Стэнфорда по обработке естественного языка (бесплатно)
  • Fast AI (бесплатно)

Конечно, это не здоровый темп. По-хорошему такой объём информации проходят гораздо дольше, но я занимался по 12-14 часов в день под кофе, зелёным чаем и всем, что только мог найти.

У любого образования должен быть выхлоп — результат, практика, решение, п̶о̶с̶т̶ ̶в̶ ̶и̶н̶с̶т̶а̶г̶р̶а̶м̶е. Я решил участвовать в соревновании на гугловской платформе Kaggle.

Что за соревнование

Kaggle — это платформа международных соревнований по машинному обучению. В каждом соревновании участвуют тысячи исследователей — вместе с нами соревновались 1157 команд из США, Германии, Китая, Кореи — со всего мира.

Платформа предоставляет данные. В нашем случае это снимки лимфоузлов: 220 тысяч снимков для тренировки, и 57 тысяч — для тестирования модели. Это снимки реальных пациентов, переданные для исследования (снимки анонимные — личные данные пациентов не разглашаются). Такой набор данных называют dataset, и они бывают разные: могут состоять из снимков, видеофрагментов, текстов, или записей речи людей, как в моём случае в Promobot. (Объём тоже может быть разным: я работал и с тысячей данных, и с 10 миллионами).

Задача простая: определить по снимку — есть у пациента рак или нет.

Как мы это сделали?

С помощью нейросети.

Как это работает

Чтобы научить чему-то нейросеть, нужно найти закономерность.

Например, работая с речью людей, нейросеть должна найти связь между репликами людей и услугой — допустим, окном в МФЦ. Представьте: человек подходит к роботу и говорит: «Мне нужно оформить загран». Не «заграничный паспорт», а именно «загран». В системе госуслуг нет «заграна», но нейросеть должна понять, в какое окно отправить клиента.

В случае изображений: чем отличаются снимки, на которых есть рак, от тех, на которых его нет?

Для этого изображение нужно перевести в данные. Здесь начинается интересное.

1. Любое изображение состоит из пикселей. Пиксели делятся на три канала: R (red), G (green) и B (blue). Если вы хоть раз в жизни открывали фотошоп или любую подобную программу, вы должны это знать.

У каждого канала есть значение. Это число — просто количество красного/зеленого/синего в каждом конкретном пикселе.

Представим, что у нас черно-белое изображение — в этом случае каждый пиксель кодируется одним числом.

2. Берем небольшую область изображения

Например, 5 на 5 пикселей. У каждого есть своё значение, помните?

Изображение 5 на 5 пикселей

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

Мы используем свёрточные нейронные сети, главная идея которых — свёртка. Суть в том, что каждый фрагмент изображения отдельно умножается на какое-то число (матрицу свёртки). Результат суммируется и записывается в итоговое изображение — в том же самом месте, в том же фрагменте.

3. Накладываем на изображение матрицу. Например, 2 на 2 пикселя.

Каждое значение из этого квадратика умножается на какое-то число (например, на 3), а потом суммируется. Затем смещаем его — и считаем значения уже в другом. Затем снова смещаем — и так до тех пор, пока не обработаем всё.

И эта операция проходит для каждого канала — красного, зеленого и синего (ведь у каждого пикселя есть три значения).

4. Получается небольшой кубик.

Этот кубик — то же самое изображение, но как бы более концентрированное. Изображение было большим и непонятным, а мы сделали его меньше и точнее.

А теперь представьте количество значений и расчётов для такого изображения:

А теперь представьте, что оно выглядит вот так:

А теперь представьте, что таких изображений — 220 000.

5. В конце нейросеть выдаёт одно значение, которое говорит: есть рак или нет. Побеждает тот, чья нейросеть была точнее других.

Я работал в команде: двое из Германии, один индиец из Англии и я, Ваня из России. Мы нашлись прямо на форуме соревнования. Я был самым младшим в команде: мне 21, индийцу — около 25-ти (и у него есть PhD в квантовой информатике), обоим немцам — в районе 35-ти.

Результат

В соревновании участвовали 1157 команд. Мы вошли в 1% лучших.

Сложно сказать, чем именно мы были лучше других. Команды публикуют свои решения добровольно, и обычно этим занимаются только топовые команды (если у тебя плохое решение, то и нет смысла его публиковать — логика такая).

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

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

P.S. Затем мы взяли идеи, которые использовали на соревновании, собрали всё в одну статью и подали её на международную конференцию по машинному зрению CVPR — одну из самых топовых в мире.

Работа прошла проверку экспертов, и мы (а точнее всего один участник команды) представили её в Калифорнии. Лучшей работа не стала — победила команда из Google.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы рассказать свою историю.

Написать
{ "author_name": "Mary Novo", "author_type": "self", "tags": [], "comments": 51, "likes": 70, "favorites": 87, "is_advertisement": false, "subsite_label": "science", "id": 110516, "is_wide": false, "is_ugc": true, "date": "Fri, 09 Aug 2019 11:07:25 +0300", "is_special": false }
Объявление на TJ
Видео и гифки
Гифки и видео — наконец-то всё в одном месте. Это тот подсайт, куда можно постить короткие ролики, коубы и гифки без…
Подписаться
Подписан
Отписаться
0
{ "id": 110516, "author_id": 220228, "diff_limit": 1000, "urls": {"diff":"\/comments\/110516\/get","add":"\/comments\/110516\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/110516"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 214346, "last_count_and_date": null }
51 комментарий
Популярные
По порядку
Написать комментарий...
25

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

Ответить
48

На самом деле ты всё еще не понял чего ты хочешь.
Программирование - это всего лишь инструмент. Поэтому сказать "Хочу программировать". Это все равно что сказать "Хочу крутить что-нибудь отверткой".
Лучше сфокусируйся на том, что ты хочешь создать. Возможно, программирование для этого вообще не нужно.

Ответить
0

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

Ответить
16

Нативочка подъехала

Ответить
0

Ещё скажи на одном потоке учились)

Ответить
4

мальчики не ссорьтесь. вы оба петушки фраерки-пидорки🍌👠

Ответить
1

Почему же не получится? На павершелле и баше вполне достаточно скриптов для большинства задач

Ответить
1

Не уточнил, имел ввиду Python, т.к. бывает нужОн для прикладных задач, а скрипты оно понятно на bash

Ответить
0

Учи PowerShell. Базарю, ещё захочешь.

Ответить
0

зачем в Linux powershell?

Ответить
1

зачем в Linux *

Ответить
0

Хочу шлепать формы

Ответить
0

а придушивать?

Ответить
0

Но как же я тогда получу лычку «формошлеп»?

Ответить
0

получишь кличку "курощуп"

Ответить
0

А готов заплатить чтобы тебя научили программированию?

Ответить
1

уже учу и причём успешно

Ответить
16

Так может быть вся заслуга индийца из Англии и двух взрослых немцев?) Заголовок звучит так что он один все это намутил, что есть неправда

Ответить
9

у индийца phD, а у россиянина СМЕКАЛОЧКА

Ответить
4

Плюсую, заголовки из разряда "Школьник из Тюмени побил рекорд скорости вагонетки в тунелле HyperLoop"

Ответить
6

Комментарий удален по просьбе пользователя

Ответить
2

а вот и js-ник в треде. Данные размечены, сеть ищет закономерности в данный помеченный как "рак" и на основе своих выводов предсказывает результат для новых (не размеченных) данных.

Ответить
3

ты написал статью о себе в 3 лице? ну и 110 место это неплохо конечно, но не сказать, что супер
ps на курсере можно все курсы проходить на халяву, зря 3к отдал

Ответить
0

За 3к "диплом" дают. Хотя только что посмотрел, курс стал совсем бесплатным, когда я его проходил пару лет назад за деньги какие-то плюшки были, только я уже не помню какие, все равно заплатила работа, а не я.

Ответить
0

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

Ответить
0

Я об этом не знал, но все равно так бы делать не стал.

Ответить
0

ну так если на работе оплачивает, зачем заморачиваться, и правда (=

Ответить
0

Меня бы устроил и бесплатный вариант, на диплом мне вообщем пофиг, а попрошайничать не охота :-)

Ответить
0

в бесплатном только лекции доступны, без заданий

Ответить
0

Ааа, вот почему мне пришлось платить. Это многое объясняет.

Ответить
1

Бро, где ты был год назад со своей нейкой.....

Ответить
3

😨

Ответить
2

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

Ответить
0

Но ведь в заголовке нет ни слова о лечении

Ответить
0

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

Ответить
–1

Что ты несёшь але? Точная диагностика рака - шаг к лечению. Во-первых у живых врачей довольно большая погрешость, нейронки будут точнее (уже точнее в некоторых областях), я уж молчу что качество подготовки врачей и их опыт сильно варьируется от места к месту. Во-вторых врачей надо учить долго и дорого, а нейронку один раз научил и завтра ее можно будет использовать в любой больнице с гарантированной точностью. И это дешевле, чем анализ врача, что снижает стоимость медобслуживания. Ты видимо хочешь чтобы тебе нейронка по фотографии из одноклассников диагнозы ставила?

Ответить
0

Где вы прочитали, что снимки «уже заболевшего человека»?

Ответить
0

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

Ответить
0

В том-то и претензия что в статье об этом почему-то не написано. Вы недостаточно подробно раскрываете применимость и пользу, которую дают результаты этого конкурса. Оставляя читателю пространство для восклицания "Вау!". Хотя никакого вау нету. Конкретный вклад российского разработчика не ясен. О том, что это в каком-то смысле, просто попытка упростить работу врача, который и без того глазами может определить есть на снимке рак или нет, не просвещенному тоже не ясно. Хотя такой алгоритм, конечно, позволит большее пространство образца проанализировать (подобно автоматической лаборатории по анализу крови).

Ответить
–1

По сути то что-то будет ответить, умник?

Ответить
2

Оу.

Ответить
1

Тема звучит мегакруто, но тема не раскрыта, прямо вообще. Потому как начать разбираться в ньюансах, возникает куча вопросов, какие виды болезней помогает диагностировать метод и на какой стадии. Какова точность модели? Почему в качестве проверки взяли только лимфоузлы? Статья пустая.. Нейросеть это всего лишь метод, а не панацея. Так что не лохматьте бабушку:))

Ответить
1

Хотела почитать о дочери Путина

Ответить
0

Русские обучили нейросети

Студенты из Государственного университета управления научили нейросеть распознавать человеческие эмоции😄😢 https://t.co/ofbWuBOZu6
Ответить
1

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

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
0

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

Ответить
0

Молодец чувак, я к своим 30 все проебенил

Ответить
0

Сосиску отличает?

Ответить
0

Напишите имена полные: Ивана и других участников команды.

Ответить
0

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

а до нейро сетей еще как то далековато ...

Ответить
Обсуждаемое
Истории
Человек, который хотел исчезнуть: загадка жизни и смерти Питера Бергманна, которую не могут решить уже десять лет
В 2009 году тело мужчины нашли на пляже в Ирландии. С помощью камер удалось восстановить его последние дни, но остальное прошлое будто «стёрто».
Новости
В Британии героям телешоу предложат съесть своих питомцев
Британский телеканал Channel 4 запускает новое шоу, которое будет называться Meat the Family, призванное побудить людей задуматься об отказе от употребления мяса, заставляя выбирать между поеданием домашних животных и вегетарианством.
Новости
Фигуранты дела «Нового величия» порезали себе вены в зале суда
О состоянии пострадавших пока ничего не известно.
Популярное за три дня
Интернет и мемы
Ъ
Истории
Человек, который хотел исчезнуть: загадка жизни и смерти Питера Бергманна, которую не могут решить уже десять лет
В 2009 году тело мужчины нашли на пляже в Ирландии. С помощью камер удалось восстановить его последние дни, но остальное прошлое будто «стёрто».
Интернет и мемы
Penmanship Porn: коллекция видео с каллиграфией, приносящей эстетическое удовольствие
Пользователи Reddit уже семь лет записывают демонстрации своего красивого почерка, приравнивая ощущения от просмотра к «порно».
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovy", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "ccydt", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbk", "p2": "gnwc" } } } ]