{"id":2175,"url":"\/distributions\/2175\/click?bit=1&hash=803b6e1bcbd9dfc4ba9456fda887a878c80d24df8d3a575913b14876e18923a5","title":"TJ \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f 10 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u2014\u00a0\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0430\u043d\u043e\u043d\u0441 \u0441 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438","buttonText":"\u0427\u0438\u0442\u0430\u0442\u044c","imageUuid":"d1d355d8-93a3-5140-aeae-14b03046b760","isPaidAndBannersEnabled":false}
Наука
Mary Novo

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

Ивану 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.

0
51 комментарий
Написать комментарий...
Павел Калмыков

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

Ответить
Развернуть ветку
Егор Пахомов

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

Ответить
Развернуть ветку
13 комментариев
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
1 комментарий
Nikita

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Ямщиков

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Andrey Chankin

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

Ответить
Развернуть ветку
Universaw

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

Ответить
Развернуть ветку
Andrey Syschikov

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

Ответить
Развернуть ветку
6 комментариев
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Nikita

😨

Ответить
Развернуть ветку
Егор Пахомов

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

Ответить
Развернуть ветку
7 комментариев
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Andrey Parashin

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

Ответить
Развернуть ветку
Пелагея Рогова

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

Ответить
Развернуть ветку
ivan

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

Студенты из Государственного университета управления научили нейросеть распознавать человеческие эмоции😄😢
Ответить
Развернуть ветку
Rashid Jey

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Qwwerty Tre

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

Ответить
Развернуть ветку
Stan Majors

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

Ответить
Развернуть ветку
Stan Majors

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

Ответить
Развернуть ветку
Галина Ушакова

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

Ответить
Развернуть ветку
Artem Solar

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

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

Ответить
Развернуть ветку
Читать все 51 комментарий
null