Python
Machine learning
Comments 43
+1

Пока собирался сесть за напсиание практического курса по Deep Learning, кто-то уже сел и начал писать)

+2
А вы все равно пишите) ИМХО, хабру не хватает продвинутых статей по ML/DL
-1
Пишите. Есть большая вероятность что второй части не будет — автор уже получил инвайт.
+1
Без паники, все будет. И инвайт не имеет столь большой ценности, чтобы исключительно ради него обещать обещать продолжение.
+2
Ещё бы практическое руководство по готовым (желательно бесплатным) инструментам.
Типа какчаем такую тулзу, запускаем такой батник, вот так скармливаем картинки — опа, получили автоматический распознаватель сисек
0

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

+6

Причём тут название статьи "искусственные нейронные сети для новичков" и рассказ про МНК и линейную регрессию? Конечно, понимаю, что это "часть 1", но заголовок вводит в заблуждение.

0

Пусть у нас есть однослойная нейронная сеть с функцией активации вида Identity. Тогда такую сеть можно записать в виде w * x + b = y, где w, b — обучаемые параметры. Чем это не линейная регрессия?

+2
Действительно плохое название. Лучше что-то типа «что было до...»
0
Ну это «за уши» притянуто. Просто после приведения подобных и т. д. все будет выражено через один нейрон с линейной функцией активации. Сети с линейными нейронами сколь угодной глубины и сложности вырождаются именно в это. Приводить надо обязательно, дабы оптимизировать емкость вычислений. А один нейрон — это не сеть.

Я лишь хочу сказать, что формально это нейронная сеть. Также, как и, например, SVM — частный случай нейронных сетей. Тот же Хайкин в своем "Нейронные Сети. Полный Курс" также использует термин нейронная сеть применительно к таким моделям.

+3
Все эти модели приведут в конечном итоге к нейронным сетям в их обычном понимании — со слоями, нейронами и т.д. Первые части всего лишь введение и в следующих частях они плавно перетекут в ИНС. Я хотел начать абсолютно с самого-самого начала, а не рвать с места в карьер, начиная со слоев и синапсов. Даже если умозрительно концепция понятна, модель НС совсем не самая тривиальная. Начав с азов, я закончу какими-нибудь сверточными сетями или изобрету какую-нибудь новую схему и хочу, чтобы объяснение было понятно максимальному числу читателей. А заголовок как раз явно обозначает, что описанные модели используются в НС или похожи на них (например, линейная во многом похожа на логистическую и так далее). Такой длинный путь к НС выдуман не мной — как пример подойдет CS229. А еще многие модели удобней модифицировать, взяв «чистую» реализацию, а не в составе НС. Например, модифицированный градиентный спуск, о котором будет следующая часть, намного легче воспринять отдельно в контексте линейной регрессии, чем в многослойной ИНС.
0
Что-то мне кажется, что НС всё-таки ближе линейный классификатор, а не регрессия.
Так что от печки лучше было бы идти от линейных классификаторов.
0
А почему? Вроде НС вполне можно использовать для регрессии.
А для обучения (в смысле обучения людей) линейный классификатор чуть хуже, т.к. чуть больше формул и чуть менее наглядные примеры
0
Потому что модель нейрона при подаче сигналов возбуждения на его входы по линейной функции активации (сумма взвешенных сигналов на входе) выдаёт или не выдаёт сигнал на выходе.
А это и есть простейший линейный классификатор.
0
А кто нам мешает использовать модель нейрона, который возвращает пришедший сигнал как он есть? Получим вполне себе линейный регрессор.
Для новичков линейная модель будет явно проще. А потом сверху можно и пороговую ф-ию накрутить, или чего-нить еще.
0
Ничего не мешает.
Но если идти от печки, то нужно смотреть в сторону перцептрона

Там написано явно «Так же как и A-элементы, R-элемент подсчитывает сумму значений входных сигналов, помноженных на веса (линейную форму). R-элемент, а вместе с ним и элементарный перцептрон, выдаёт «1», если линейная форма превышает порог θ, иначе на выходе будет «−1».»

А это и есть чистой воды классификатор.
0
Интересная статься. Только надо наверно более явно обозначить, что цикл про НН, а конкретно данная статья всё-таки про линейную регрессию.
+1
Давате все-таки не называть вещи своими именами, это ведь математика, тут так нельзя.
Линейная означает, что мы предполагаем, что переменные выражаются через уравнение вида...

linear regression definition
+3
Для начала просто «раскроем» вектора в соответствии с их определением

После этих слов нарисованы неправильные матрицы:


  • матрица Х имеет размерность N на (p+1)
  • а матрица Θ имеет размерность p на 1

Их не получится перемножить. Вы забыли θ0.

