Pull to refresh
26
0
olegi @olegi

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

Send message

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

Reading time7 min
Views1.6M
image

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

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

Факторное моделирование с помощью нейронной сети

Reading time16 min
Views19K
В статье рассматривается факторное моделирование с помощью метода факторизации на базе нейронной сети и алгоритма обратного распространения ошибки. Этот метод факторизации является альтернативой классическому факторному анализу. Данный метод был усовершенствован для проведения факторного вращения и получения интерпретируемого решения. Факторная структура, полученная с помощью данного метода факторизации, находятся в соответствии с результатами факторного моделирования посредством других методов.
Читать дальше →

Обзор топологий глубоких сверточных нейронных сетей

Reading time18 min
Views110K
Это будет длиннопост. Я давно хотел написать этот обзор, но sim0nsays меня опередил, и я решил выждать момент, например как появятся результаты ImageNet’а. Вот момент настал, но имаджнет не преподнес никаких сюрпризов, кроме того, что на первом месте по классификации находятся китайские эфэсбэшники. Их модель в лучших традициях кэгла является ансамблем нескольких моделей (Inception, ResNet, Inception ResNet) и обгоняет победителей прошлого всего на полпроцента (кстати, публикации еще нет, и есть мизерный шанс, что там реально что-то новое). Кстати, как видите из результатов имаджнета, что-то пошло не так с добавлением слоев, о чем свидетельствует рост в ширину архитектуры итоговой модели. Может, из нейросетей уже выжали все что можно? Или NVidia слишком задрала цены на GPU и тем самым тормозит развитие ИИ? Зима близко? В общем, на эти вопросы я тут не отвечу. Зато под катом вас ждет много картинок, слоев и танцев с бубном. Подразумевается, что вы уже знакомы с алгоритмом обратного распространения ошибки и понимаете, как работают основные строительные блоки сверточных нейронных сетей: свертки и пулинг.

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

Оптимизация кода: память

Level of difficultyHard
Reading time12 min
Views94K
Большинство программистов представляют вычислительную систему как процессор, который выполняет инструкции, и память, которая хранит инструкции и данные для процессора. В этой простой модели память представляется линейным массивом байтов и процессор может обратиться к любому месту в памяти за константное время. Хотя это эффективная модель для большинства ситуаций, она не отражает того, как в действительности работают современные системы.

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

image

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

Где распознают лица

Reading time6 min
Views5.1K
Компания VisionLabs, которая специализируется на технологии распознавания лиц, меньше чем за год стала одним из победителей конкурса Web Ready (с 2016 года — GoTech), вошла в список 12 финалистов программы Challenge UP!, организованной Intel, Cisco и Deutsche Telekom AG, а также привлекла 350 млн рублей инвестиций венчурного фонда Sistema Venture Capital.

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

Пол Грэм. Все статьи на русском. Год спустя

Reading time8 min
Views39K
«То, о чем мы думаем в душе по утрам, — гораздо важнее, чем вам может показаться. Это именно то время, когда в голову приходят хорошие идеи. Скажу больше, вы вряд ли преуспеете в деле, о котором не думаете в душе.»
— Пол Грэм


Добрый день, хабрачитатели.

1 сентября 2015, благодаря пинкам ребят из #tceh, я упорядочил все статьи Пола Грэма на русском языке на тот момент (около 60). В этой публикации хочу поделиться тем, что произошло за 13 месяцев.

На начало сентября 2015 я прочитал около 10 статей Пола Грэма, теперь мое количество статей — 125.

Мы так же успели дожать до победного перевод книги Грэма «Хакеры и Художники» и сейчас идет переписка с издательством O'Reilly на тему издания на русском.

Обновление подборки переводов Грэма и история поиска/создания этих переводов — под катом.

Несколько заметок о MySQL

Reading time4 min
Views25K
За время работы с MySQL набралось некоторое количество нюансов и приемов, из которых я составил эту статью в виде набора заметок. Все это не секрет и, разумеется, можно найти в документации.

Буду использовать дефолтные настройки MySQL. Некоторые заметки связаны с PHP, поэтому для примеров буду использовать расширение mysqli.

Для запуска sql-запросов из статьи можно инициализировать таблицы так:

CREATE TABLE IF NOT EXISTS `user_myisam` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(8) NOT NULL,
  `money` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `user_myisam` (`id`, `login`, `money`) VALUES
