Сообщество - Искусственный интеллект

Искусственный интеллект

5 080 постов 11 493 подписчика

Популярные теги в сообществе:

68

Нейросети. Часть 2. Как работают нейросети

Всем привет. Это вторая часть обзора работы нейросетей. Если интересно, то можно для начала почитать первую часть, А если лень читать, то можно посмотреть видео, в котором все три части сразу.


Принцип работы искусственных нейросетей инженеры не выдумали с нуля. Что бы заново не изобретать велосипед, программисты решили взять метод опробованный природой. Нагло слизать принцип работы мозга у живых существ. Искусственные нейроны в виртуальности работают ровно так же как и нейроны в головном мозге в реальной жизни. Давайте разбираться.

Посмотрите на рисунок, это не печеночный сосальщик, как многие подумали. Это схематичное изображение нейрона. Нейрон – это клетка нашего с вами организма, например. Те самые нервы которые «не восстанавливаются». Принцип его работы, как и всё гениальное довольно прост. На входы нейрона, которые называются дендритами, приходят сигналы с других нейронов. Эти сигналы обрабатываются в теле нейрона, которое называется «сома». Обработанный сигнал передаётся на выход нейрона, который называется «аксон». Вот и всё. У каждого нейрона как естественного, так и искусственного может быть множество входов, но только один выход. Место соединения дендрита и аксона называется синапс. Нейроны и дендриты принято называет серым веществом, а аксоны – белым. Если сравнивать с компьютером, то серое вещество это процессор, жесткий диск и, например, видеокарта. А белое вещество это провода и электропроводящие цепи на материнской плате. Известно что не только количество нейронов (серого вещества) влияют на интеллектуальные способности особи, но и количество синапсов, а так же взаимное расположение синапсов относительно друг друга. Т.е. способ организации нейронов между собой.


Вот мы плавно подошли к термину из заголовка - нейросеть. Множество нейронов соединённых между собой и называют нейронной сетью. Если мы написали программу, в которой сымитировали работу биологического нейрона, то это будет искусственная нейросеть. Большинство средств разработки классических приложений, не имеют каких либо специальных методов для работы с нейросетями. И нейрон написанный на языке c# может выглядеть например вот так:

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


А теперь давайте разберём строение и работу искусственного нейрона. У него как мы уже знаем есть вход, он может быть один или их может быть несколько. На вход приходит некий сигнал, от другого нейрона или из датчика это не важно. Сигнал представляет собой некое число, чаще всего это число должно имеет значения от 0 до 1. Для этого все значения, которые прилетают на входы предварительно нормируют. Это означает что все они будут причёсаны под одну гребёнку. Допустим на нейрон управления шарниром робота, приходят несколько значений. В том числе градус поворота предыдущего шарнира α=31, и масса топлива m=57. Нормировать мы можем следующим образом. Нужно знать максимальное значение угла поворота шарнира, и максимальный запас топлива. Предположим, они будут αMax=45, mMax=80. Мы можем придумать очень простое правило нормирования, разделив текущее значение на максимальное. И получим на первом входе In1=31/45=0.69, а на втором In2=57/80=0.71. Заметьте, что значения на входах при таком способе нормировки никогда не будут выходить за пределы от нуля до единицы. Если нам не известны максимальные значения, мы можем просто единицу разделить на сумму входящего значения и единички, и так же получим нормированное значение от нуля до одного. Оба этих варианта работают для входящих значений больше либо равных нулю. Говоря в общем, можно юзать нейросети и не нормируя входящие параметры, но если вы точно уверены, что всё будет работать и так. Если не уверены, или лень над этим думать – нормируйте.

Далее нормированный сигнал умножается на очень волшебное число, которое чаще всего называют весом данного входа. Мы к нему неоднократно вернёмся, ибо он является главным механизмом обучения нейросети. Итак мы перемножаем значения входов на веса каждого входа. Опять же для примера возьмём вес на первом входе 0,5, на втором 0,25. Получаем


In1*W1=0.69*0.5=0.35, In2*W2=0.71*0.25=0.18.


