Как стать автором
Обновить
33
Nikolay Naumov @skynonameread⁠-⁠only

Optimizator

Отправить сообщение

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

Время на прочтение10 мин
Количество просмотров14K


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


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

Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии8

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

Время на прочтение4 мин
Количество просмотров28K

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

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

Время на прочтение8 мин
Количество просмотров151K
Оглавление

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

Введение


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

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

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

Время на прочтение8 мин
Количество просмотров130K
Часть 1 — линейная регрессия

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

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


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

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

Время на прочтение8 мин
Количество просмотров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)


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

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

Время на прочтение16 мин
Количество просмотров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: Оптимизация


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

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

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

Время на прочтение6 мин
Количество просмотров57K
Часть 2 — градиентный спуск начало

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

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

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

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

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

Время на прочтение13 мин
Количество просмотров183K
image

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

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

Время на прочтение2 мин
Количество просмотров23K


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

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

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

Время на прочтение2 мин
Количество просмотров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. Она способна не только существенно увеличить драгоценное время работы от батареи смартфонов и других мобильных устройств, но и значительно приблизить наступление эры интернета вещей.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии35

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

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

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

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

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

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

Тепловизор…

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

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

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

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

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

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



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

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

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

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



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

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

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

Время на прочтение2 мин
Количество просмотров74K



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

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

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

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

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

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

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

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

Время на прочтение6 мин
Количество просмотров123K
От переводчика

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

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

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

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

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

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

Время на прочтение2 мин
Количество просмотров246K

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

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

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

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

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

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


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

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

Начну с нетехнической части.
Читать дальше →
Всего голосов 204: ↑188 и ↓16+172
Комментарии104

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

Время на прочтение6 мин
Количество просмотров233K
DISCLAIMER

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

DISCLAIMER 2

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

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



Читать дальше →
Всего голосов 184: ↑178 и ↓6+172
Комментарии138
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность