Search
Write a publication
Pull to refresh
27
0.1
Григорьев Андрей @Pochemuk

Пользователь

Send message

Что не так с обучением с подкреплением (Reinforcement Learning)?

Reading time21 min
Views56K


Еще в начале 2018 года вышла статья Deep Reinforcement Learning Doesn't Work Yet ("Обучение с подкреплением пока не работает"). Основная претензия которой сводилась к тому, что современные алгоритмы обучения с подкреплением требуют для решения задачи примерно столько же времени, как и обычный случайный поиск.


Изменилось ли что-то с того времени? Нет.


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

Читать дальше →

Обучение с подкреплением для самых маленьких

Reading time8 min
Views76K
В данной статье разобран принцип работы метода машинного обучения на примере физической системы. Алгоритм поиска оптимальной стратегии реализован в коде на Python с помощью метода .

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

Задача


С помощью метода «обучение с подкреплением» необходимо научить тележку отъезжать от стены на максимальное расстояние. Награда представлена в виде значения изменения расстояния от стены до тележки при движении. Измерение расстояния D от стены производится дальномером. Движение в данном примере возможно только при определенном смещении «привода», состоящего из двух стрел S1 и S2. Стрелы представляют собой два сервопривода с направляющими, соединенными в виде «колена». Каждый сервопривод в данном примере может поворачиваться на 6 одинаковых углов. Модель имеет возможность совершить 4 действия, которые представляют собой управление двумя сервоприводами, действие 0 и 1 поворачивают первый сервопривод на определенный угол по часовой и против часовой стрелке, действие 2 и 3 поворачивают второй сервопривод на определенный угол по часовой и против часовой стрелке. На рисунке 1 показан рабочий прототип тележки.


Рис. 1. Прототип тележки для экспериментов с машинным обучением
Читать дальше

Нейронные сети для начинающих. Часть 2

Reading time14 min
Views587K


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

Нейронные сети для начинающих. Часть 1

Reading time7 min
Views1.6M
image

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

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

Белый шум рисует черный квадрат

Reading time3 min
Views11K
Любой аналитик, в начале своей работы, проходит ненавистный этап определения идентификации параметров распределения. Потом, с наработкой опыта, для него согласование полученных остаточных разбросов означает, что какой-то этап, в анализе Big Data, пройден и можно двигаться дальше. Уже нет необходимости проверять сотни моделей на соответствие различным уравнениям регрессии, искать отрезки с переходными процессами, составлять композицию моделей. Терзать себя сомнениями: «Может есть, еще какая-нибудь модель, которая больше подходит?»

Подумал: «А что, если пойти от противного. Посмотреть, что может сделать белый шум. Может ли белый шум создать, что-то, что наше внимание сопоставит со значимым объектом из нашего опыта?»


Рис. Белый шум (файл взят из сети, размер 448х235).

По этому вопросу рассуждал так:

  1. Какова вероятность, что появится горизонтальные и вертикальные линии, заметной длины?
  2. Если они могут появиться, то какова вероятность, что они совпадут своим началом по одной из координат и составят прямоугольную фигуру?

Дальше по тексту, объясню, как эти задачи связались с анализом Big Data.
Читать дальше →

SQL Index Manager — бесплатный тул для дефрагментации и обслуживания индексов

Reading time10 min
Views17K
Много лет работая SQL Server DBA и занимаясь то администрированием серверов, то оптимизацией производительности. В общем, захотелось в свободное время сделать что-то полезное для Вселенной и коллег по цеху. Так в итоге получился небольшой опенсорс тул по обслуживанию индексов для SQL Server и Azure.

SQL Index Manager

Читать дальше →

Криптографический алгоритм «Кузнечик»: просто о сложном

Reading time14 min
Views101K
В данной статье будет подробно рассмотрен алгоритм блочного шифрования, определенный в ГОСТ Р 34.12-2015 как «Кузнечик». На чем он основывается, какова математика блочных криптоалгоритмов, а так же как реализуется данный алгоритм в java.

Кто, как, когда и зачем разработал данный алгоритм останется за рамками статьи, так как в данном случае нас это мало интересует, разве что:

КУЗНЕЧИК = КУЗнецов, НЕЧаев И Компания.



Так как криптография в первую очередь основана на математике, то чтобы дальнейшее объяснение не вызвало уймы вопросов сначала стоит разобрать базовые понятия и математические функции, на которых строится данный алгоритм.
Читать дальше →

Настольная ролевая тактика

