Итак, первая лекция была от директора Физтех-школы прикладной математики и информатики (ФПМИ) Андрея Михайловича Райгородского по сложным сетям и графам 🔀
Простым языком сложные сети имеют очень много вершин, и при этом у них постоянно меняются ребра. Ярким примером служат социальные сети, которыми мы все так активно пользуемся))
Поясняю:
На лекции было много много математики, которую я сама-то толком не поняла 🫤 По словам Райгородского, меня «КОКНУЛИ» еще в начале лекции😂
Ну ладно, лекцию обещали выложить в общий доступ, так что будем нагонять…
Тем более, графы - ваще кайфовая тема (я считаю).
#about_ml
Простым языком сложные сети имеют очень много вершин, и при этом у них постоянно меняются ребра. Ярким примером служат социальные сети, которыми мы все так активно пользуемся))
Поясняю:
• Человек в соц. сети создает аккаунт - так появляется вершинка графа; • Затем, человек отправляет запросы в друзья другим людям. Некоторые из них принимают заявку и образуется связь между двумя вершинками, то бишь ребро; • Затем кому-то из них (или обоим ахах) может захотеться разорвать эту связь и они удаляют человека из друзей => ребро исчезает; • Итак постоянно повторяются пункты с 1 по 3 не останавливаясь 24/7. Поэтому, существует огромное количество акаунтов и их ребра постоянно пропадают и исчезают.На лекции было много много математики, которую я сама-то толком не поняла 🫤 По словам Райгородского, меня «КОКНУЛИ» еще в начале лекции😂
Ну ладно, лекцию обещали выложить в общий доступ, так что будем нагонять…
Тем более, графы - ваще кайфовая тема (я считаю).
#about_ml
👍2🔥1
Как мне кажется, на текущий момент самая интересная часть форума - хакатон (от него у меня больше всего эмоций 🥹). Коротко расскажу об этом мероприятии.
Мы группировались в команды по 1-4 человека и выбирали одну из 3-х предложенных задачек: позиционирование на территории кампуса МФТИ; распознавание магнитограмм; повышение разрешения аэродинамических полей. Наша команда четырех супер-девочек решила выбрать первую задачу😎
Суть задачи в чем. Есть робот, который прокатился зимой и весной в разное время суток по территории института и «зафиксировал» свои треки. В каждый такой трек (было всего 3) входят изображения с передней и задней камеры (моменты снимков с двух камер соответствуют друг другу), семантические данные с лидара, какие-то бортовые данные и текстовое описание каждой картинки. Интересно, что это описание формировалось путем прогона всех картинок через miniGPT-4. В итоге, положение робота определялось таким образом: берутся все картинки из первого трека, сравниваются со всеми картинками из второго трека и находятся пары наиболее схожих картинок. Ответ формируется из всех сочетаний трех треков (С из 3 по 2: всего 6 сочетаний). Также, организаторы предложили нам базовое решение, которое нужно было улучшать любыми способами😂
К сожалению, мы не додумались тюнить исходную модельку, поэтому мы работали только с ее выходными данными. Идея была в токенизации текста картинок и составлении таблицы сходств двух картинок. После чего, проверяем сходства из модельки с нашим решением и с вероятностью 0.8 в пользу модельки выбираем правильный ответ (только при условии, что ответы модельки и наши отличаются).
Опять же, у нас ушло много времени на запуск базового решения из-за технических особенностей сред. Поэтому, мы не успели реализовать до конца нашу идею и остались просто участниками, а не призерами😢
Но! Я не расстраиваюсь. Я получила огромный опыт в участии в подобных мероприятиях и дико горю желанием заниматься подобными вещами дальше!!! Думаю, в следующем году тоже поеду сюда с конкретной целью побеждать в хакатоне😁
#dvizh
Мы группировались в команды по 1-4 человека и выбирали одну из 3-х предложенных задачек: позиционирование на территории кампуса МФТИ; распознавание магнитограмм; повышение разрешения аэродинамических полей. Наша команда четырех супер-девочек решила выбрать первую задачу😎
Суть задачи в чем. Есть робот, который прокатился зимой и весной в разное время суток по территории института и «зафиксировал» свои треки. В каждый такой трек (было всего 3) входят изображения с передней и задней камеры (моменты снимков с двух камер соответствуют друг другу), семантические данные с лидара, какие-то бортовые данные и текстовое описание каждой картинки. Интересно, что это описание формировалось путем прогона всех картинок через miniGPT-4. В итоге, положение робота определялось таким образом: берутся все картинки из первого трека, сравниваются со всеми картинками из второго трека и находятся пары наиболее схожих картинок. Ответ формируется из всех сочетаний трех треков (С из 3 по 2: всего 6 сочетаний). Также, организаторы предложили нам базовое решение, которое нужно было улучшать любыми способами😂
К сожалению, мы не додумались тюнить исходную модельку, поэтому мы работали только с ее выходными данными. Идея была в токенизации текста картинок и составлении таблицы сходств двух картинок. После чего, проверяем сходства из модельки с нашим решением и с вероятностью 0.8 в пользу модельки выбираем правильный ответ (только при условии, что ответы модельки и наши отличаются).
Опять же, у нас ушло много времени на запуск базового решения из-за технических особенностей сред. Поэтому, мы не успели реализовать до конца нашу идею и остались просто участниками, а не призерами😢
Но! Я не расстраиваюсь. Я получила огромный опыт в участии в подобных мероприятиях и дико горю желанием заниматься подобными вещами дальше!!! Думаю, в следующем году тоже поеду сюда с конкретной целью побеждать в хакатоне😁
#dvizh
👍5
Немного подробнее с нашим решением можно ознакомиться в нашей презентации для защиты 👇
👍3
Ну вот, форум закончился 😢
Я бесконечно рада, что посетила это мероприятие и планирую дальше искать и кататься по подобным штукам. Получила для себя множество знаний, навыков, знакомств и океаны эмоций✨
#dvizh
Я бесконечно рада, что посетила это мероприятие и планирую дальше искать и кататься по подобным штукам. Получила для себя множество знаний, навыков, знакомств и океаны эмоций✨
#dvizh
👍5
Меня до сих пор не отпускают впечатления от форума😭
Особенно от лекций)) Большинство из них было, конечно, про RL - обучение с подкреплением. Но об этом расскажу позже.
Сейчас мне хочется поделиться темой, которая произвела на меня наиболее сильное впечатление - импульсные нейронные сети (ИНС). Их структура копирует принципы функционирования биологических нейронов. Это означает, что информация внутри них передается только за счет сигналов нейронов, называемых спайками. Функционирование разных нейронов никак явно между собой не синхронизировано. Если информация имеет числовой характер, то ее можно закодировать популяционно-частотным кодированием (повышение частоты порождения спайков определенной группой нейронов) и позиционным кодированием (задается порядок получения спайков на выходах сети). Если же информация имеет характер символов, то используется так же позиционное кодирование и пространственно-временное (информация задается не только определенной последовательностью импульсов во времени, но они еще и должны исходить от определенной группы нейронов).
Обучение ИНС происходит так же, как и у традиционных сетей - с помощью изменения синоптических весов. Однако из-за дискретности сети не получается применять градиентные методы обучения (метод распространения обратной ошибки). Хотя говорят, что существуют проекции традиционных методов обучения)
Основной подход в обучении - выявление корреляции в потоках импульсов. Первый этап: обучение без учителя - поиск корреляций во входном сигнале. Второй этап: обучение с учителем - поиск корреляций между входным импульсом и импульсом, кодирующим целевую переменную. Третий этап: обучение с подкреплением - поиск корреляций между входным сигналом, выходным сигналом и оценочным сигналом (возможно – с временной задержкой).
Автор лекции Михаил Киселев АО «лаборатория Касперского».
#about_ml
Особенно от лекций)) Большинство из них было, конечно, про RL - обучение с подкреплением. Но об этом расскажу позже.
Сейчас мне хочется поделиться темой, которая произвела на меня наиболее сильное впечатление - импульсные нейронные сети (ИНС). Их структура копирует принципы функционирования биологических нейронов. Это означает, что информация внутри них передается только за счет сигналов нейронов, называемых спайками. Функционирование разных нейронов никак явно между собой не синхронизировано. Если информация имеет числовой характер, то ее можно закодировать популяционно-частотным кодированием (повышение частоты порождения спайков определенной группой нейронов) и позиционным кодированием (задается порядок получения спайков на выходах сети). Если же информация имеет характер символов, то используется так же позиционное кодирование и пространственно-временное (информация задается не только определенной последовательностью импульсов во времени, но они еще и должны исходить от определенной группы нейронов).
Обучение ИНС происходит так же, как и у традиционных сетей - с помощью изменения синоптических весов. Однако из-за дискретности сети не получается применять градиентные методы обучения (метод распространения обратной ошибки). Хотя говорят, что существуют проекции традиционных методов обучения)
Основной подход в обучении - выявление корреляции в потоках импульсов. Первый этап: обучение без учителя - поиск корреляций во входном сигнале. Второй этап: обучение с учителем - поиск корреляций между входным импульсом и импульсом, кодирующим целевую переменную. Третий этап: обучение с подкреплением - поиск корреляций между входным сигналом, выходным сигналом и оценочным сигналом (возможно – с временной задержкой).
Автор лекции Михаил Киселев АО «лаборатория Касперского».
#about_ml
❤2
Кстати, хочу уточнить у Вас, товарищи, всем ли понятны термины обучения с подкреплением, учителем и без? Или все же стоит подробнее разобрать эту тему и расставить все точки над i?
Ваше мнение, товарищи
Anonymous Poll
18%
Все предельно ясно😎
53%
Общая идея понятна🧐
18%
Слышал только названия…😅
12%
Что?
Кстати, совсем забыла сказать
Неделю назад закончился первый этап отбора в ШАД. Я решила 4 задачи из 12, чего не хватило для прохода во второй этап😔
Ладно, на самом то деле я не сильно расстроилась, потому что знаю, что уделила недостаточно времени и внимания данному мероприятию🤷♀️
Вообще, сейчас мне больше всего хочется поступить в магистратуру центра когнитивного моделирования.
Не знаю, как закончить этот пост…
Сижу решаю ЛинАл)
#info
Неделю назад закончился первый этап отбора в ШАД. Я решила 4 задачи из 12, чего не хватило для прохода во второй этап😔
Ладно, на самом то деле я не сильно расстроилась, потому что знаю, что уделила недостаточно времени и внимания данному мероприятию🤷♀️
Вообще, сейчас мне больше всего хочется поступить в магистратуру центра когнитивного моделирования.
Не знаю, как закончить этот пост…
Сижу решаю ЛинАл)
#info
👍3❤2
Так, ну что
По результатам опроса видно, что половина из проголосовавших имеет представление о методах обучения нейронок.
Однако существенная часть плохо знакома с этой темой, либо вообще не знают что это за заверь такой🐸
Начнем потихоньку разбираться.
Что такое вообще это ваше обучение нейронной сети??? Это такой процесс работы программы, в ходе которого подбираются наиболее оптимальные значения весов сети для решения поставленной задачи.
Самое простое, на мой взгляд, это обучение с учителем. Для его реализации нам нужен какой-то набор данных, на которых у нас будет обучаться модель. Причем, все данные должны быть полностью размечены! Например, если мы хотим научить модель различать на фотографиях кошек и собак, нам нужны:
◦ фотографии с животными (можно без животных);
◦ соответствующие файлы с описанием названий распознаваемых объектов (кошка, собака) и их координатами расположения (не помню точно какие конкретно координаты. Полагаю, в случае выделения объекта в прямоугольник нужны координаты левого верхнего угла и правого нижнего)
Такой набор данных называется обучающей выборкой или датасетом. В разных источниках пишут о разном минимально необходимом количестве данных на один объект (лейбл). По крайней мере, на моем опыте обучения yolo v4 на 78 объектов было достаточно порядка 500 настоящих фотографий и ~2к синтетически сгенерированных изображений. Обычно рекомендуют брать 80% данных из обучающей выборки в качестве тренировочных данных (скармливаем модельке и фотографии, и их описание. Прямо тыкаем «тут изображена кошка, а здесь собака») и 20% тестовых данных (что-то вроде «контрольной по пройденному материалу»😌).
После предварительной подготовки датасета можно приступать к обучению модели. Самый популярный способ обучения - метод обратного распространения ошибки. Коротко о главном:
1. Объявляем первоначально рандомные значения весов нейронной сети;
2. Прогоняем данные через все слои и смотрим, что мы получили на выходе;
3. Зная «правильный ответ», можем посчитать на сколько ошиблась обучающаяся моделька. Вычисляем ошибку по определенной метрике;
4. Корректируем значения весов (чувствуете «обратное распространение»?);
5. Обучаем так на всех тренировочных данных;
6. Проводим «контрольную работу» для оценки эффективности модельки;
7. Пишем информацию об обучении на данной эпохе в логи🙃;
8. Повторяем п. 1 установленное кол-во эпох.
9. profit.
Важный момент! Моделька может переобучиться на подготовленном датасете. Она начнет выдавать «идеальные» ответы с вероятностью ~0.99999 для данных из обучающей выборки. Однако! На других данных ее ответы будут ужасными😖
Ниже прикреплю свою первую статью🥰 посвященную как раз обучению с учителем. Там более подробно описаны процессы подготовки обучающей выборки и запуска обучения модельки tensorflow.
#about_ml
По результатам опроса видно, что половина из проголосовавших имеет представление о методах обучения нейронок.
Однако существенная часть плохо знакома с этой темой, либо вообще не знают что это за заверь такой🐸
Начнем потихоньку разбираться.
Что такое вообще это ваше обучение нейронной сети??? Это такой процесс работы программы, в ходе которого подбираются наиболее оптимальные значения весов сети для решения поставленной задачи.
Самое простое, на мой взгляд, это обучение с учителем. Для его реализации нам нужен какой-то набор данных, на которых у нас будет обучаться модель. Причем, все данные должны быть полностью размечены! Например, если мы хотим научить модель различать на фотографиях кошек и собак, нам нужны:
◦ фотографии с животными (можно без животных);
◦ соответствующие файлы с описанием названий распознаваемых объектов (кошка, собака) и их координатами расположения (не помню точно какие конкретно координаты. Полагаю, в случае выделения объекта в прямоугольник нужны координаты левого верхнего угла и правого нижнего)
Такой набор данных называется обучающей выборкой или датасетом. В разных источниках пишут о разном минимально необходимом количестве данных на один объект (лейбл). По крайней мере, на моем опыте обучения yolo v4 на 78 объектов было достаточно порядка 500 настоящих фотографий и ~2к синтетически сгенерированных изображений. Обычно рекомендуют брать 80% данных из обучающей выборки в качестве тренировочных данных (скармливаем модельке и фотографии, и их описание. Прямо тыкаем «тут изображена кошка, а здесь собака») и 20% тестовых данных (что-то вроде «контрольной по пройденному материалу»😌).
После предварительной подготовки датасета можно приступать к обучению модели. Самый популярный способ обучения - метод обратного распространения ошибки. Коротко о главном:
1. Объявляем первоначально рандомные значения весов нейронной сети;
2. Прогоняем данные через все слои и смотрим, что мы получили на выходе;
3. Зная «правильный ответ», можем посчитать на сколько ошиблась обучающаяся моделька. Вычисляем ошибку по определенной метрике;
4. Корректируем значения весов (чувствуете «обратное распространение»?);
5. Обучаем так на всех тренировочных данных;
6. Проводим «контрольную работу» для оценки эффективности модельки;
7. Пишем информацию об обучении на данной эпохе в логи🙃;
8. Повторяем п. 1 установленное кол-во эпох.
9. profit.
Важный момент! Моделька может переобучиться на подготовленном датасете. Она начнет выдавать «идеальные» ответы с вероятностью ~0.99999 для данных из обучающей выборки. Однако! На других данных ее ответы будут ужасными😖
Ниже прикреплю свою первую статью🥰 посвященную как раз обучению с учителем. Там более подробно описаны процессы подготовки обучающей выборки и запуска обучения модельки tensorflow.
#about_ml
👍2❤1
Боже, только середина недели, а уже столько событий произошло🤯
Самое важное: я успешно прошла собеседование в магистратуру Центра когнитивного моделирования!!!!!!!!😭😭😭
Конечно, оно не освобождает от сдачи экзамена. Однако, я попала в приоритетный список на зачисление😎
Штош, бешено ботаем матешу, чтобы не оплошать😅
#info
Самое важное: я успешно прошла собеседование в магистратуру Центра когнитивного моделирования!!!!!!!!😭😭😭
Конечно, оно не освобождает от сдачи экзамена. Однако, я попала в приоритетный список на зачисление😎
Штош, бешено ботаем матешу, чтобы не оплошать😅
#info
👍7🔥5
Подготовка к диплому бурно продвигается, защита уже совсем скоро) Думаю, напишу о нем подробно, когда уже выступлю, т.к. вношу правки почти каждый день😅
А пока, давайте продолжим тему обучения нейронок.
Сегодня поговорим об обучении без учителя 🥸
Собирать большие размеченные данные зачастую нелегко. Это требует много ресурсов и времени. Поэтому придумали еще один способ обучать модели: без использования правильных ответов в конкретных ситуациях. Скорее, вообще без каких-либо ответов.
На вход алгоритму обучения поступает множество различных (не размеченных) данных, и его цель заключается в поиске закономерностей между ними. Отсюда вытекают следующие задачи, в которых используются данный метод:
◦ Классификация (или кластеризация): наиболее распространенная задача этого вида обучения. Алгоритм находит общие признаки входных данных, подбирает похожие и группирует их вместе. Примитивный пример - разделить фотографии, на которых изображены кошки и собаки (не путать с обучением с учителем, конкретно с object detection, где нейронки выделяют границы объектов на фотографии. Здесь алгоритм просто присваивает определенный класс изображению, не определяя границы самого объекта).
◦ Поиск ассоциаций: на основе какой-то группы объектов проводятся ассоциации с другими объектами. Задача часто используется в анализе покупок клиентов продуктовых магазинов. К примеру, если вы часто покупаете колбасы и готовый маринованный шашлык, то скорее всего приложение данного магазина предложит Вам стейки с вашей личной скидкой :) Была забавная история, когда молодая девушка покупала продукты и приложение магазина предложило ей товары для беременных со скидкой. На что отец девушки сильно рассердился и пожаловался компании за ложную информацию. Однако, в скоре действительно оказалось, что девушка была беременна. Отец принес свои извинения компании.
◦ Обнаружение аномалий: так же эта задача классифицируется как поиск выбросов в выборке данных. В качестве примера можно привести банковскую сферу - поиск мошеннических операций. Если считать, что все операции по картам происходят в радиусе одной страны, то операция, проведенная в Москве и Доминикане за один час могут быть подозрительными.
У библиотеки машинного обучения на питоне scikit-learn есть модули обучения без учителя. Сама я с ними не игралась. Тем не менее, мне кажется это очень интересно потестировать такой метод на своих данных и попробовать даже реализовать какую-нибудь полезную штуку.
#about_ml
А пока, давайте продолжим тему обучения нейронок.
Сегодня поговорим об обучении без учителя 🥸
Собирать большие размеченные данные зачастую нелегко. Это требует много ресурсов и времени. Поэтому придумали еще один способ обучать модели: без использования правильных ответов в конкретных ситуациях. Скорее, вообще без каких-либо ответов.
На вход алгоритму обучения поступает множество различных (не размеченных) данных, и его цель заключается в поиске закономерностей между ними. Отсюда вытекают следующие задачи, в которых используются данный метод:
◦ Классификация (или кластеризация): наиболее распространенная задача этого вида обучения. Алгоритм находит общие признаки входных данных, подбирает похожие и группирует их вместе. Примитивный пример - разделить фотографии, на которых изображены кошки и собаки (не путать с обучением с учителем, конкретно с object detection, где нейронки выделяют границы объектов на фотографии. Здесь алгоритм просто присваивает определенный класс изображению, не определяя границы самого объекта).
◦ Поиск ассоциаций: на основе какой-то группы объектов проводятся ассоциации с другими объектами. Задача часто используется в анализе покупок клиентов продуктовых магазинов. К примеру, если вы часто покупаете колбасы и готовый маринованный шашлык, то скорее всего приложение данного магазина предложит Вам стейки с вашей личной скидкой :) Была забавная история, когда молодая девушка покупала продукты и приложение магазина предложило ей товары для беременных со скидкой. На что отец девушки сильно рассердился и пожаловался компании за ложную информацию. Однако, в скоре действительно оказалось, что девушка была беременна. Отец принес свои извинения компании.
◦ Обнаружение аномалий: так же эта задача классифицируется как поиск выбросов в выборке данных. В качестве примера можно привести банковскую сферу - поиск мошеннических операций. Если считать, что все операции по картам происходят в радиусе одной страны, то операция, проведенная в Москве и Доминикане за один час могут быть подозрительными.
У библиотеки машинного обучения на питоне scikit-learn есть модули обучения без учителя. Сама я с ними не игралась. Тем не менее, мне кажется это очень интересно потестировать такой метод на своих данных и попробовать даже реализовать какую-нибудь полезную штуку.
#about_ml
🔥2
Насколько я понимаю, в этом году первый раз в аудитории вместе с нами будет находиться только комиссия. Даже немного обидно, хотелось выступать перед толпой гостей, однокурсников и преподавателей. Штош, наверное так даже меньше будут трястись руки и дрожать голос)))
🔥6
Как же хорошо, когда вопросы для подготовки к экзамену совпадают с темами постов в канале😁😁
Завершим трек постов про типы обучения сетей самым, на мой взгляд, интересным методом - обучение с подкреплением.
Для начала введем основные термины:
🔹Environment (среда) - инициализированные условия, в которых "находится" наша нейроночка и которые могут повлиять на ее работу (соответственно, сеть тоже может повлиять на свое окружение);
🔹Action (действие) - изменение среды под влиянием нейронной сети;
🔹State (состояние) - состояние среды в каждый момент времени;
🔹Reward (награда) - величина, которую получает нейронка от ее среды после взаимодействия с ней. Награда оценивает "правильность" действия;
🔹Agent (агент) - наша нейронная сеть, которая в установленной среде выполняет какие-то действия за определенную награду.
В общем, Reinforcement Learning (обучение с подкреплением) - метод обучения, при котором нейронка, находясь в обусловленном окружении, не знает что конкретно ей нужно делать, но при этом она может изменить состояние своей среды и получить ответ в характере горячо/холодно.
Классический пример для этой задачи - игра в пинг понг. Агенту отбивает мячик, за что он получает награду +1. Если же он промахивается, в этом случае награда будет -1 😢.
Есть несколько алгоритмов обучения с подкреплением:
🔸State-Action-Reward-State-Action (SARSA) - алгоритм, в основе которого лежит определенная стратегия выбора действий нейронной сети. К примеру, заранее определенная вероятность положительной наибольшей награды для каждого действия.
🔸Q-Learning - здесь изначально все действия считаются оптимальными. Алгоритм оптимизирует свои веса за счет максимизации оценки Q (упрощено: награда в перспективе). В таком подходе алгоритм будет более самостоятельным.
🔸Deep Q-Networks - использует нейронные сети для поиска оптимального значения в исследуемой среде. Выбор действия основывается на опыте положительных действий подключенной нейронки.
Сейчас RL довольно стремительно развивается в индустрии. Однако, этому препятствует достаточно много сложностей. Одна из проблем для большинства задач - постоянное изменение состояния среды вне зависимости от действий нейроночки. Например, изменение расположения машин, пешеходов и других объектов на дороге для обучающегося беспилотного транспорта.
Но смотреть на падающих роботов boston dynamics все равно смешно
#about_ml
Завершим трек постов про типы обучения сетей самым, на мой взгляд, интересным методом - обучение с подкреплением.
Для начала введем основные термины:
🔹Environment (среда) - инициализированные условия, в которых "находится" наша нейроночка и которые могут повлиять на ее работу (соответственно, сеть тоже может повлиять на свое окружение);
🔹Action (действие) - изменение среды под влиянием нейронной сети;
🔹State (состояние) - состояние среды в каждый момент времени;
🔹Reward (награда) - величина, которую получает нейронка от ее среды после взаимодействия с ней. Награда оценивает "правильность" действия;
🔹Agent (агент) - наша нейронная сеть, которая в установленной среде выполняет какие-то действия за определенную награду.
В общем, Reinforcement Learning (обучение с подкреплением) - метод обучения, при котором нейронка, находясь в обусловленном окружении, не знает что конкретно ей нужно делать, но при этом она может изменить состояние своей среды и получить ответ в характере горячо/холодно.
Классический пример для этой задачи - игра в пинг понг. Агенту отбивает мячик, за что он получает награду +1. Если же он промахивается, в этом случае награда будет -1 😢.
Есть несколько алгоритмов обучения с подкреплением:
🔸State-Action-Reward-State-Action (SARSA) - алгоритм, в основе которого лежит определенная стратегия выбора действий нейронной сети. К примеру, заранее определенная вероятность положительной наибольшей награды для каждого действия.
🔸Q-Learning - здесь изначально все действия считаются оптимальными. Алгоритм оптимизирует свои веса за счет максимизации оценки Q (упрощено: награда в перспективе). В таком подходе алгоритм будет более самостоятельным.
🔸Deep Q-Networks - использует нейронные сети для поиска оптимального значения в исследуемой среде. Выбор действия основывается на опыте положительных действий подключенной нейронки.
Сейчас RL довольно стремительно развивается в индустрии. Однако, этому препятствует достаточно много сложностей. Одна из проблем для большинства задач - постоянное изменение состояния среды вне зависимости от действий нейроночки. Например, изменение расположения машин, пешеходов и других объектов на дороге для обучающегося беспилотного транспорта.
Но смотреть на падающих роботов boston dynamics все равно смешно
#about_ml
👍2
Фуууххх, жестко отдыхала две недели, что аж забыла про канал😅😅 Тем не менее, я готова рассказать об итоговых результатов своего диплома!
Напоминаю, что тема работы звучит так: "Разработка и исследование метода грубого позиционирования БПЛА". На нашей кафедре уже проводились исследования и разработка точного метода позиционирования. Однако, для корректной и быстрой работы этого алгоритма необходимо на вход подавать маленькие окрестности территорий, размеры которых существенно отличаются от размеров изначальных карт местности. Было предложено разработать метод грубого позиционирования, на выходе которого получаются несколько вариантов наиболее вероятных окрестностей, где в текущий момент находится беспилотник.
⁉️Целью моей работы являются поиск и анализ наиболее популярных методов позиционирования и разработка метода, основанного на использовании одного из исследуемых алгоритмов. Также, были поставлены следующие задачи:
❓анализ существующих алгоритмов;
❓разработка алгоритмов предварительной обработки входных данных;
❓постановка условий эксперимента;
❓разработка алгоритмов проведения экспериментов;
❓разработка алгоритмов для визуализации и анализа результатов.
Объектами для сравнительного анализа были выбраны такие алгоритмы как: обучение нейронной сети, взаимная корреляция изображений, алгоритм масштабно-инвариантной трансформации признаков SIFT и афинный аналог SIFT (A-SIFT). Каждый из этих методов имеет свои недостатки: требуется обучение, чувствителен к преобразованиям изображений, либо затрачивает много времени на обработку больших изображений. Было принято решение протестировать и доработать алгоритмы корреляции и sift.
Разработанный метод представляет собой совокупность модулей, включающей в себя модуль предварительной обработки изображений, модуль сравнения изображений (он же модуль эксперимента) и модуль анализа результатов (отображение).
Первой из основных функций была реализована «предварительная обработка входных данных». Функция отвечает за обработку входных данных и бортовых датчиках. Из алгоритмов реализованы:
⭕️ вырез меньшего изображения из большего;
⭕️ поворот изображения на угол θ.
#about_ml
Напоминаю, что тема работы звучит так: "Разработка и исследование метода грубого позиционирования БПЛА". На нашей кафедре уже проводились исследования и разработка точного метода позиционирования. Однако, для корректной и быстрой работы этого алгоритма необходимо на вход подавать маленькие окрестности территорий, размеры которых существенно отличаются от размеров изначальных карт местности. Было предложено разработать метод грубого позиционирования, на выходе которого получаются несколько вариантов наиболее вероятных окрестностей, где в текущий момент находится беспилотник.
⁉️Целью моей работы являются поиск и анализ наиболее популярных методов позиционирования и разработка метода, основанного на использовании одного из исследуемых алгоритмов. Также, были поставлены следующие задачи:
❓анализ существующих алгоритмов;
❓разработка алгоритмов предварительной обработки входных данных;
❓постановка условий эксперимента;
❓разработка алгоритмов проведения экспериментов;
❓разработка алгоритмов для визуализации и анализа результатов.
Объектами для сравнительного анализа были выбраны такие алгоритмы как: обучение нейронной сети, взаимная корреляция изображений, алгоритм масштабно-инвариантной трансформации признаков SIFT и афинный аналог SIFT (A-SIFT). Каждый из этих методов имеет свои недостатки: требуется обучение, чувствителен к преобразованиям изображений, либо затрачивает много времени на обработку больших изображений. Было принято решение протестировать и доработать алгоритмы корреляции и sift.
Разработанный метод представляет собой совокупность модулей, включающей в себя модуль предварительной обработки изображений, модуль сравнения изображений (он же модуль эксперимента) и модуль анализа результатов (отображение).
Первой из основных функций была реализована «предварительная обработка входных данных». Функция отвечает за обработку входных данных и бортовых датчиках. Из алгоритмов реализованы:
⭕️ вырез меньшего изображения из большего;
⭕️ поворот изображения на угол θ.
#about_ml
👍1
Затем, было поставлено 3 эксперимента на зависимость вероятности предсказывания правильных координат от угла поворота изображений, поступающих с камеры б/а. Общие условия эксперимента были поставлены следующим образом: задается максимальный угол поворота изображений-шаблонов. Затем, начиная с 0 градусов на каждом значении угла поворота вырезается случайным образом заданное количество шаблонов. Все шаблоны обрабатываются алгоритмом позиционирования, на выходе которого получается черно-белое изображение, где белый пиксель – наиболее вероятное место расположения, а черный – менее вероятное. На каждом полученном аналоге тепловой карты соответствующем своему шаблону находятся экстремумы. По входному пороговому количеству экстремумов принято решение, что если «правильные» координаты шаблона попадают в список полученных экстремумов, то метод определил их корректно. В результате эксперимента строится график зависимости количества правильно предсказанных координат от угла поворота входных изображений.
1️⃣В первом эксперименте тестировался алгоритм взаимной корреляции изображений. Приведу пример на фото ниже тепловой карты для одного изображения шаблона и красными точками отмечены найденные пики тепловой карты. На результирующем графике можно заметить, что вероятность правильного предсказания координат резко падает уже при повороте на 3 градуса. Как и ожидалось, метод корреляции не дал хороших результатов в поставленных условиях.
2️⃣Во втором эксперименте тестировался алгоритм сравнения характеристик распределения векторов. Карта местности дробится на более маленькие изображения-оригиналы с определенным шагом наложения. Затем, каждый оригинал сравнивается с шаблоном и на полученных характерных точках сифта и афинного сифта строятся вектора. Пример работы для одной итерации также представлен на фото ниже (как и все последующие в принципе).
Затем вычисляется коэффициент вариации для каждой итерации алгоритма. Была выдвинута гипотеза, что по его значению можно судить о месторасположении на карте. Представлены тепловые карты мат. ожидания, среднего квадратического отклонения и коэффициента вариации по длинам и углам отклонения от нормали векторов для обоих алгоритмов.
По полученным результатам видно, что данный алгоритм дает вероятность предсказания не более 50%. Результаты значительно лучше метода корреляции, однако все равно недостаточно хороши для использования.
3️⃣И последним экспериментом тестировался метод анализа параллельных отрезков. Эксперимент проводился аналогично второму, однако вместо коэффициента вариации использовалось количество параллельных отрезков между двумя изображениями. Ниже приведены две итерации для одного и того же шаблона. Зеленым цветом подсвечиваются вектора, которые были учтены в качестве выбранной метрики, а красным те-, которые не вошли в ее число. Также, были подобраны наиболее оптимальные значения размера оригинального изображения и шага наложения срезов. Оригинал и шаблоны должны иметь одинаковые размеры, а шаг наложения должен быть в пределах одной четверти изображения шаблона.
По результирующим графикам видно, что от 5 градусов поворота метод дает вероятность предсказания порядка 40-60%, что уже является приемлемыми показаниями относительно других методов.
Хочу еще уточнить: чтобы эксперимент не был примитивным, карта местности вырезана из Yandex карт, а все изображения-шаблоны вырезались из Google карт. Хотя в алгоритмах обрабатываются черно-белые изображения, их пиксели все равно не будут идентичны друг другу.
✅Итоговый метод основан на сравнении параллельных отрезков, в основе которого лежит алгоритм A-SIFT. Разработанный метод позволит погасить погрешность бортовых датчиков при нормализации поворота изображений и даст удовлетворительные результаты при позиционировании беспилотного летательного аппарата на местности. В перспективе разработки метода планируется:
❗️улучшать показания предсказания алгоритма;
❗️протестировать алгоритм на искаженных фотографиях;
❗️разработать алгоритм корректировки масштаба и перспективы изображений-шаблонов;
❗️и протестировать на реальных данных.
1️⃣В первом эксперименте тестировался алгоритм взаимной корреляции изображений. Приведу пример на фото ниже тепловой карты для одного изображения шаблона и красными точками отмечены найденные пики тепловой карты. На результирующем графике можно заметить, что вероятность правильного предсказания координат резко падает уже при повороте на 3 градуса. Как и ожидалось, метод корреляции не дал хороших результатов в поставленных условиях.
2️⃣Во втором эксперименте тестировался алгоритм сравнения характеристик распределения векторов. Карта местности дробится на более маленькие изображения-оригиналы с определенным шагом наложения. Затем, каждый оригинал сравнивается с шаблоном и на полученных характерных точках сифта и афинного сифта строятся вектора. Пример работы для одной итерации также представлен на фото ниже (как и все последующие в принципе).
Затем вычисляется коэффициент вариации для каждой итерации алгоритма. Была выдвинута гипотеза, что по его значению можно судить о месторасположении на карте. Представлены тепловые карты мат. ожидания, среднего квадратического отклонения и коэффициента вариации по длинам и углам отклонения от нормали векторов для обоих алгоритмов.
По полученным результатам видно, что данный алгоритм дает вероятность предсказания не более 50%. Результаты значительно лучше метода корреляции, однако все равно недостаточно хороши для использования.
3️⃣И последним экспериментом тестировался метод анализа параллельных отрезков. Эксперимент проводился аналогично второму, однако вместо коэффициента вариации использовалось количество параллельных отрезков между двумя изображениями. Ниже приведены две итерации для одного и того же шаблона. Зеленым цветом подсвечиваются вектора, которые были учтены в качестве выбранной метрики, а красным те-, которые не вошли в ее число. Также, были подобраны наиболее оптимальные значения размера оригинального изображения и шага наложения срезов. Оригинал и шаблоны должны иметь одинаковые размеры, а шаг наложения должен быть в пределах одной четверти изображения шаблона.
По результирующим графикам видно, что от 5 градусов поворота метод дает вероятность предсказания порядка 40-60%, что уже является приемлемыми показаниями относительно других методов.
Хочу еще уточнить: чтобы эксперимент не был примитивным, карта местности вырезана из Yandex карт, а все изображения-шаблоны вырезались из Google карт. Хотя в алгоритмах обрабатываются черно-белые изображения, их пиксели все равно не будут идентичны друг другу.
✅Итоговый метод основан на сравнении параллельных отрезков, в основе которого лежит алгоритм A-SIFT. Разработанный метод позволит погасить погрешность бортовых датчиков при нормализации поворота изображений и даст удовлетворительные результаты при позиционировании беспилотного летательного аппарата на местности. В перспективе разработки метода планируется:
❗️улучшать показания предсказания алгоритма;
❗️протестировать алгоритм на искаженных фотографиях;
❗️разработать алгоритм корректировки масштаба и перспективы изображений-шаблонов;
❗️и протестировать на реальных данных.
👍2