0
Надеюсь хоть этот цикл про НН закончат. Прошлые на хабре были неполные
+1
Закончу, половина уже на бумаге. Основная сложность — это привнести что-то новое, упорядочить свои знания, с индексами не накосячить…
0
Насчет
Опять-таки, никто не запретит попробовать минимизировать просто сумму длин.
А разве метод наименьших модулей вообще можно использовать на практике? Там не получится трюк с приравниванием первой производной нулю.
0
Насколько я помню, там используются немного другие трюки, вроде Soft thresholding https://en.wikipedia.org/wiki/Proximal_gradient_methods_for_learning
0
Еще можно притвориться что оптимизируешь сумму модулей при помощи взвешивания и МНК (IRLS) https://en.wikipedia.org/wiki/Iteratively_reweighted_least_squares
Еще (могу ошибиться, на самом деле) вроде стохастический градиентный спуск нормально работает с негладкими ф-иями потерь.
0
Можно, конечно. И метод этот, естественно, статистически корректен, при определенных допущениях в распределении ошибок. А минимум находят численными методами.
+6
Статья выглядит примерно так:
А сейчас, друзья, я расскажу вам про нейронные сети. Будем использовать такие-то картинки.
<вакуум>
Линейная регрессия — это…
Метод наименьших квадратов — это..
Откуда взялись эти понятия? Зачем они нужны? Куда успели исчезнуть нейросети? Причем еще до своего появления.

Вообще тема интересная и про методы неплохо написано, но коли уж это гайд, то неплохо было бы мотивировать возникновение данных понятий. Иначе у читателей никуда не денется
чувство недосказанности, недопонимания.
0
Линейная регрессия — это подвид обобщенной линейной модели с указанием, что ошибки распределены по нормальному закону. Начинать статью для новичков с GLM? Это уже будут далеко не новички. Новичкам (особенно со слабой математической базой) требуются простые, интуитивные примеры, море картинок, анимаций, идеализированные одномерные примеры. Я как-то встречал объяснение градиентного спуска будто бы это альпинист с горы шагает. Тогда меня это покоробило, теперь же я думаю, что любые методы хороши, если работают. А до GLM и максимального правдоподобия я также доберусь, но не стоит спешить. И слова «нейронные сети» еще не будет 3 или 4 части. Зато подойдя к этой модели вплотную, читающий будет во всеоружии.
+1
Начинать статью для новичков с GLM?

Нет, но стоит объяснить читателю, зачем вы даете этот материал и как он вообще связан с нейросетями. Поймите, даже в книжках по чистой математике обычно дается мотивировка перед вводом нового понятия. А у вас не книжка по математике, а хабр, где по умолчанию собрались люди с более прикладным подходом. Если слов «нейронные сети» не будет еще 3-4 части, то c таким обилием формул вы рискуете растерять больше 90% читателей.
Ну и в конце концов, называйте тогда статью не «ИНС для новичков», а «Математическая теория, необходимая для ИНС»(theoretical prerequisites).
-1
Линейная регрессия — это подвид обобщенной линейной модели с указанием, что ошибки распределены по нормальному закону

И опять неверно. Линейная регрессии не требует нормальности ошибок.

0
От них никуда не денешься. ИНС, в конце концов, математическая теория, как бы ее не натягивали на гипотетические модели мозга и нейронов. Я попытался объяснить все преобразования и раскрыть все, что обычно опускается в литературе, но мог и упустить что-нибудь. Что конкретно неясно и где сломалось «понимание»?
0
Не стоит отвлекаться на мой комментарий. Просто знайте, что для многих людей формулы — это как инопланетные иероглифы.
0
На самом деле стоит — я ведь не для профессоров или роботов пишу. Правда, некая база все же должна быть — я ее обозначил как базовый вузовский уровень, держа в уме технические вузы — линейная алгебра, мат. анализ, теория вероятности.
+2

Для новичков то как раз это очень нагруженная подача материала.
МНК можно объяснить и без дифференцирования таких сложных матричных выражений. Да и косяки с индексами…
Но интересно посмотреть, что дальше будет.
Не планируете материал сделать в виде тетрадок Jupyter?

+1
Соглашусь с комментарием. Если бы я не знал хорошо МНК, не выводил его формулы сам, не объяснял вывод сыну — ничего бы не понял из нагромождения формул и непонятного описания. Все это можно подать на порядок проще и понятнее. Если дальше про те вещи, которые я не знаю, будет в таком же духе — боюсь, понять это будет тяжело. Причем, самое обидное — не по причине собственной сложности моделей и концепций.
-1
Если у вас есть ссылки на более доступное объяснение, я был бы признателен, если вы их предоставите. Перед публикацией следующей части я вместе с правкой опечаток добавил бы больше информации. Jupyter не планирую. На Хабр нельзя будет вставить тетрадь, а форматирование съедает достаточно времени.
0

Из того, что я слушал, понятней всего было в курсе "Эконометрика" на курсере — ВШЭ, Борис Демешев. И Andrew Ng, само собой.
А вот пример объяснения градиентного спуска. Хоть и на английском, но все очень наглядно.

0
Если честно — каша полная. И это еще на относительно простых методах. Что будет происходить, когда дело дойдет до EM алгоритмов страшно подумать.

Так уж у нас повелось, что в Российской литературе любят кашу и в университетах старые преподаватели тоже любят. Не задумывались опубликовать это? Там бы это смотрелось лучше. Что касается новичков и статьи на хабре — вопрос, но скорее нет, чем да.
0
Автор, спасибо! Как говорится, «пиши исчо».
Буду рад увидеть реализацию нейросетей/алгоритмов на простом колхозном JS
0
Для тех, кто понимает по английски сильно рекомендую курс лекций: https://www.youtube.com/watch?v=PlhFWT7vAEw
От азов линейной регрессии до особо хитрых архитектур, причем четко и структурировано.
0
Вопрос, а вот функций prediction — зачем она вставлена в код generate_linear — тем более она работать не будет так как x в функцию не передается
Only those users with full accounts are able to leave comments.  , please.