Reading time22 min
Views13K
Доброго дня.

Сегодня речь пойдёт о настольно-ролевой системе собственной разработки, на создание которой вдохновили как консольные восточные игры, так и знакомство с западными настольно-ролевыми гигантами. Последние вблизи оказались не такими уж сказочными, как хотелось — громоздкие в плане правил, с несколько стерильными героями и предметами, перенасыщенные бухгалтерией.
Так почему бы не написать что-то своё? Со Знаками Зодиака и Эйдолонами. Примерно так оно всё и завертелось. Около пяти-шести лет ушло на то, чтобы из нескольких разрозненных страниц идея развилась в 256-страничную книгу.



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

Вы все еще ставите Windows 2008? Я тоже, и вот почему

Reading time5 min
Views118K


Уже в январе 2020 года заканчивается поддержка Windows 2008 R2. Сегодня я хочу поделиться подборкой субъективных причин, по которым многие (и я тоже) до сих пор проводят новые инсталляции этой старушки.


Ценителей, ностальгирующих и ненавистников — прошу под кат.

Читать дальше →

Пилим свою службу Windows – руководство для «не настоящих программистов»

Reading time6 min
Views87K


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


Статья будет полезна тем, кто, как и я — «программист не настоящий».

Читать дальше →

The Pirate Bay за 15 лет так и не смогли убить

Reading time11 min
Views106K

Интернет продолжает развиваться с небывалой скоростью, но одно в нём остаётся неизменным — это The Pirate Bay





Как-то в 2009-м году, в тихом уголке читального зала моей школы, я загрузил свой побитый жизнью ноутбук, при этом следя за тем, чтобы никто не подглядывал мне через плечо. Я знал, что рискованно заниматься этим, используя школьную сеть WiFi, но это казалось всё равно безопаснее делать там, чем дома. Всего-то понадобилось зайти на один сайт и запустить одну программу на компьютере. В итоге я мог заполучить практически любой цифровой контент совершенно бесплатно.

Мне не было известно, что сайт, который я использовал – The Pirate Bay – окажется вовлечённым в серьёзные юридические неурядицы из-за миллионов таких же, как я, пользователей. Я также совсем не ожидал, что десять лет спустя я буду использовать тот же самый сайт, будто ничего этого не было.

Сжатие информации без потерь. Часть вторая

Reading time10 min
Views26K
Первая часть.

Во второй части будут рассмотрены арифметическое кодирование и преобразование Барроуза-Уилера (последнее часто незаслуженно забывают во многих статьях). Я не буду рассматривать семейство алгоритмов LZ, так как про них на хабре уже были неплохие статьи.

Итак, начнем с арифметического кодирования — на мой взгляд, одного из самых изящных (с точки зрения идеи) методов сжатия.
Читать дальше →

Сжатие информации без потерь. Часть первая

Reading time9 min
Views80K
Доброго времени суток.
Сегодня я хочу коснуться темы сжатия данных без потерь. Несмотря на то, что на хабре уже были статьи, посвященные некоторым алгоритмам, мне захотелось рассказать об этом чуть более подробно.
Я постараюсь давать как математическое описание, так и описание в обычном виде, для того, чтобы каждый мог найти для себя что-то интересное.

В этой статье я коснусь фундаментальных моментов сжатия и основных типов алгоритмов.
Читать дальше →

Сисадмин в неайтишной компании. Невыносимая тяжесть бытия?

Reading time14 min
Views67K
Быть системным администратором в небольшой компании не из IT-сферы — то ещё приключение. Руководитель тебя считает дармоедом, сотрудники в плохое время — божеством сети и хардвера, в хорошее — любителем пива и танчиков, бухгалтерия — приложением к 1С, и вся компания целиком — драйвером для успешной работы принтеров. Пока ты грезишь о хорошей Циске, а не о свистке-коробочке Йоты для организации корпоративной точки доступа, они уже методично готовят новую пакость: вирус из домашней коллекции, кривые руки, намотанные на провод (или наоборот), игру на рабочем сервере, нелицензионный Photoshop и закачку всего нового сериала, чтобы по дороге в пробке посмотреть. Ах да, ещё просили починить электрочайник. Тут не до Kubernetes и DevOps — выжить бы, сохраниться и выйти из этого рейда боссом. Ой, тьфу ты, выполнить KPI и не сдохнуть. Аллегорично? Да нет, так оно и есть.

Читать дальше →

Чем искать уязвимости веб-приложений: сравниваем восемь популярных сканеров

Reading time14 min
Views103K
Сканеры веб-приложений — довольно популярная сегодня категория софта. Есть платные сканеры, есть бесплатные. У каждого из них свой набор параметров и уязвимостей, возможных для обнаружения. Некоторые ограничиваются только теми, что публикуются в OWASP Top Ten (Open Web Application Security Project), некоторые идут в своем black-box тестировании гораздо дальше.



В этом посте мы собрали восемь популярных сканеров, рассмотрели их подробнее и попробовали в деле. В качестве тренировочных мишеней выбрали независимые точки на двух платформах (.NET и php): premium.pgabank.com и php.testsparker.com.
Читать дальше →

Об очень шпионском методе аутентификации

Reading time12 min
Views12K

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


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


Но как тогда им опознать своего товарища по штабу?


КДПВ


TL;DR — изобретаем механизм аутентификации пользователей с помощью стеганографии для воображаемого трехсимвольного агентства несуществующей страны.

Читать дальше →

Эксперимент: Как замаскировать использование Tor для обхода блокировок

Reading time5 min
Views19K


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

Ученые из университетов Carnegie Mellon, Стенфордского университета и SRI International провели эксперимент, в ходе которого разработали специальный сервис для маскирования использования Tor – одного из наиболее популярных инструментов для обхода блокировок. Мы представляем вам рассказ о проделанной исследователями работе.
Читать дальше →

Эволюция одного алгоритма

Reading time17 min
Views8K

Некоторое время назад мой коллега попросил помочь ему с одной проблемой. Проблему я ему решил, но кроме того, мне показалось, что на решении этой проблемы можно объяснить несколько алгоритмов и приёмов программирования. А также показать ускорение времени выполнения алгоритма с 25 сек до 40 мс.

Читать дальше →

Нейронная сеть с SoftMax слоем на c#

Reading time5 min
Views66K
Привет, в прошлой статье я рассказал про алгоритм обратного распространения ошибки и привел реализацию, не зависящую от функции ошибки и от функции активации нейрона. Было показано несколько простых примеров подмены этих самых параметров: минимизация квадрата Евклидова расстояния и логарифмического правдоподобия для сигмоидной функции и гиперболического тангенса. Данный пост будет логическим продолжение прошлого, в котором я рассмотрю немного нестандартный пример, а именно функцию активации Softmax для минимизации перекрестной энтропии. Эта модель актуальна при задаче классификации, когда необходимо получить на выходе нейросети вероятности принадлежности входного образа одному из не пересекающихся классов. Очевидно, что суммарный выход сети по всем нейронам выходного слоя должен равняться единице (так же как и для выходных образов обучающей выборки). Однако не достаточно просто нормализировать выходы, а нужно заставить сеть моделировать вероятностное распределение, и обучать ее именно этому. Кстати, сейчас на coursera.org идёт курс по нейросетям, именно он помог углубиться в понимание софтмакса, иначе я продолжал бы использовать сторонние реализации.

Читать дальше →

Три неочевидных примера использования шаблонизаторов в backend-е

Reading time6 min
Views9.6K

С одной стороны, предмет действительно был квадратным. C другой стороны он был круглым. Но с третьей стороны, с которой должен быть треугольник, предмет вышел кривой и косой.


— Алешенька идет на совещанку? — в дверь просунулась Леночкина заинтересованная физиономия.
— Алешенька на совещанку не идет. Алешенька пишет статью.
— О кубиках?
— Каких еще кубиках? — я опустил глаза, в руках и правда был злосчастный кубик. То есть шарик. То есть ромбик.
— Не о кубиках! И не о шариках. О шаблонах.
— Я им так и скажу! Шаблон, ах. — Леночка уже бежала дальше по коридору.


"О шаблонах. Даже о трех разных шаблонах". Точнее, о трех причинах использовать шаблоны в серверном коде. И ни одна из этих причин не будет про HTML.


В примерах я использовал синтаксис Mustache, в силу лаконичного синтаксиса и наличия реализаций для всего, что движется. Mustache практически не позволяет себе вольностей в отличии от, например .Net Razor, который позволяет кодировать внутри шаблона, подавая тем самым плохой пример некрепким духом разработчикам.


Примеры кода будут на python. Реализация Mustache под пайтон называется pystache.


Итак, три причины впустить шаблоны в свою жизнь свой код.

Читать дальше →

Information

Rating
5,347-th
Location
Коломна, Москва и Московская обл., Россия
Date of birth
Registered
Activity