Pull to refresh

Comments 25

Спасибо большое за курс на русском языке

UFO just landed and posted this here

оффтоп, а зачем в подборе весов машинное обучение? есть матаппарат для этого, при этом эксель в данном случае выбирает линейную модель, даже если ставишь полином, и не требует 500 итераций на расчет.
Затем, что это обучение, и приведенная модель хотя бы интерпретируемая, что облегчает понимание.
Можно сразу картинки в какой-нибудь GloVe засовывать и получать лейблы: собака, дом, автомобиль, но это сложнее объяснить.
Затем, что это обучение, и приведенная модель хотя бы интерпретируемая, что облегчает понимание.

Линейная модель, разумеется, тоже интерпретируемая.

Можно сразу картинки в какой-нибудь GloVe засовывать и получать лейблы: собака, дом, автомобиль, но это сложнее объяснить.

Может, вы про какой-то другой GloVe, но тот, который я знаю, относится к NLP, а не к computer vision.

Это простой пример обучения. Кстати, примерно тоже самое будет, если заставить человека переводить г. Цельсия в Фаренгейты, со временем он будет делать это интуитивно и с высокой точностью (не проводите таких экспериментов над детьми!)
А область эффективного применения МЛ и ДЛ совершенно другая. И не стоит использовать эти штуки там, где можно аналитическими методами построить модель или аппроксимировать по имеющимся данным и опытом в предметной области.

В каждой статье про нейронные сети одно и то же
Пришлось самому разбираться
В итоге пришёл к выводу что промежуточные слои совсем не нужны
Переход от одного слоя к другому можно описать перемножением входного вектора (размерность N) на матрицу коэффицентов (размерность NxM) в итоге получим вектор выходного слоя (размерность M) => IN x M1 x ....x Mk = OUT
пользуясь ассоциативность матриц IN x (M1 x ....x Mk) = OUT, где обозначим M = M1 x ....x Mk, получим IN x M = OUT
Вообще если упростить НС служит для подбора коэффицентов апроксимирующей функции, ну или как то так
В итоге пришёл к выводу что промежуточные слои совсем не нужны

Боюсь, это «революционный» вывод работает ровно до тех пор, пока у скрытых слоев стоит линейная активация.
Нелинейность уже не позволяет «схлопнуть» слои.
Недавно где то читал что от этой активации отказались
и как по мне правильно сделали
ибо ни кто не может толком объяснить смысла этой активации
есть мнение что это из за аппоратного устройства первых нейронов
Вообще если взять ручку с бумагой думаю можно будет придти к формулам что то типа
f (IN x M) = OUT или IN x f(M) = OUT
где f зависит от ф-ии активации, слоёв и тд
Недавно где то читал что от этой активации отказались

От какой? От линейной? Разумеется, десятилетия назад. Причем именно по той причине, которую вы описали.
Сейчас скрытые слои везде идут с нелинейностями семейства ReLU или сигмоид.

Сделать сеть способной аппроксимировать сложные нелинейные функции.

Чтобы (ха-ха!) вся многослойность не сводилась и к перемножению 2 матриц, а получалась сильно нелинейная функция. Есть теорема, что при достаточном количестве нейронов и слоев нейросеть может сколь угодно точно приблизить любую непрерывную функцию. Если убрать нелинейности, то приблизить можно будет только линейную. Ну, там F в С пересчитать. А люди хотят распознавать котиков на фото.
Слышал про эту теорему, но не разу не натыкался
Если убрать нелинейности, то приблизить можно будет только линейную

вовсе нет, достаточно передавать не линейные параметры
скажем не Х, а Х2
как используя не линейную активацию получить на выходе значение зависящее от Х2 или sin(X)?
например чтоб НС определила дальность полёта снаряда от угла наклона пушки?
Используйте вы трижды хитрую активацию, если на вход будете подавать только угол наклона, то на выходе будете получать линейную зависимость
Хотя если ещё раз подумать возможно и нет
но это колосальные вычисления по сравнению с перемножением матриц
Вообще желательно любое утверждение подтверждать каким нибудь простеньким примером, а то у большенства адептов ИИ, что не спроси на всё один ответ
Нейронная сеть это чёрный ящик и вообще какая то магия
Вообще желательно любое утверждение подтверждать каким нибудь простеньким примером

Весь computer vision вам в пример.
Если хочется чего-то более простого и наглядного, можно сгенерировать какие-нибудь простые не разделимые линейно датасеты и сравнить сети с линейными активациями и с нелинейными (например, что-то похожее легко сделать здесь: playground.tensorflow.org ).

то у большенства адептов ИИ, что не спроси на всё один ответ Нейронная сеть это чёрный ящик и вообще какая то магия

Чаще всего люди, разбирающиеся в машинном обучении, не называют это термином «искусственный интеллект».

как используя не линейную активацию получить на выходе значение зависящее от Х2 или sin(X)?

аппроксимация
magic

вовсе нет, достаточно передавать не линейные параметры
скажем не Х, а Х2

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


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

По результатам:
  • считают термин feature эквивалентным термину measurable property;
  • признак = свойство объекта или характеристика явления.


Думаю, что в данном случае слово признак является устоявшимся, а термины могут быть взаимозаменяемы.
**offtop для тех кто будет пытаться поставить tensorflow и jupyter в cygwin(надеюсь кому-то сэкономит пару часов жизни): ставите python в windows, делайте там virtualenv, потом переключаетесь в cygwin и там «source Scripts/activate». После чего всё нормально ставится через pip и оттуда же запускается.

А где можно что-то такое же внятное почитать, но не про сеть в один Dense слой, а про то как выбирать слои под данные (по каким критериям) и как правильно готовить сами данные?
Потому что все туториалы говорят "возьмите этот слой, добавьте такую функцию активации и ещё вот этот слой, возьмите вот тот датасет подготовленный на 100500 картинок — и вот вам 95% точности распознавания". А почему именно эти слои, почему такая последовательность, как данные подготовили и т.д. все опускают.

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

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

Я был бы очень признателен и ссылкам на английские источники по теме моего вопроса, если такие имеются.

Sign up to leave a comment.

Articles

Change theme settings