Pull to refresh
33
Nikolay Naumov @skynoname read⁠-⁠only

Optimizator

Send message

Julia, Градиентный спуск и симплекс метод

Reading time 10 min
Views 14K


Продолжаем знакомство с методами многомерной оптимизации.


Далее предложена реализация метода наискорейшего спуска с анализом скорости выполнения, а также имплементация метода Нелдера-Мида средствами языка Julia и C++.

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

Собеседование для интроверта

Reading time 4 min
Views 28K

Как часто вы ходите по собеседованиям? Если вы взрослый и состоявшийся в профессии человек, праздно шататься по чужим офисам в поисках лучшей доли времени у вас явно нет. Ситуация усложняется, если вы интроверт и встречи с незнакомыми людьми априори терпеть не можете. Что делать?
Total votes 33: ↑24 and ↓9 +15
Comments 82

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

Reading time 8 min
Views 151K
Оглавление

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

Введение


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

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

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

Reading time 8 min
Views 130K
Часть 1 — линейная регрессия

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

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


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

Нейросеть в 11 строчек на Python

Reading time 8 min
Views 533K

О чём статья


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

Дайте код!


X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
    l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
    l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
    l2_delta = (y - l2)*(l2*(1-l2))
    l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
    syn1 += l1.T.dot(l2_delta)
    syn0 += X.T.dot(l1_delta)


Слишком сжато? Давайте разобьём его на более простые части.
Читать дальше →
Total votes 47: ↑44 and ↓3 +41
Comments 17

Нейросеть на Python, часть 2: градиентный спуск

Reading time 16 min
Views 59K
Часть 1

Давай сразу код!


import numpy as np
X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
alpha,hidden_dim = (0.5,4)
synapse_0 = 2*np.random.random((3,hidden_dim)) - 1
synapse_1 = 2*np.random.random((hidden_dim,1)) - 1
for j in xrange(60000):
    layer_1 = 1/(1+np.exp(-(np.dot(X,synapse_0))))
    layer_2 = 1/(1+np.exp(-(np.dot(layer_1,synapse_1))))
    layer_2_delta = (layer_2 - y)*(layer_2*(1-layer_2))
    layer_1_delta = layer_2_delta.dot(synapse_1.T) * (layer_1 * (1-layer_1))
    synapse_1 -= (alpha * layer_1.T.dot(layer_2_delta))
    synapse_0 -= (alpha * X.T.dot(layer_1_delta))

Часть 1: Оптимизация


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

Суть происходящего в том, что обратное распространение не вносит в работу сети оптимизацию. Оно перемещает неверную информацию с конца сети на все веса внутри, чтобы другой алгоритм уже смог оптимизировать эти веса так, чтобы они соответствовали нашим данным. Но в принципе, у нас в изобилии присутствуют и другие методы нелинейной оптимизации, которые мы можем использовать с обратным распространением:
Читать дальше →
Total votes 33: ↑28 and ↓5 +23
Comments 5

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

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

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

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

Решение задачи кластеризации методом градиентного спуска

Reading time 6 min
Views 26K
Привет. В этой статье будет рассмотрен способ кластеризации данных, используя метод градиентного спуска. Честно говоря данный способ носит больше академический характер, нежели практический. Реализация этого метода мне понадобилась в демонстрационных целях для курса по машинному обучению, что бы показать как одинаковые задачи можно решить различными способами. Хотя конечно если вы планируете осуществить кластеризацию данных, используя дифференцируемую метрику, для которой вычислительно труднее найти центроид, нежели подсчитать градиент на некотором наборе данных, то этот метод может быть полезным. Итак если вам интересно как можно решить задачу k-means кластеризации с обобщенной метрикой используя метод градиентного спуска, прошу под кат. Код на языке R.
Читать дальше →
Total votes 50: ↑48 and ↓2 +46
Comments 8

Блокчейн: как он работает, и почему эта технология изменит мир

Reading time 13 min
Views 183K
image

Портал Spectrum, который освещает новости в мире технологий, опубликовал материал о блокчейн. В этой статье рассказано, какие есть подводные камни в работе технологии и почему её нельзя использовать повсеместно. Мы подготовили русскоязычную адаптацию этой статьи.
Читать дальше →
Total votes 33: ↑21 and ↓12 +9
Comments 21

Сам себе стоматолог: американский студент исправил прикус при помощи 3D печати

Reading time 2 min
Views 23K


Стоматология в большинстве стран — дорогое удовольствие. Плюс ко всему, не так и много найдется тех людей, кто самостоятельно идет в стоматологический кабинет, если нет особых проблем. К таким проблемам можно отнести неправильный прикус — особо он не мешает жить. Правда, люди с неправильным прикусом часто испытывают неудобство чисто психологического характера — ни тебе улыбнуться широко, ни рассмеяться. Неправильный прикус был и у студента Эймоса Дадли (Amos Dudley) из Технологического института Нью-Джерси.

Эймосу не нравился его прикус, он не мог себя заставить широко улыбнуться. При этом брекеты установить он тоже не мог, поскольку был очень ограничен в средствах. Но зато у студента был доступ к профессиональному 3D оборудованию и соответствующим расходникам. Плюс ко всему, он был сообразительным студентом, и решил, что сам сможет решить проблему, поскольку на одном из стоматологических элайнеров (это не брекеты, а пластиковые каппы, служащие для той же цели) он увидел следы 3D печати. Студент решил попробовать сделать для себя такие же. Дадли прочитал несколько книг по протезированию, изучил особенности материалов и решил сам сделать для себя элайнер.
Читать дальше →
Total votes 19: ↑14 and ↓5 +9
Comments 67

Инженеры заставили WiFi работать, потребляя в 10000 раз меньше энергии

Reading time 2 min
Views 12K
image

Инженеры из Вашингтонского университета продемонстрировали систему Passive Wi-Fi, способную обмениваться информацией по беспроводной технологии, тратя на это в 10000 раз меньше энергии, чем обычные устройства. Система также в 1000 раз эффективнее современных чипов низкого энергопотребления, например Bluetooth Low Energy и Zigbee.

Технология в подробностях будет представлена на 13-м симпозиуме USENIX, посвящённом сетям и сетевым устройствам. Она уже названа в числе 10 прорывов 2016 года изданием MIT Technology Review.

«Мы хотели узнать, возможно ли добиться передачи WiFi, практически не потребляя энергию,- поясняет Шайам Голакота [Shyam Gollakota], ассистент-профессор университета. – Именно этого и достигает Passive Wi-Fi. Он потребляет в 10000 раз меньше, чем самое энергоэффективное устройство из имеющихся».

Технология пока умеет работать на скорости 11 mbps, что, конечно, меньше, чем максимальная скорость WiFi, но по крайней мере больше, чем Bluetooth. Она способна не только существенно увеличить драгоценное время работы от батареи смартфонов и других мобильных устройств, но и значительно приблизить наступление эры интернета вещей.
Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Comments 35

Как получить статус книги-бестселлера на Amazon за 3 доллара

Reading time 2 min
Views 16K
Каждый производитель желает нарисовать на упаковке товара статусный значок «Лучший продукт», «Бестселлер» или тому подобную бессмысленную чушь. Некоторые покупаются на это, не замечая, что почти каждый товар в корзине или каждая компания — «признанный лидер» в своей области. Маркетинг работает. В Америке есть даже агентства, которые специализируются на включении книг своих клиентов в список бестселлеров за несколько тысяч долларов.

На книжном рынке в последние годы признанным лидером стал Amazon, так что статус «Бестселлер Amazon» приравнивается к статусу настоящего бестселлера. Но это далеко не так, что убедительно доказал Брент Андервуд (Brent Underwood), один из сотрудников маркетингового агентства Brass Check, которое тоже занимается раскруткой книг. На прошлой неделе он опубликовал электронную «книгу» на Amazon, содержанием которой была одна страница с фотографией его ноги — и больше ничего. В течение пары часов он получил статус «Бестселлера №1», с соответствующим оранжевым значком и т.д.

Как вы думаете, сколько экземпляров потребовалось продать для получения такого статуса? Три. Причём два экземпляра купил он сам.
Читать дальше →
Total votes 33: ↑30 and ↓3 +27
Comments 17

Увидеть невидимое! «Seek Thermal» — тепловизор из Санта-Барбары

Reading time 19 min
Views 28K
Когда я был маленький, магний для разных интересных опытов стачивали с колесных дисков отлетавших свое железных птиц на свалке самолетов. А сейчас из магния делают корпуса бытовых приборов, об одном из которых рассказано в небольшом обзоре.

Тепловизор…

Существуют нелюди, пользующиеся им с рождения. Большинству нормальных людей тепловизор недоступен из-за огромной цены, хотя встречаются уникумы, которые в состоянии были в 2013 году сделать устройство самостоятельно за “… менее чем за 100$”. Неизвестно сколько человек его собрало, но по крайней мере, только на Хабре статью прочитало более ста тысяч. Желающих владеть тепловизором много, и один из способов — купить по “дешевке” его главный элемент, а затем (история 2014 года) оснастить “мозгами” (Arduino, STM32 или Raspberry PI). Способ интересный, но к мозгам еще необходим экран, да и не все желающие являются радиолюбителями.

Тепловизоры в основном приобретаются солидными предприятиями и организациями для проведения разного рода тепловизионных обследований с конечной целью зарабатывания денег. Заказчики в подобных исследованиях выявляют нарушения при строительстве и эксплуатации различных систем, что при их ликвидации (нарушений), экономит энергетические и в конечном итоге – денежные ресурсы.

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

Тепловизор с приемлемыми параметрами стал доступнее (характеристики-цена-качество), и настало время задуматься о его приобретении для своего хозяйства.

Для тех, кто просто хочет и еще не определился с его применением предлагается небольшой труд под условным названием “Тепловизор – голубая мечта детства” или “Мечты сбываются не только у “Газпрома!”

Человек живет в своем доме, тратит значительные денежные средства на его отопление, чувствуя при этом некий дискомфорт, но понять, что делать, не знает – может печка/котел работает плохо, может окна не той системы, может батареи не современные, а может сделать теплый пол?
Меняются котел, окна, батареи, появляется теплый пол..., но ситуация улучшается незначительно.
А всего лишь одна фотография могла бы направить его деятельность в совершенно другое русло.
Купил хозяин этот дом, или сотворил его сам — это науке неизвестно, но известно то, что в те годы, когда он был построен, не было возможности сделать такую фотографию или заказать её редким владельцам тепловизоров.
С виду, это обычный кирпичный дом, но стоит посмотреть на него в другом диапазоне волн, как взору открывается красивая, но совсем не радующая с точки зрения тепловых потерь глаз картина.



Последствия некоторых ошибок строительства, примеры которых будут приведены в статье, можно уменьшить, но для начала, их необходимо обнаружить, в чем нам поможет тепловизор «Seek Thermal”.
Область его применения не ограничивается строительством. Эксплуатация зданий, наладка теплового оборудования, электрика и электроника, медицина, охота, поиск пропавших людей, охрана и другие полезные, шуточно-развлекательные и научно-исследовательские применения, некоторые из которых будут продемонстрированы в данной статье.
Найти черную кошку в темной комнате, особенно если она там есть!
Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Comments 24

15 тривиальных фактов о правильной работе с протоколом HTTP

Reading time 7 min
Views 232K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
Читать дальше →
Total votes 191: ↑186 and ↓5 +181
Comments 120

Билайн автоматически меняет HTML теги

Reading time 2 min
Views 74K



HTML код до и после работы Билайна. Найдите отличия!

Недавно я написал две статьи про оператора связи Билайн:
Билайн автоматически добавляет тулбар с поиском Mail.Ru
Билайн автоматически добавляет тулбар и изменяет дизайн сайтов

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

Теперь оператор связи меняет атрибут src у тега iframe и фреймы перестают работать!
Читать дальше →
Total votes 145: ↑141 and ↓4 +137
Comments 138

Очередной взлом FL.ru

Reading time 2 min
Views 141K
Печальное зрелище представилось сейчас моему усталому рабочему взгляду…

Буквально полчаса назад на главной странице проектов на всем известной некогда флагманской бирже Рунета был опубликован очень интригующий проект. Который сразу привлек внимание мониторящих ленту фрилансеров. Проект опубликован с аккаунта главного администратора биржи.
Читать дальше →
Total votes 158: ↑153 and ↓5 +148
Comments 256

Смотря на код с закрытыми глазами

Reading time 6 min
Views 123K
От переводчика

Эта статья — перевод блогозаписи Флориана Бейджерса, слепого программиста из Нидерландов.
Перевод любительский, поэтому прошу указывать на ошибки и критиковать.
Я не нашёл корректного перевода слова accessibility, поэтому перевёл его как «доступность». Если есть вариант получше — предложите, пожалуйста.
Антон Туманов предложил «адаптированность», за что ему большое спасибо.
Как заметил в комментарии pepelsbey, «доступность» является корректным переводом, вернул её обратно.
Почему я сделал перевод? Я наткнулся на опрос на Quora.com «Как программируют слабовидящие программисты?». Ответы людей меня впечатлили, а блогозапись Флориана показалась наилучшим вариантом для введения в этот важный вопрос.

Я — программист. А ещё я слеп. Слеп, как крот, как говорится. Таков я от рождения.

Когда я говорю об этом своим товарищам, то те из них, у кого никогда не было проблем со зрением, обычно задают один из трёх вопросов:

  • Как же ты тогда можешь читать то, что я пишу?
  • Ого. А как ты тогда можешь кодить?
  • Или — самый популярный вопрос — А ты видишь сны?

Мне задают эти вопросы снова и снова. Поэтому в этой блогозаписи я хочу на них ответить. Я попытаюсь нарисовать картинку для тех из вас, кто интересуется доступностью и тем, как слепые люди пользуются компьютером, кодят и выполняют другие работы в 21 веке.
Читать дальше
Total votes 227: ↑224 and ↓3 +221
Comments 174

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

Reading time 2 min
Views 246K

Господа! Я рад сообщить, что наконец-то все желающие могут загрузить бесплатный учебник на более чем 1600 страниц, над переводом которого работало более полусотни человек из ведущих университетов, институтов и компаний России, Украины, США и Великобритании. Это был реально народный проект и пример международной кооперации.

Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера», второе издание, 2012, сводит вместе миры программного обеспечения и аппаратуры, являясь одновременно введением и в разработку микросхем, и в низкоуровневое программирование для студентов младших курсов. Этот учебник превосходит более ранний вводный учебник «Архитектура компьютера и проектирование компьютерных систем» от Дэвида Паттерсона и Джона Хеннесси, причем соавтор предыдущего учебника Дэвид Паттерсон сам рекомендовал учебник от Харрисов как более продвинутый. Следуя новому учебнику, студенты строят реализацию подмножества архитектуры MIPS, используя платы с ПЛИС / FPGA, после чего сравнивают эту реализацию с индустриальными микроконтроллерами Microchip PIC32. Таким образом вводится вместе схемотехника, языки описания аппаратуры Verilog и VHDL, архитектура компьютера, микроархитектура (организация процессорного конвейера) и программирование на ассемблере — в общем все, что находится между физикой и высокоуровневым программированием.

Как загрузить? К сожалению, не одним кликом. Сначало надо зарегистрироваться в пользовательском коммьюнити Imagination Technologies, потом зарегистрироваться в образовательных программах на том же сайте, после чего наконец скачать:
Читать дальше →
Total votes 117: ↑114 and ↓3 +111
Comments 66

Расследование одного взлома или как быстро и просто потратить миллиард

Reading time 6 min
Views 156K
UPDATE: Всем привет! Сегодня с удивлением узнал от коллег об этой записи. Выяснилось, что мой аккаунт взломали — представители Хабрахабра это подтвердили и восстановили мне доступ и сейчас разбираются, как так получилось. Но я оставляю эту запись как есть, для истории.
В комментариях уже отметились представители Яндекса: говорят, что уязвимость закрыта, ведётся аудит безопасности софта.

И, пользуясь случаем, хочу напомнить, что у нас в Badoo уже несколько лет идет программа "Проверь Badoo на прочность" и мы платим за найденные уязвимости.


Все вокруг постоянно рассуждают о коррупции. А я хочу рассказать Вам о случае, на коррупцию очень похожем, но в среде чистого IT-бизнеса, на государство никак не завязанного.

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

Начну с нетехнической части.
Читать дальше →
Total votes 204: ↑188 and ↓16 +172
Comments 104

Почему айфон перезагружается от арабской смс

Reading time 6 min
Views 233K
DISCLAIMER

Не пытайтесь повторить это со своими телефонами и телефонами коллег! Судя по комментариям, много людей уже заразили свои телефоны, а 100%-тного лекарства еще нет!

DISCLAIMER 2

Даже не пытайтесь назвать так Wi-fi точку!

Около 15 часов назад на Reddit появился забавный пост, который рассказывал о перезагрузке айфона после странного сообщения вида:
Не шлите никому на айфон
Power
لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ



Читать дальше →
Total votes 184: ↑178 and ↓6 +172
Comments 138

Information

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