Эти два значения придут в сому нейрона, или как её ещё называют функция активации. А дальше функция активации уже будет решать что делать с этими числами. Самый простой пример функции активации – это шаговая или пороговая функция. Если сумма всех значений пришедших с каждого входа, больше чем некое число, то на аксон (выход нейрона) улетит единица, в противном случае нолик. Давайте от балды назначим шаговую функцию с порогом 0,5. Это значит что если сумма со всех входов будет больше чем 0,5, то на выходе будет 1. Рассчитаем для нашего примера.


0,35+0,18=0,53

Это больше чем 0,5, результат работы этого нейрона будет равен 1. Если вы только начали изучать нейросети, то вам более чем достаточно данной функции активации. Она очень проста и её выполнение процессор производит очень быстро. Но в большинстве прикладных нейросетей используют знаменитую сигмоиду. Она всем хороша, и нормирует и сглаживает, и даже работает с отрицательными значениями на входах. Единственный минус, она довольно трудозатратна для компа, особенно при высоких значениях суммы со всех входов. Вот вам ссылочка на сигмоиду и другие функции активации.


Так же я не сказал, что чаще всего на один из входов приходит одно особенное значение, всегда равное единичке помноженной на вес этого входа. Это значение называется нейрон смещения. Для чего оно немного позже.


В целом это всё. Придумайте процедуру для соединений нейронов, придумайте схему их соединения и получите нейросеть.


Простейшая нейросеть может иметь на пример вот такой вид:

Зелёные – входные нейроны, голубые нейроны скрытого слоя, жёлтый выходной нейрон. Количество нейронов для каждой конкретной нейросети разумеется будет меняться. У каждого из нейронов любого слоя буду свои входы и выходы. Количество входов и функция активации, выбирается из конкретной задачи.


Давайте на примере рассмотрим, на мой взгляд, самую простую и понятную нейросеть. Она будет определять какую цифру мы написали. Я могу нарисовать двойку разными способами, и каждый из вас поймет, что это именно двойка, но вот для компьютера работающего только на классических алгоритмах, понять это почти непосильная задача. Поэтому мы и воспользуемся нейросетью. Каждая картинка имеет разрешение 16х16 пикселей, значит всего у нас будет 256 пикселей. Это число и будет ровняться количеству входных нейронов в нашу нейросеть. Сигнал от каждого пикселя будет связан со входным нейроном. Если пиксель будет закрашен, то результат работы входного нейрона будет единичка, в противном случае нолик.


Давайте для примера возьмём три случайных пикселя. В двух из них цвета нет, значит входные нейроны этих пикселей выдадут нолики, а один из пикселей закрашен, значит результат работы входного нейрона будет единичка. Ещё раз замечу, я случайно выбрал три входа, общее их количество 256, с каждого пикселя на каждый из 256-ти входных нейронов придёт или единичка или нолик.

.


Далее добавим 10 нейронов следующего слоя, для них выходы входного слоя превратятся во входы. Получим 10 нейронов у каждого из которых 256 входов. Каждый из добавленных нейронов будет пытаться найти свою цифру. Нейрон №0 попытается определить 0 на картинке, нейрон №1, будет отвечать за цифру один, и так далее.

Посмотрите внимательно на организацию нейросети. Каждый входной нейрон (зелёный кружок) передаёт одинаковый сигнал, на каждый вход для нейрона следующего слоя (синий кружок). Но у каждого из синих нейронов будет разный вес на его конкретном входе. Например, на первом входе у первого нейрона может быть вес 0,1, а на первом входе второго нейрона вес может быть 0,9. Следовательно, каждый из десяти нейронов после переработки сигналов входа и переваривания их в функции активации, выдаст свой уникальный результат, при совершенно одинаковых значениях на каждом из 256-ти на входных нейронах.


И ещё раз. Функция активации у каждого нейрона будет одинаковая, а вот веса на входах будут разные. Напомню что вес входа это число, на которое умножается сигнал со входа. Т.е. отличаться нейроны будут исключительно этими весами. На этом этапе, встаёт вполне разумный вопрос. Как изначально заполнить веса нейронов? А вот как. Веса для каждого входа каждого нейрона заполним от балды. Вы не ослышались, мы просто заполним их случайными числами, и это не мой бзик, поверьте так делают и настоящие гуру мира нейросетей.


Всё, наша нейросеть готова.


Далее мы с вами будем показывать нейросети картинки с разными цифрами. Она будет перемножать суммировать и бог знает, что ещё делать с циферками пришедшими на входы, и каждый из десяти нейронов выплюнет в результате некое число. Мы найдём среди них самое большое (не забываем что в данном случае шаговая функции активации уже не сработает). Номер нейрона выдавший самое большое число, а следовательно победившего в этой схватке, и будет ответом на вопрос «какое число на картинке». Ведь помните у нас, как раз 10 нейронов, и каждый отвечает за некое число. Скорее всего ответ будет неверный.

В конкретном примере, максимальный результат выдал нейрон отвечающий за цифру один, хотя должен был победить нейрон 2. В случае если нейросеть не узнала число, мы правим веса на нейроне победителе, чтобы он не лез куда его не просят, а так же на том нейроне который должен был победить, чтобы он стал поактивней. Как именно мы правим веса нейронов немного позже. Так мы будем нянчится с нейросетью довольно долго. Ну или просто сбагрим её другой программе, которая знает ответы на вопросы и сделает всё за пару секунд, в любом случае рано или поздно мы обучим нашу нейросеть. И для проверки покажем ей такой рисунок, которого она никогда не видела ранее в процессе обучения, на котором тоже изображена циферка. Если нейросеть угадала, то она считается обученной, если нет, отправляем все веса в утиль и учим заново.


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


Продолжение, в котором мы приступим к практике, следует. Ну или просто посмотрите ролик)))

Показать полностью 8

Ответ на пост «Этого человека не существует»1

StyleGAN2: улучшенная нейросеть для генерации лиц людей


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


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


Протестировать работу нейронной сети - thispersondoesnotexist.com

В StyleGAN2 обновили архитектуру модели и методы обучения, чтобы минимизировать количество артефактов на генерируемых изображениях. Артефакты — это части изображения, которые снижают его реалистичность. Примером артефакта является размытость части изображения.


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


StyleGAN


Предыдущей state-of-the-art архитектурой для генерации изображений являлась StyleGAN модель. Отличительной чертой модели является архитектура генератора. Генератор принимает на вход промежуточное представление входного объекта. Слои генератора проходят через адаптивную instance нормализацию (AdaIN). Несмотря на высокие результаты по сравнению с конкурирующими подходами, оригинальная StyleGAN генерирует изображения с заметными артефактами.


StyleGAN2


В генераторе StyleGAN2 были убраны излишние операции в начале, вынесли суммирование bias термов за пределы блока стиля. Обновленная архитектура позволяет заменить instance нормализацию (AdaIN) на “демодуляцию”. Операция демодуляции применяется к весам каждого сверточного слоя.

Сравнение составных частей StyleGAN (a-b) и StyleGAN2 (c-d)


Оценка работы модели


Для сравнения качества сгенерированных изображений исследователи использовали стандартные метрики: Frechet inception distance (FID) и Precision and Recall (P&R). Ниже видно, что внесенные в архитектуру StyleGAN изменения (B-F) улучшают качество изображений.

Сравнение результатов базовой StyleGAN и ее модификаций на датасетах FFHQ и LSUN Car


Источник

Научная работа

Github

Показать полностью 3 1
297

Как ленивые математики уничтожают привычный нам мир

Помните, как в детстве мы по три раза за неделю заявляли учителю алгебры: «Зачем мы это учим?! В жизни всё равно не пригодится!»? Как выяснилось, пригодиться бы могло, а некоторым уже пригодилось. А те, кто увлекался большой математикой, сегодня на наших глазах меняют мир.


Львиную долю современных высоких технологий можно описать всего двумя словами: «математическая модель». А кто-то обходится и одним – «нейросети», подразумевая под этим словом многоуровневое глубокое обучение и программно-аппаратный комплекс для реализации соответствующей математической модели.


Сегодня нейросети буквально меняют привычный нам мир. Можно банально вспомнить про подножку уходящего поезда, но дело в том, что он ещё не ушёл. Мир меняется настолько быстро, что нужно учиться не использовать новые технологии, а жить среди них, находя своё место. Актёры, писатели, бухгалтеры, охранники, музыканты, композиторы, звукорежиссёры, вахтёры, маркетологи, аналитики, инженеры по охране труда – под пятой математиков большинство из нас может внезапно оказаться под угрозой вымирания. Вот несколько конкретных примеров.


Уши


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


AIVA, например, создаёт мелодии в соответствии с заданными критериями пользователя. Сервис активно развивается, и в ближайшем обновлении пользователи сами смогут загружать композиции для её обучения, но зачастую требует денег за подписку.


Ещё большие аппетиты у проекта с российскими корнями Endel. Эта нейросеть генерирует музыку для расслабления, медитации или сна настолько успешно, что её создатель Олег Ставицкий уже пополнил портфолио контрактом с Warner Music.


Для тех, кто не гонится за шедеврами, подойдёт нейросеть попроще. Amper умеет выдавать на гора 30-секундную композицию в любом из предложенных стилей и не повторяться. В версии Pro получится редактировать этот результат как полностью, так и частично, если вам, например, не понравилось вступление.


Самые простые (читай: быстрые) нейросети вообще работают с midi-файлами. Например, MuseNet от илонмасковского Open AI создаёт треки, ориентируясь на творчество классиков от Моцарта и Битлз до Lady Gaga и всё тех же Queen. Нужны 4 минуты уникального музыкального фона? Пожалуйста. Без регистрации и SMS.


Работают нейросети и с чистыми звуками. Нейросети от NVidia уже чистят аудиозаписи от посторонних шумов, а алгоритм от учёных из CSAIL небезызвестного MIT, наоборот, добавляет foley-шумы в соответствии с происходящим в кадре. Стоит отметить и нейросеть NSynth (аббревиатура от Neural Synthesizer), которая в состоянии генерировать новые звуки, используя звучание уже существующих вещей и явлений. Другими словами, теперь у любого космического монстра в фильмах или компьютерных играх будет свой уникальный голос. А профессиональные композиторы, музыканты и звуковики могут подвинуться.


Глаза


Когда мы говорим о машинном зрении, на ум первыми приходит распознавание лиц. В 2019 году самым известным игроком на рынке стал российский Macroscop, со своим модулем Complete серьёзно потеснивший неповоротливых ребят из NtechLab с их FindFace и VisionLabs с комплексом Luna. Complete может распознавать до 100 лиц в кадре, уведомлять по почте или в мессенджерах о появлении персоны из «чёрного списка», приветливо открывать двери в подъезд, ворота и шлагбаумы. В общем, распознавание лиц стало синонимом автоматизации, угрожающей рабочим местам охранников, вахтёров и прочих милиционеров. Кстати, именно Complete сейчас используется в знаменитых «Пятёрочках» для борьбы с шоплифтерами. И именно система распознавания лиц в ближайшем будущем заменит кондукторов и контроллёров в общественном транспорте. К примеру, в Перми, если верить обещаниям местной власти, это произойдёт уже в следующем году. Программа платная, но проверить всё же получится – тестовую версию, кажется, ещё можно получить бесплатно.


Распознавание лиц используется и в знаменитой DeepFake – нейросети, ушедшей под радары из-за волны негодования. Погорев на поддельных порнороликах со звёздами, сегодня эта технология используется в музейном деле, заменяя экскурсоводов, и в мобильных приложениях, состязаясь в остроумии с карикатуристами.


Здесь-то мы и подошли вплотную к пост-смертным концертам звёзд и молодым уиллсмитам в фильмах. «Благодаря» нейросетям и CGI профессия актёра может стать совсем не нужной. Мало того, такие сети как, например, Veravoice или Voices by Headliner позволяют озвучивать фальшивых актёров знакомыми потребителю голосами. Признайтесь, вам ведь уже звонил Дима Билан с предложением купить бижутерию? То-то и оно.


Руки


Стоит напрячься и представителям других профессий. С каждым днём технологии машинного зрения и нейросети выполняют всё больше полезных функций. Математики и разработчики, например, создали «стукача», который способен штрафовать тех работников, которые не носят защитные приспособления, положенные по технике безопасности. Официально называемая «детектором отсутствия касок» программа вселяет в петровичей страх там, где штраф за отсутствие каски грозит штрафами самой компании-работодателю.


Не пригодятся руки и в автомобилях. Подавляющее большинство компаний сегодня нацелено на создание беспилотного транспорта. На слуху, конечно, в первую очередь такси, но кроме таксистов стоит напрячься и профессиональным дальнобойщикам. И не надо думать, что речь о загнивающем Западе – в России и Казахстане уже вовсю развернулись испытания беспилотников от КамАЗа и Ralient.


Вместо вывода


Нейросети от ленивых математиков пишут сценарии для фильмов и картины, обрабатывают изображения и создают новые, ищут акул в море, контролируют работу кассиров и офисного планктона. ROSS на базе системы Watson от IBM уже работает адвокатом и брокером. Вера занимается хедхантингом и автодозвонами. Julie заменила секретаря. Скрипящих зубами гуманитариев скоро вытеснят даже из-за свободных касс «Макдоналдса». И только одни математики довольно почёсывают ленивые пузья – это их мир, это их век, где физики однозначно победили лириков в их вечной борьбе за место под солнцем.


Отсюда

Показать полностью
68

Робот с ИИ из России рисует картины

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

Своим двум подписчикам я обещал совершить революцию и вот пожалуйста, признаюсь: занимаюсь этим с 2008 года, упорото упорно развивая технологию. Уже готов блок "художественного мышления" и исполнительные механизмы для рисования.


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

Видео с таймлапсом работы рисования размещено первым постом в моём Инстаграм: @lyanguzov.ru там же фото творческих работ робота-художника. И в Фейсбук есть.


Изначально он рисовал портреты, но всё развивается, и вот уже взяв старую картонку, гелевую пасту и фрезерный станок - получаем пейзаж.

Я потратил на это 11 лет своей жизни, а мой гараж больше напоминает музей ущербной робототехники с пыльными прототипами, замысловатыми механизмами дозирования и нанесения краски, барабанными механизмами с шприцами, насосами, сервоприводами...


Я показал рисунки на бумаге, но холст, кисти и масло - это реальность.


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


Поддержите, Пикабушники.

Показать полностью 3
36

ИИ научился играть в динозаврика из Chrome

В браузере Google Chrome есть игра с динозавриком. Когда нет интернета, браузер показывает такое:

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


Недавно в Chrome добавили возможность поиграть в эту игру даже с интернетом: вбейте в адрес chrome://dino


Программист из Австралии по имени Эван (на Ютубе — CodeBullet) написал нейросеть, которая сама играет в эту игру, и выложил об этом видео:

Спойлер: в конце ИИ просто рвёт игру на части.


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


Создание игры

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


Пол и прыгучий персонаж. Чтобы попробовать первую версию игры как можно быстрее, Эван не рисует динозавра, а делает вместо него прыгающий прямоугольник. С поверхностью то же самое: простая линия вместо дороги с перспективой и песком в случайных местах. Единственное, что пока можно в игре — прыгать прямоугольником на месте:

Кстати, если вы обратите внимание на игру в Chrome, то заметите, что хотя динозаврик (по ощущениям) бежит по земле, на самом деле его координата X на экране не меняется. Можно представить, что это не динозаврик бежит, а кактусы летят на него со всё более высокой скоростью. Иллюзия!


Движение и препятствия. На следующем шаге Эван делает так, чтобы на динозаврика двигались кактусы. Но кактусы тоже рисовать долго, поэтому снова берём прямоугольники. Сначала делаем их маленькими и смотрим, что происходит:

Пока всё хорошо: персонаж прыгает, прямоугольники двигаются. Можно сделать следующий шаг — добавить кактусы разной высоты и ширины, как в оригинальной игре. И снова это всё ещё прямоугольники:

Смерть от кактусов. Последнее, что делает Эван — добавляет в игру условие, что как только персонаж коснулся кактуса, то умирает. Это делается просто проверкой пересечения границ одного и второго объекта. Коснулся кактуса — всё исчезло:

Теперь всё готово для первой версии, можно поиграть и проверить, всё ли там происходит как надо.


Эван не начал программировать сразу всю игру с динозаврами, графикой и красивыми кактусами. Вместо этого он сделал макет игры и физику; потом убедился, что всё работает; и только после этого заменил прямоугольники на динозавра и кактусы, а линию на полу — на дорогу с песком. Всё это он просто вырезал из игры и вставил в свой проект:

Красные прямоугольники — разметка границ объектов для определения столкновений. Позже они пропадут.


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


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

Нейросеть

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


Если очень коротко, то это работает так:


- делают первое поколение сети;


- запускают её в игру и смотрят результат;


- те версии первого поколения, которые показали наилучшие результаты или дольше всех играли, остаются, а остальные убираются;


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


- новых везунчиков оставляют, остальных убирают, и всё повторяется до тех пор, пока ИИ не научится полностью проходить игру.


Первая версия ИИ, которую сделал Эван, просто прыгала случайным образом, и, если повезёт, то перепрыгивала кактусы:

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


У первых нескольких поколений ИИ была примитивная тактика: просто прыгаешь и надеешься, что интервал прыжков совпадёт с расстояниями между кактусами. Это не сработало, поэтому к седьмому поколению нейросеть нашла взаимосвязь между расстоянием до препятствия, расстоянием между препятствием и моментом, когда надо подпрыгивать:

Цветные линии вверху — это связи внутри нейросети в упрощённом виде. Видно, как одни параметры начинают влиять на другие.


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


Интересный момент: так как Эван использует самообучающуюся нейросеть, то мы можем заметить, как в некоторых моментах динозаврик раздваивается или распадается на множество частей.

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

25-е поколение — здесь появилась реакция на низко летящего птеродактиля (в авторском тексте значится утка): нужно пригнуться.

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

43-е поколение — визуально отличие не сильно заметно, но некоторые линии в связях стали толще. Это значит, что одни коэффициенты и параметры стали сильнее влиять на другие.


Финал

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


Есть и другие

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


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


Источник

Показать полностью 13 1
37

Нейросеть - определитель птиц по фотографии

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


Ссылка на нее вот: https://teachablemachine.withgoogle.com

Я давно думал над тем, чтобы сделать определитель птиц на базе нейросетей, но в силу отсутствия специальных знаний, не мог эту идею реализовать. Теперь, когда ребята из Гугла дали возможность обучать нейросети без навыков программирования, моя мечта становится реализуемой.

Нейросеть - определитель птиц по фотографии

Интерфейс такой


Всего-то и нужно сделать, что скормить нейросети пару десятков тысяч изображений птиц, делов-то!


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


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


Таких фоток мало, потому что кто будет выкладывать такое?


Собственно, я хочу обратиться к Силе Пикабу, ребята, если у вас есть фотки птиц, где вы точно знаете, что это за птица, но не стали бы выкладывать это в интернет, отправьте эти фотке мне, плиз. Или, если вы знаете, где достать такие фотографии, подскажите. Мне нужно ОЧЕНЬ много фотографий.
Фотки можно кидать на почту: kolodkinmv@yandex.ru

На данный момент я использовал 3500 фотографий, нейросеть знает 30 видов птиц, поиграться с ней можно тут: https://teachablemachine.withgoogle.com/models/Td7tfvks/


Список известных видов видно там же. Определяет она иногда хорошо, иногда не очень. Причины: использовано маловато изображений и маловато именно "не очень качественных" изображений.


