Pull to refresh
  • by relevance
  • by date
  • by rating

Распознавание DGA доменов. А что если нейронные сети?

Digital Security corporate blogInformation SecurityMachine learning

Всем привет!


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

Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views12.8K
Comments 8

О новых успехах противостояния (СР УВЧ!*)

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



Не идеально, но по мне — очень классно. 3D шутер, который играется в реальном времени — это впервые.
А теперь чуть-чуть теории
Total votes 45: ↑45 and ↓0 +45
Views15.8K
Comments 47

Объяснение нейронных машин Тьюринга

AlgorithmsMathematicsMachine learning
Translation
Я обнаружил, что подавляющее большинство онлайновой информации об исследованиях в области искусственного интеллекта делится на две категории: первая рассказывает о достижениях непрофессиональной аудитории, а вторая — другим исследователям. Я не нашёл хорошего ресурса для людей с техническим образованием, которые не знакомы с более продвинутыми концепциями и ищут информацию для восполнения пробелов. Это моя попытка заполнить данную пустоту, предоставив доступные, но в то же время (относительно) подробные объяснения. Здесь я объясню научную статью Грейвса, Уэйна и Данихейки (2014) о нейронных машинах Тьюринга (NTM).

Изначально я не собирался рассказывать об этой статье, но я никак не мог понять другую интересную статью, о которой собирался рассказать. В ней как раз шла речь о модификации NTM, так что я решил убедиться, что полностью понимаю NTM, прежде чем двигаться дальше. Убедившись в этом, у меня появилось ощущение, что та вторая статья не слишком подходит для объяснения, а вот оригинальная работа по NTM очень хорошо написана, и я настоятельно рекомендую её прочитать.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Views25.1K
Comments 5

Эксперименты с malloc и нейронными сетями

Mail.ru Group corporate blogPythonSystem ProgrammingAlgorithmsMachine learning


Больше года назад, когда я работал антиспамщиком в Mail.Ru Group, на меня накатило, и я написал про эксперименты с malloc. В то время я в свое удовольствие помогал проводить семинары по АКОСу на ФИВТе МФТИ, и шла тема про аллокацию памяти. Тема большая и очень интересная, при этом охватывает как низкий уровень ядра, так и вполне себе алгоритмоемкие структуры. Во всех учебниках написано, что одна из основных проблем динамического распределения памяти — это ее непредсказуемость. Как говорится, знал бы прикуп — жил бы в Сочи. Если бы оракул заранее рассказал весь план по которому будет выделяться и освобождаться память, то можно было составить оптимальную стратегию, минимизирующую фрагментацию кучи, пиковое потребление памяти и т.д. Отсюда пошла возня с ручными аллокаторами. В процессе раздумий я натолкнулся на отсутствие инструментов логирования malloc() и free(). Пришлось их написать! Как раз про это была статья (а ещe я изучал macOS). Были запланированы две части, однако жизнь круто повернулась и стало не до malloc(). Итак, пора восстановить справедливость и реализовать обещанное: ударить глубоким обучением по предсказанию работы с кучей.


Внутри:


  • Совершенствуем libtracemalloc, перехватчик malloc().
  • Строим LSTM на Keras — глубокую рекуррентную сеть.
  • Обучаем модель на примере работы реального приложения (vcmi/vcmi — а вы думали, причем здесь Heroes III?).
  • Удивляемся неожиданно хорошим результатам.
  • Фантазируем про практическое применение технологии.
  • Исходники.

Интересно? Добро пожаловать под кат.


Читать дальше →
Total votes 72: ↑72 and ↓0 +72
Views25.1K
Comments 15

Обзор исследований в области глубокого обучения: обработка естественных языков

Wunder Fund corporate blogMachine learningNatural Language Processing
Translation


Это третья статья из серии “Обзор исследований в области глубокого обучения” (Deep Learning Research Review) студента Калифорнийского университета в Лос-Анджелесе Адита Дешпанда (Adit Deshpande). Каждые две недели Адит публикует обзор и толкование исследований в определенной области глубинного обучения. В этот раз он сосредоточил свое внимание на применении глубокого обучения для обработки текстов на естественном языке.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views23.1K
Comments 2