(1, 'ivanov', 100),
(2, 'petrov', 200),
(3, 'sidorov', 300);

CREATE TABLE IF NOT EXISTS `user_innodb` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(8) NOT NULL,
  `money` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `user_innodb` (`id`, `login`, `money`) VALUES
(1, 'ivanov', 100),
(2, 'petrov', 200),
(3, 'sidorov', 300);

Проверить текущие автоинкременты можно так:

SHOW TABLE STATUS;

У обоих таблиц они равны 4. При этом имеется такое подключение к БД:

$mysqli = new mysqli($host, $user, $password, $database);
Читать дальше →

О выравнивании памяти на ARM процессорах на простом примере

Reading time1 min
Views13K
Допустим у нас есть функция, которая принимает в себя указатель. Мы знаем, что в указателе лежит нуль-терминальная строка, а за ней 4-байтное целое. Задача — вывести в консоль строку и целое. Решить можно вот так:

void foo(void* data_ptr)
{
  //Ставим указатель на строку на начало данных
  char* str = (char*)data_ptr;
  //А указатель на целое смещаем на длину строки и еще один байт
  int* value = (int*)(str+strlen(str)+1);
  //и выводим содержимое указателей
  printf("%s %d", str, *value);
}

Довольно тривиальная задача, не так ли? Проверяем на компе (x86), все ОК. Загружаем на борду с ARM. И, не успев выстрелить себе в ногу, наступаем на грабли. В зависимости от содержания строки, целое значение выводится то нормальным, то кривым. Поверяем указатели, проверяем память, на которые они указывают. Все в норме.
Читать дальше →

Применение R для работы с утверждением «Кто виноват? Конечно ИТ!»

Reading time6 min
Views7.4K

Продолжение предыдущих публикаций «Инструменты DataScience как альтернатива классической интеграции ИТ систем»,
«Экосистема R как инструмент для автоматизации бизнес-задач» и Джентельменский набор пакетов R для автоматизации бизнес-задач. Настоящая публикация преследует 2 цели:


  1. Взглянуть на типичные задачи, которые встречаются в бизнесе, под немного другим углом.
  2. Попробовать их решить, частично или полностью, с использованием средств, предоставляемых R.
Читать дальше →

Изменение в PHP 7, ломающее при обновлении с пятой версии некоторые сервера на Ubuntu

Reading time2 min
Views14K

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


http://php.net/manual/en/configuration.file.php#configuration.file.changelog :