В ближайшем будущем хочу добавить всех воробьинообразных, потому что их больше всего, потом возьмусь за остальные.


Комментарии, критика и пожелания приветствуются :)

Показать полностью 1

BodyPix: сегментация людей в реальном времени с TensorFlow.js

BodyPix — это нейросеть для сегментации людей и частей тела в реальном времени в браузере. С дефолтными настройками модель сегментирует людей и части тел с кадровой частотой 25 на 2018 15-inch MacBook Pro и 21 кадр в секунду на IPhone X. Проверить работу демо-версии в браузере можно по ссылке. Исходный код модели доступен в Github репозитории.


В последнем обновлении библиотеки BodyPix 2. стали доступны сегментация нескольких людей сразу, новое API, квантизация весов и поддержка изображений разного размера. Помимо этого, точность модели стала выше в сравнении с ResNet50.


Сегментация человека в BodyPix


В компьютерном зрении задача сегментации изображения относится к группировке пикселей изображения в семантические участки объектов. BodyPix модель обучили не только сегментировать людей, но и распознавать 24 части тела. Другими словами, нейросеть классифицирует пиксели изображения на две категории:


1. Пиксели, на которых изображен человек;

2. Пиксели, на которых изображен фон


Для задачи сегментации человека модель выдает для каждого пикселя вероятность того, что это пиксель человека. Аналогичный процесс происходит для сегментации 24 частей тела. Для каждого пикселя модель выдает номер класса части тела. Пиксели, которые не являются частью тела, отмечаются отдельным классом.


Что внутри модели


Сама модель BodyPix в демо-версии — это MobileNet. Исследователи дополнительно обучили ResNet50 и получили качество лучше, но остановились на MobileNet из-за более высокой скорости работы в бразуере.

Архитектура обученной MobileNet


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

Демонстрация работы модели


Источник (на русском)

Более полный источник (на английском)

Проверить действие демо-версии нейросети (потребуется включение камеры)

Github

Показать полностью 2

Нейросеть анимирует персонажей в игровой среде

Исследователи из University of Edinburgh обучили нейросетевую модель анимировать игровых персонажей. Нейросеть предсказывает, как персонаж должен взаимодействовать со средой, чтобы выполнить какое-то действие. Среди действий — такие, как сидеть, стоять, передвигаться, избегать препятствия и поднимать предметы. Архитектура модели базируется на Neural State Machine.


Даже простые задачи, как сидеть на стуле, сложно моделировать с помощью обучения с учителем. Сложность заключается в том, что такая задача предполагает комплексное планирование и умение ориентироваться в среде. Neural State Machine моделирует взаимодействие игрока в сменяющихся сценах.

Нейросеть принимает на вход целевую локацию и тип действия, который необходимо совершить. На выходе модель выдает последовательность шагов для совершения целевого действия. Чтобы персонажи адаптировались к специфике геометрии среды, исследователи включили в модель метод для аугментации данных. Это позволяет случайным образом сменять 3D геометрию среды, при этом сохраняя контекст изначального действия. Благодаря такому подходу нейросеть обучается действовать в отличных друг от друга средах.


Что внутри нейросети


Архитектура системы состоит из gating сети и сети для предсказания движений. Gating сеть принимает на вход подвыборку параметров текущего состояния и вектор целевого действия. На выходе gating сеть отдает коэффициенты для блендинга предыдущих действий, которые используются для предсказания следующего действия. Сеть для предсказания движений принимает на вход переменные контроля позы и траектории персонажа и выход gating сети. Затем модель предсказывает параметры следующего действия.

Визуализация составных частей нейросети


Проверка работы модели


Исследователи сравнили Neural State Machine с MLP, PFNN, MANN, LSTM и Auto-LSTM архитектурами. Ниже видно, что NSM выдает более точные результаты, чем остальные подходы.

Средняя ошибка позиции (PE — Positional Error) и средняя ошибка вращения (RE — Rotation Error) для конкурирующих подходов


Источник

Github

Показать полностью 2 1
Отличная работа, все прочитано!