LSTM – сети долгой краткосрочной памяти

Wunder Fund corporate blogAlgorithmsMachine learning
Translation

Рекуррентные нейронные сети


Люди не начинают думать с чистого листа каждую секунду. Читая этот пост, вы понимаете каждое слово, основываясь на понимании предыдущего слова. Мы не выбрасываем из головы все и не начинаем думать с нуля. Наши мысли обладают постоянством.

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

Решить эту проблемы помогают рекуррентые нейронные сети (Recurrent Neural Networks, RNN). Это сети, содержащие обратные связи и позволяющие сохранять информацию.
Читать дальше →
Total votes 41: ↑39 and ↓2 +37
Views106.7K
Comments 2

Эффективные методы сжатия данных при тренировке нейросетей. Лекция в Яндексе

Яндекс corporate blogData compressionMachine learning
Не так давно в Яндекс приезжал Геннадий Пехименко — профессор Университета Торонто и PhD Университета Карнеги-Меллон. Он прочитал лекцию об алгоритмах кодирования, которые позволяют обходить проблему ограничения памяти GPU при обучении глубоких нейронных сетей.


— Я вхожу в несколько групп Университета Торонто. Одна из них — Computer Systems and Networking Group. Есть еще моя собственная группа — EcoSystem Group. Как видно из названий групп, я не специалист непосредственно в машинном обучении. Но нейронные сети сейчас достаточно популярны, и людям, которые занимаются компьютерной архитектурой и сетями, компьютерными системами, приходится сталкиваться с этими приложениями на постоянной основе. Поэтому последние полтора-два года этой темой я тоже плотно занимаюсь.
Читать дальше →
Total votes 41: ↑41 and ↓0 +41
Views11.4K
Comments 7

Играем в Mortal Kombat с помощью TensorFlow.js

JavaScriptGame developmentImage processingMachine learning
Translation
Экспериментируя с улучшениями для модели прогнозирования Guess.js, я стал присматриваться к глубокому обучению: к рекуррентным нейронным сетям (RNN), в частности, LSTM из-за их «необоснованной эффективности» в той области, где работает Guess.js. В то же время я начал играться с свёрточными нейросетями (CNN), которые тоже часто используются для временных рядов. CNN обычно используют для классификации, распознавания и обнаружения изображений.


Управление MK.js с помощью TensorFlow.js

Исходный код для этой статьи и МК.js лежат у меня на GitHub. Я не выложил набор данных для обучения, но можете собрать свои собственные и обучить модель, как описано ниже!
Читать дальше →
Total votes 68: ↑65 and ↓3 +62
Views17.9K
Comments 11

Contextual Emotion Detection in Textual Conversations Using Neural Networks

Mail.ru Group corporate blogPythonData MiningBig DataMachine learning

Nowadays, talking to conversational agents is becoming a daily routine, and it is crucial for dialogue systems to generate responses as human-like as possible. As one of the main aspects, primary attention should be given to providing emotionally aware responses to users. In this article, we are going to describe the recurrent neural network architecture for emotion detection in textual conversations, that participated in SemEval-2019 Task 3 “EmoContext”, that is, an annual workshop on semantic evaluation. The task objective is to classify emotion (i.e. happy, sad, angry, and others) in a 3-turn conversational data set.
Read more →
Total votes 37: ↑37 and ↓0 +37
Views2.2K
Comments 0

Kaggle: не можем ходить — будем бегать

Singularis Lab corporate blogData MiningMachine learningArtificial IntelligenceFinance in IT
Насколько сложна тема машинного обучения? Если Вы неплохо математически подкованы, но объем знаний о машинном обучении стремится к нулю, как далеко Вы сможете зайти в серьезном конкурсе на платформе Kaggle?


Попробуем выяснить, насколько глубока кроличья нора
Total votes 30: ↑29 and ↓1 +28
Views11.8K
Comments 13

Как научить машину понимать инвойсы и извлекать из них данные

ABBYY corporate blogMachine learningArtificial Intelligence
Привет, Хабр! Меня зовут Станислав Семенов, я работаю над технологиями извлечения данных из документов в R&D ABBYY. В этой статье я расскажу об основных подходах к обработке полуструктурированных документов (инвойсы, кассовые чеки и т.д.), которые мы использовали совсем недавно и которые используем прямо сейчас. А еще мы поговорим о том, насколько для решения этой задачи применимы методы машинного обучения.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views7K
Comments 13

Как мы предсказывали отток, подойдя к нему как к стихийному бедствию

Ростелеком corporate blogHackathonMachine learningArtificial Intelligence
Иногда для того, чтобы решить какую-то проблему, надо просто взглянуть на нее под другим углом. Даже если последние лет 10 подобные проблемы решали одним и тем же способом с разным эффектом, не факт, что этот способ единственный.

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

Анализировать и пытаться удержать клиента, если это возможно, нужно, как минимум, по следующим причинам:

  • привлечение новых клиентов дороже процедур удержания. На привлечение новых клиентов, как правило, нужно потратить определенные деньги (реклама), в то время как существующих клиентов можно активизировать специальным предложением с особыми условиями;
  • понимание причин ухода клиентов — ключ к улучшению продуктов и услуг.

Существуют стандартные подходы к прогнозированию оттока. Но на одном из чемпионатов по ИИ мы решили взять и попробовать для этого распределение Вейбулла. Чаще всего его используют для анализа выживаемости, прогнозирования погоды, анализа стихийных бедствий, в промышленной инженерии и подобном. Распределение Вейбулла — специальная функция распределения, параметризуемая двумя параметрами $λ$ и $k$.


Википедия

В общем, вещь занятная, но для прогнозирования оттока, да и вообще в финтехе, использующаяся не так, чтобы часто. Под катом расскажем, как мы (Лаборатория интеллектуального анализа данных) это сделали, попутно завоевав золото на Чемпионате по искусственному интеллекту в номинации «AI в банках».
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views9.1K
Comments 0

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

PythonData MiningMathematicsMachine learning

Заголовок статьи может показаться странным и это неспроста — он прекрасен именно тем, что написал его не я, а LSTM-нейросеть (а точнее его часть перед "или").



(схема LSTM взята из Understanding LSTM Networks)


И сегодня мы разберёмся, как можно генерировать заголовки статей Хабра (и в принципе сам текст можно генерировать этой же нейро-архитектурой). Весь код доступен для запуска онлайн в notebooks от Гугла. Данные, как всегда, открыты на github.


А вот здесь можно запустить уже обученную модель на GPU от Гугла (бесплатно и без смс) и собственно погенерить заголовки.

Читать дальше →
Total votes 46: ↑44 and ↓2 +42
Views9.2K
Comments 16

Автоматическое определение эмоций в текстовых беседах с использованием нейронных сетей

Mail.ru Group corporate blogPythonData MiningBig DataMachine learning

Одна из основных задач диалоговых систем состоит не только в предоставлении нужной пользователю информации, но и в генерации как можно более человеческих ответов. А распознание эмоций собеседника — уже не просто крутая фича, это жизненная необходимость. В этой статье мы рассмотрим архитектуру рекуррентной нейросети для определения эмоций в текстовых беседах, которая принимала участие в SemEval-2019 Task 3 “EmoContext”, ежегодном соревновании по компьютерной лингвистике. Задача состояла в классификации эмоций (“happy”, “sad”, “angry” и “others”) в беседе из трех реплик, в которой участвовали чат-бот и человек.

В первой части статьи мы рассмотрим поставленную в EmoContext задачу и предоставленные организаторами данные. Во второй и третьей частях разберём предварительную обработку текста и способы векторного представления слов. В четвёртой части мы опишем архитектуру LSTM, которую мы использовали в соревновании. Код написан на языке Python с использованием библиотеки Keras.
Читать дальше →
Total votes 50: ↑48 and ↓2 +46
Views9.6K
Comments 8