7.0.0 Hash marks (#) are no longer recognized as comments.

Казалось бы, что такого? Админы на тестовом сервере обнаружат появившиеся ошибки в конфигах и быстро поправят. Но тут вступает в дело одна неприятная особенность php-fpm: он отказывается запускаться с некорректным файлом php-fpm.conf, но спокойно запустится с некорректным php.ini, проигнорировав все его настройки и используя значения по умолчанию. Ошибка не будет видна в консоли, так как её проглотит скрипт запуска службы, и не будет записана в лог php-fpm.


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

Как официально принимать валютные платежи из-за рубежа в России (ИП)

Reading time4 min
Views55K
После моего комментария, периодически получаю однотипные вопросы о получении валютных платежей из-за рубежа.

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

Запуск функций R на нескольких машинах

Reading time6 min
Views3.9K
Как мы показали в «Небольшом введении в параллельное программирование на R», одно из преимуществ R — легкость, с которой можно воспользоваться преимуществами параллельного программирования для ускорения вычислений. В этой статье мы расскажем, как перейти от запуска функций на нескольких процессорах или ядрах к запуску на нескольких машинах (с целью еще большего масштабирования и ускорения).

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

  • Подключайте более мощные параллельные библиотеки, например, Intel BLAS (доступна под Linux, OS X и Windows как часть дистрибутива Microsoft R Open). Это позволит заменить уже используемые библиотеки их параллельными версиями, благодаря чему получите ускорение (на соответствующих задачах, например, связанных с линейной алгеброй в lm()/glm()).

  • Вынесите обработку задач моделирования из R во внешнюю библиотеку для параллелизации. Это стратегия, которую используют следующие системы: методы rx от RevoScaleR (теперь Microsoft Open R), методы h2o от h2o.ai, RHadoop.

  • Используйте утилиту parallel в R, чтобы запускать функции на других экземплярах R. Эта стратегия из «Небольшого введения в параллельное программирование на R» и ряда библиотек на основе parallel. Фактически это реализация удаленного вызова процедуры через сокет или сеть.

Рассмотрим подробнее третий подход.
Читать дальше →

Оптимизация кода: процессор

Level of difficultyHard
Reading time18 min
Views117K
Все программы должны быть правильными, но некоторые программы должны быть быстрыми. Если программа обрабатывает видео-фреймы или сетевые пакеты в реальном времени, производительность является ключевым фактором. Недостаточно использовать эффективные алгоритмы и структуры данных. Нужно писать такой код, который компилятор легко оптимизирует и транслирует в быстрый исполняемый код.

image

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

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

Reading time5 min
Views55K

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



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

Создание продающих сайтов с помощью STM модели

Reading time7 min
Views13K
Как нужно проектировать страницы сайта, чтобы он продавал? Вот некоторые критерии, которые часто применяют заказчики и проектировщики:

  • Собственный опыт — «получилось на прошлом сайте, получится и сейчас»;
  • Мнения экспертов и информация из статей — «телефон обязательно должен быть в шапке», «обязательно внедрите модуль сравнения товаров»;
  • Мнения авторитетных сотрудников — «дизайнер сказал, что в левом блоке нужно разместить новости»;
  • Сравнение с конкурентами — «у компании N на сайте есть модуль избранного, их сайт продает, значит и нам он нужен».

Что интересного я вынес за два года разработки и продвижения мобильной игры

Reading time7 min
Views32K
Привет, Хабр! Давно не виделись… С прошлой публикации — «Чему я научился на своих ошибках или как сделать вторую игру лучше» прошло уже целых 2 года! Сегодня я расскажу о том, что нового я попробовал в продвижении, монетизации приложения и конечно же о том, что из этого вышло.


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

Новые функции безопасности Android 7

Reading time4 min
Views18K
Google уже выпустила Android 7. В ближайшее время владельцы различных устройств под управлением Android получат обновление прошивки. Одними из первых новую версию получат пользователи фирменных устройств Google Nexus 6P, 5X, 6, 9, Google Pixel C, Nexus Player, Android One. Так как Google распространяет обновления Android волнами, не все пользователи этих устройств смогут оперативно получить обновление. Android 7 также смогут получить флагманские модели устройств таких вендоров как Samsung (Galaxy S6 и S7), HTC (HTC 10, One A9 и One M9), Sony (Xperia Z3+, Xperia Z4 Tablet, Xperia Z5, Xperia X), LG (V20), Huawei. В новой версии Android появился ряд новых серьезных функций безопасности (security features), о некоторых из которых мы писали в предыдущих постах. Первый был посвящен функции Direct Boot, которая упростит владельцам устройств работу с шифрованием. Второй содержал информацию об улучшениях безопасности ядра Linux, на котором основана Android.

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

Batch Normalization для ускорения обучения нейронных сетей

Reading time5 min
Views77K

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


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


В какой-то момент, знакомясь с представленным в 2015 году методом Batch Normalization от компании Google мне, для решения задачи связанной с распознаванием лиц, удалось существенно улучшить скорость работы нейросети.



За подробностями прошу под кат.

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

Глубинное обучение: возможности, перспективы и немного истории

Reading time7 min
Views20K
Последние несколько лет словосочетание «глубинное обучение» всплывает в СМИ слишком часто. Различные журналы вроде KDnuggets и DigitalTrends стараются не упустить новости из этой сферы и рассказать о популярных фреймворках и библиотеках.

Даже популярные издания вроде The NY Times и Forbes стремятся регулярно писать о том, чем заняты ученые и разработчики из области deep learning. И интерес к глубинному обучению до сих пор не угасает. Сегодня мы расскажем о том, на что способно глубинное обучение сейчас, и по какому сценарию оно будет развиваться в будущем.



/ фото xdxd_vs_xdxd CC
Читать дальше →

Экосистема R как инструмент для автоматизации бизнес-задач

Reading time7 min
Views12K
Настоящая статья является продолжением предыдущей публикации «Инструменты DataScience как альтернатива классической интеграции ИТ систем». Основная цель — заострить внимание как разработчиков, так и руководителей среднего звена, на широком спектре возможностей, которые предоставляют современные инструменты из сферы Data Science за рамками классических задач статистических вычислений и модной нынче темы машинного обучения. В частности, возможности экосистемы R по состоянию на август 2016 года и применение этих возможностей на примере двух задач: одной из прикладной науки, другой – из среднего бизнеса.
Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity