Pull to refresh
0
0
Вячеслав @SalyVo

User

NLP. Основы. Техники. Саморазвитие. Часть 1

Reading time 12 min
Views 64K
Content AI corporate blog Machine learning *Natural Language Processing *

Привет! Меня зовут Иван Смуров, и я возглавляю группу исследований в области NLP в компании ABBYY. О том, чем занимается наша группа, можно почитать здесь. Недавно я читал лекцию про Natural Language Processing (NLP) в Школе глубокого обучения – это кружок при Физтех-школе прикладной математики и информатики МФТИ для старшеклассников, интересующихся программированием и математикой. Возможно, тезисы моей лекции кому-то пригодятся, поэтому поделюсь ими с Хабром.

Поскольку за один раз все объять не получится, разделим статью на две части. Сегодня я расскажу о том, как нейросети (или глубокое обучение) используются в NLP. Во второй части статьи мы сконцентрируемся на одной из самых распространенных задач NLP — задаче извлечения именованных сущностей (Named-entity recognition, NER) и разберем подробно архитектуры ее решений.


Читать дальше →
Total votes 53: ↑51 and ↓2 +49
Comments 11

Математика для искусственных нейронных сетей для новичков, часть 3 — градиентный спуск продолжение

Reading time 6 min
Views 54K
Python *Machine learning *
Часть 2 — градиентный спуск начало

В предыдущей части я начал разбор алгоритма оптимизации под названием градиентный спуск. Предыдущая статья оборвалась на писании варианта алгоритма под названием пакетный градиентный спуск.

Существует и другая версия алгоритма — стохастический градиентный спуск. Стохастический = случайный.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 2

Математика для искусственных нейронных сетей для новичков, часть 2 — градиентный спуск

Reading time 8 min
Views 125K
Python *Machine learning *
Часть 1 — линейная регрессия

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

Градиентный спуск


В прошлой части был показан пример вычисления параметров линейной регрессии с помощью метода наименьших квадратов. Параметры были найдены аналитически — , где — псевдообратная матрица. Это решение наглядное, точное и короткое. Но есть проблема, которую можно решить численно. Градиентный спуск — метод численной оптимизации, который может быть использован во многих алгоритмах, где требуется найти экстремум функции — нейронные сети, SVM, k-средних, регрессии. Однако проще его воспринять в чистом виде (и проще модифицировать).
Читать дальше →
Total votes 27: ↑26 and ↓1 +25
Comments 18

Математика для искусственных нейронных сетей для новичков, часть 1 — линейная регрессия

Reading time 8 min
Views 143K
Python *Machine learning *
Sandbox
Оглавление

Часть 1 — линейная регрессия
Часть 2 — градиентный спуск
Часть 3 — градиентный спуск продолжение

Введение


Этим постом я начну цикл «Нейронные сети для новичков». Он посвящен искусственным нейронным сетям (внезапно). Целью цикла является объяснение данной математической модели. Часто после прочтения подобных статей у меня оставалось чувство недосказанности, недопонимания — НС по-прежнему оставались «черным ящиком» — в общих чертах известно, как они устроены, известно, что делают, известны входные и выходные данные. Но тем не менее полное, всестороннее понимание отсутствует. А современные библиотеки с очень приятными и удобными абстракциями только усиливают ощущение «черного ящика». Не могу сказать, что это однозначно плохо, но и разобраться в используемых инструментах тоже никогда не поздно. Поэтому моей первичной целью является подробное объяснение устройства нейронных сетей так, чтобы абсолютно ни у кого не осталось вопросов об их устройстве; так, чтобы НС не казались волшебством. Так как это не математический трактат, я ограничусь описанием нескольких методов простым языком (но не исключая формул, конечно же), предоставляя поясняющие иллюстрации и примеры.

Цикл рассчитан на базовый ВУЗовский математический уровень читающего. Код будет написан на Python3.5 с numpy 1.11. Список остальных вспомогательных библиотек будет в конце каждого поста. Абсолютно все будет написано с нуля. В качестве подопытного выбрана база MNIST — это черно-белые, центрированные изображения рукописных цифр размером 28*28 пикселей. По-умолчанию, 60000 изображений отмечены для обучения, а 10000 для тестирования. В примерах я не буду изменять распределения по-умолчанию.
Читать дальше →
Total votes 54: ↑47 and ↓7 +40
Comments 43

Зоопарк трансформеров: большой обзор моделей от BERT до Alpaca

Level of difficulty Hard
Reading time 59 min
Views 5.2K
Just AI corporate blog Machine learning *Artificial Intelligence Natural Language Processing *
Review

Авторский обзор 90+ нейросетевых моделей на основе Transformer для тех, кто не успевает читать статьи, но хочет быть в курсе ситуации и понимать технические детали идущей революции ИИ.

Читать далее
Total votes 28: ↑28 and ↓0 +28
Comments 15

Про злые угри и чёрные точки и добрые сальные нити (не путайте их)

Reading time 8 min
Views 65K
Гельтек-Медика corporate blog Popular science Health
Чёрные точки = что-то не так с обменом в коже. Это устья волосяных фолликулов, закупоренные окислившейся смесью отмерших частиц эпидермиса и кожного сала. Чёрными они становятся из-за контакта сала с кислородом и последующего окисления. Чаще всего пациенты не воспринимают чёрные точки как что-то серьёзное, ищут себе простую косметическую линейку, которая им за неделю поможет, и очень расстраиваются, когда выясняется, что это не так.

image
Так выглядит механизм образования комедонов изнутри

Потому что это симптом, а проблема начинается чуть раньше. Например, с ДНК или неправильного питания. Обычно чёрные точки появляются из-за избыточной секреции сальных желёз, закупорки фолликулов секретом сальных желёз и кератиноцитами или колонизации фолликулов Propionibacterium acnes (этот анаэроб, кстати, входит в состав нормальной микрофлоры человека (сейчас cutibacterium acnes)). Упрощённо говоря, когда в волосяной фолликул набивается всякое типа мёртвой кожи, сала и грязи, начинается закупорка пор изнутри. А гигиена и косметика действуют снаружи. И сразу развею пару мифов: это не из-за сладкого и не из-за молока.

А вот сальные нити — обязательный и полезный элемент нашей кожи. Выглядят они иногда страшнее, но решение очень и очень простое.
Читать дальше →
Total votes 77: ↑56 and ↓21 +35
Comments 24

Обзор градиентных методов в задачах математической оптимизации

Reading time 11 min
Views 89K
Mathematics *Machine learning *
Sandbox

Предисловие


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



Читать дальше →
Total votes 76: ↑76 and ↓0 +76
Comments 26

Применяем градиентный спуск на реальной Земле

Reading time 4 min
Views 8.6K
Working with 3D-graphics *Algorithms *Machine learning *
Translation
Обычная аналогия для объяснения градиентного спуска такая: человек застрял в горах во время сильного тумана и должен спуститься вниз. Самый логичный способ — осмотреть поверхность вокруг и медленно проложить путь, следуя вниз по склону.

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

Но вот важный вопрос: насколько хорошо градиентный спуск выполняется на реальной Земле?
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 9

Введение в процедурную анимацию: инверсная кинематика

Reading time 16 min
Views 28K
Game development *Mathematics *Unity3D *
Translation

Часть 4. Введение в градиентный спуск


Эта часть представляет собой теоретическое введение в инверсную кинематику и содержит программное решение, основанное на градиентном спуске (gradient descent). Эта статья не будет всеобъемлющим руководством по этой теме, это всего лишь общее введение. В следующей части мы покажем настоящую реализацию этого алгоритма на C# в Unity.

Серия состоит из следующих частей (части 1-3 представлены в предыдущем посте):

Читать дальше →
Total votes 54: ↑54 and ↓0 +54
Comments 5

Простейшая нейросеть: еще раз и подробнее

Reading time 10 min
Views 44K
Programming *Mathematics *Concurrent computing *Machine learning *
Review

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

Читать далее
Total votes 97: ↑96 and ↓1 +95
Comments 26

Модель полиномиальной регрессии

Reading time 3 min
Views 45K
Mathematics *
Tutorial

Выражаясь простым языком, модель регрессии в математической статистике строится на основе известных данных, в роли которых выступают пары чисел. Количество таких пар заранее определено. Если представить себе, что первое число в паре – это значение координаты $x$, а второе – $y$, то множество таких пар чисел можно представить на плоскости в декартовой системе координат в виде множества точек. Данные пары чисел берутся не случайно. На практике, как правило, второе число зависит от первого. Построить регрессию – это значит подобрать такую линию (точнее, функцию), которая как можно точнее приближает к себе (аппроксимирует) множество вышесказанных точек.


Читать дальше →
Total votes 20: ↑15 and ↓5 +10
Comments 9

Почему инициализировать веса нейронной сети одинаковыми значениями (например, нулями) – это плохая идея

Reading time 11 min
Views 11K
Algorithms *Machine learning *Artificial Intelligence
Sandbox

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

Кто хочет быстрый и короткий ответ на этот вопрос, вот он: если инициализировать веса нулями, то нейросеть может не обучаться совсем или обучаться плохо.

Кто хочет более развёрнуто узнать, что значит «плохо», может просто перемотать к заключению в конце статьи.

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

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 11

Неявные нейронные представления с периодическими функциями активации

Reading time 12 min
Views 5.2K
ГК ЛАНИТ corporate blog Data Mining *Algorithms *Machine learning *Artificial Intelligence
Знакомые с нейронными сетями читатели скорее всего слышали про термин «функция активации». Такие варианты функции активации, как сигмоида, гиперболический тангенс (TanH) и ReLU (линейный выпрямитель), активно применяются в нейронных сетях и широко известны энтузиастам, занимающимся экспериментами с нейронными архитектурами. Исследователи нейронных сетей не останавливаются на достигнутом и подбирают альтернативы, позволяющие расширить границы возможностей. Один из вариантов подхода, предложенного в 2020 году, показывает выдающиеся результаты по сравнению с классическими функциями активации. Про впечатляющие отличия и пойдет речь в этой статье: на основе материала Vincent Sitzmann, Julien N. P. Martel, Alexander Bergman, David B. Lindell, Gordon Wetzstein  и кода на нескольких наглядных примерах будет продемонстрировано превосходство нового метода.  

Total votes 34: ↑34 and ↓0 +34
Comments 12

Объясняем на пальцах принцип действия оптимизаторов для нейронных сетей: основные алгоритмы, и зачем они нужны

Reading time 10 min
Views 14K
SkillFactory corporate blog Algorithms *Mathematics *Machine learning *Reading room
Translation

Оптимизаторы — важный компонент архитектуры нейронных сетей. Они играют важную роль в процессе тренировки нейронных сетей, помогая им делать всё более точные прогнозы. Специально к старту нового потока расширенного курса по машинному и глубокому обучению, делимся с вами простым описанием основных методик, используемых оптимизаторами градиентного спуска, такими как SGD, Momentum, RMSProp, Adam и др. 

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 9

Методы оптимизации нейронных сетей

Reading time 17 min
Views 193K
Algorithms *Mathematics *Machine learning *

В подавляющем большинстве источников информации о нейронных сетях под «а теперь давайте обучим нашу сеть» понимается «скормим целевую функцию оптимизатору» лишь с минимальной настройкой скорости обучения. Иногда говорится, что обновлять веса сети можно не только стохастическим градиентным спуском, но безо всякого объяснения, чем же примечательны другие алгоритмы и что означают загадочные \inline \beta и \inline \gamma в их параметрах. Даже преподаватели на курсах машинного обучения зачастую не заостряют на этом внимание. Я бы хотел исправить недостаток информации в рунете о различных оптимизаторах, которые могут встретиться вам в современных пакетах машинного обучения. Надеюсь, моя статья будет полезна людям, которые хотят углубить своё понимание машинного обучения или даже изобрести что-то своё.


image


Под катом много картинок, в том числе анимированных gif.

Читать дальше →
Total votes 78: ↑78 and ↓0 +78
Comments 74

Метрики в задачах машинного обучения

Reading time 9 min
Views 523K
Open Data Science corporate blog Python *Data Mining *Mathematics *Machine learning *

Привет, Хабр!



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


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


Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Comments 9

Разметка данных в машинном обучении: процесс, разновидности и рекомендации

Reading time 14 min
Views 13K
Data Mining *Image processing *Big Data *Machine learning *Crowdsourcing
Translation

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

В этой статье мы расскажем, что такое разметка данных, как она работает, о типах разметки данных и о рекомендациях, позволяющих сделать этот процесс беспроблемным.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Comments 0

Перцептрон на numpy

Reading time 3 min
Views 11K
Python *Machine learning *
Sandbox

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

Читать далее
Total votes 19: ↑17 and ↓2 +15
Comments 22

Вычислительная социальная наука, что это и почему это важно

Reading time 6 min
Views 2.7K
Machine learning *Research and forecasts in IT *Popular science Social networks and communities The future is here
Sandbox
✏️ Technotext 2022

Цифровизация гуманитарных наук затрагивает всё большие области познания, в том числе и социологические науки, в связи с этим, появляются и развиваются новые направления исследований, получившие название вычислительные социальные науки (computational social science).

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 5

Синаптические веса в нейронных сетях – просто и доступно

Reading time 6 min
Views 17K
Artificial Intelligence
Sandbox

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

В статье рассказывается о сути синаптических весов на простом наглядном примере.

Читать далее
Total votes 10: ↑8 and ↓2 +6
Comments 4

Information

Rating
Does not participate
Registered
Activity