Какие закономерности находят нейросети?

Machine learning
Sandbox
В этом посте я хочу рассказать о закономерностях, которые могут находить нейросети. Во многих руководствах для начинающих акцент делается на технике написания кода для нейронных сетей, при этом вопросы «логики» (что могут нейросети? какие архитектуры лучше подходят для каких задач и почему?) часто остаются в стороне. Я надеюсь, мой пост поможет начинающим лучше понять возможности нейронных сетей. Для этого мы попробуем посмотреть, как они справляются с некоторыми модельными задачами. Примеры кода будут приводиться на python с использованием библиотеки keras.

Задача 1. Начнём с простого. Построим нейронную сеть, аппроксимирующую синус.

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense


def get_X_y(n):
    X = np.random.uniform(0, np.pi, n)
    y = np.sin(X)
    return X, y


n = 40
X, y = get_X_y(n)
print("X shape:", X.shape)

model = Sequential()
model.add(Dense(6, input_dim=1, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mean_squared_error'])

model.fit(X, y, epochs=1000, batch_size=4)

X_test = np.linspace(start=0, stop=np.pi, num=500)
print("X test shape:", X_test.shape)
y_test = model.predict(X_test)

font = {'weight': 'bold',
        'size': 25}

matplotlib.rc('font', **font)
axes = plt.gca()
axes.set_ylim(0, 1)
plt.plot(X_test, y_test, c='green', marker='o', markersize=5)
plt.title("Sinus approximated by neural network")
plt.yticks(np.arange(0, 1, 0.1))
plt.grid()
plt.show()

Получаем следующий график:



Как видим, нейронная сеть успешно справилась с задачей аппроксимации несложной функции.
Читать дальше →
Total votes 38: ↑17 and ↓21 -4
Views5K
Comments 7

Композитор с долгой кратковременной памятью

PythonAlgorithmsMachine learningSound
Translation

Автоматическое сочинение музыки



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

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

Как это работает


Композитор обучает нейросеть с долгой кратковременной памятью (Long short-term memory, LSTM). LSTM-сети хорошо подходят для предсказания того, «что встретится дальше» в последовательностях данных. Подробнее о LSTM можно прочитать здесь.


LSTM-сеть получает различные последовательности нот (в данном случае это одноканальные файлы midi). После достаточного обучения она получает возможность создавать музыку, схожую с обучающими материалами.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views5.5K
Comments 20

Ищем аномалии и предсказываем сбои с помощью нейросетей

НПО Криста corporate blogMachine learningDevOpsArtificial Intelligence

image


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


Что же делать? Здесь нам на помощь спешит искусственный интеллект. Речь в статье пойдет о предиктивном обслуживании (predictive maintenance). Этот подход активно набирает популярность. Написано большое количество статей, в том числе и на Хабре. Крупные компании вовсю используют такой подход для поддержки работоспособности своих серверов. Изучив большое количество статьей, мы решили попробовать применить этот подход. Что из этого вышло?

Читать дальше
Total votes 7: ↑6 and ↓1 +5
Views6.6K
Comments 4

Julia и дистрибутивная семантика

ProgrammingJuliaMachine learningArtificial IntelligenceNatural Language Processing
Tutorial


С момента выхода прошлой публикации в мире языка Julia произошло много интересного:



В то же время заметен рост интереса со стороны разработчиков, что выражается обильными бенчмаркингами:



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

Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views3.9K
Comments 4

Рекуррентные нейронные сети (RNN) с Keras

PythonBig DataMachine learningArtificial IntelligenceTensorFlow
Translation
Tutorial
Перевод руководства по рекуррентным нейросетям с сайта Tensorflow.org. В материале рассматриваются как встроенные возможности Keras/Tensorflow 2.0 по быстрому построению сеток, так и возможности кастомизации слоев и ячеек. Также рассматриваются случаи и ограничения использования ядра CuDNN позволяющего ускорить процесс обучения нейросети.


Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views25.5K
Comments 0
1