Pull to refresh

Comments 72

UFO just landed and posted this here
Спасибо, Семен! Давно ждали курс по DL на русском языке!
Скажите, пожалуйста, почему ML == python?
Есть же нормальные языки, например java.
И deeplearning4j вроде как местами лучше tensorflow и конкурентов.

А все курсы упорно впаривают кактус (питон).
(это не претензия, а вопрос)
Исторически сложилось, что весь современный deep learning на питоне, сейчас уже некуда деваться, все фреймворки написаны для него. Почему так сложилось — вопрос сложный, многогранный и без одного ответа. Думаю, потому что сошлись звезды популярности и в научной (у которой до этого был R и Matlab), и в инженерной среде (у которых Java, Ruby и что там еще). Вот Питон оказался таким разумным пересечением.

Мне он нравится, на самом деле. За скорость итерации.
>весь современный deep learning на питоне
>все фреймворки написаны для него

Ну неправда же. :) У tensorflow есть java API хоть и нестабильное.

И про deeplearning4j я сразу написал. Судя по skymind.ai/wiki/comparison-frameworks-dl4j-tensorflow-pytorch они лучше всех :)

>За скорость итерации

Не знаю, что за итерация такая. Скорость у жабки в разы выше. И вполне можно быстро прототипировать.
Скорость у жабки в разы выше.

ML-фреймворки используют под капотом математику на C/C++/Fortran, а DL-фреймворки вообще с GPU работают, так что сравнение скорости Java vs Python тут не актуально.

Ну неправда же. :) У tensorflow есть java API хоть и нестабильное.

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

И про deeplearning4j я сразу написал. Судя по skymind.ai/wiki/comparison-frameworks-dl4j-tensorflow-pytorch они лучше всех :)

Во-первых, напрямую сравнения dl4j с TF+Keras / PyTorch там нет, только обзор этих фреймворков. Во-вторых, статистика использования на ресурсах, не топящих за JVM-based платформы, говорит другое.
Подозреваюсь, что имелись в виду итерации разработки. Всегда можно быстро всё переделать, даже если изначальная идея была далека от совершенства.
У меня к питону главная претензия в его собственной медлительности. По сути питон это просто клей между множеством сишных (и фортрановских) библиотек. Пока ты делаешь именно то, что этими библиотеками предусмотрено, всё замечательно. Но попробуй сделать что-то чего в библиотеках нет! Придется либо писать на самом питоне с жуткими тормозами, либо писать свою библиотеку на С. Впрочем матлаба и R это касается пожалуй в ещё большей степени. В этом отношении меня очень интересует julia. Достаточно симпатичный язык. И быстрый сам по себе. И библиотеки уже появляются в неплохом количестве. Жаль времени нет этим как следует заняться, я вообще несколько ушел сейчас от научных вычислений. Если бы кто тут взялся вести подобный курс на julia… Но ладно, это мечты. Спасибо и за этот курс :)
И что, в Дропбоксе на питоне не пишут в итоге?
Наоборот, в основном пишут как раз на Питоне, потому что хватает одного из предыдущих четырех пунктов.

Еще есть Cython и Numba, именно для компиляции или в библиотеку или JIT.

Честно говоря слышал про это, но так пока и не поигрался. Увы, я сейчас в основном занимаюсь микроконроллерами, FPGA и тому подобными вещами, вплоть до пайки макеток собственными ручками. Сейчас записался на этот курс, так что про ползучую рептилию (в смысле питон) придется конечно вспомнить. А вообще жаль конечно, машинным обучением и подобными вещами я весьма интересуюсь, но в этом опыта ноль, плюс лет очень много. На работу никуда не берут. Вот и приходится с этим играться чисто в порядке хобби :)))
В этом отношении меня очень интересует julia.


Если выбираете язык для мат расчетов, то обратите внимание на то, как работает арифметика. Например, что будет при переполнии MAX_INT+1? В большинстве языков числа идут по кругу, хотя должно выдаваться исключение. Без исключений очень трудно некоторые расчеты отлаживать, так как они тихо работают неправильно. Checked arithmetics я встречаю редко — видел только в Delphi и С#. Все остальное меня разочаровывает ибо уже 2019 год на дворе, а элементарные проблемы не решены.
Хе-хе, это Вы ещё не моделировали на С/C++ штуки, которые в дальнейшем нужно реализовывать на верилоге! :)))) Вот где кошмар так кошмар! Там про разрядную сетку и переполнения приходится помнить ВООБЩЕ ВСЕГДА. Говорят есть библиотека SystemC, специально для таких вещей предназначенная, но поскольку этим приходится заниматься не особо часто, так этого пока и не освоил.
Я один проектик так и забросил изза невозможности диагностировать порчу чисел. Теперь думаю, не переписать ли его на С#, так там есть

checked{
a=b+c;
}
И всё-таки, можно ли записаться на курс, а задания выполнять не на Python? Мне важно будет не скорость работы получить, а понять сами алгоритмы и концепции. Спасибо.
Скажите, пожалуйста, почему ML == python?

Частично — потому что питон позволяет быстро писать код и легко манипулировать данными (во многом из-за динамической типизации), что ускоряет итерации по экспериментам.
Частично — эффект снежного кома: чем больше людей использует питон для ML, тем больше делается фреймворков для ML на питоне, и тем больше людей начинает учить ML на питоне.

И deeplearning4j вроде как местами лучше tensorflow и конкурентов.

Ох лол.
Вы, наверное, не особо работали с DL-фреймворками, да?
А какой у вас критерий «нормальности» языка программирования? И в Java и в Python есть байткод, объекты и модули, ООП и ФП, сильная типизация. Что с Python не так?
Обычно аргумент один: скорость работы кода. И две придирки: отступы-против-скобочек и необязательная типизация в Python.
Но, для начала, надо понимать, что DeepLearning4J, как и другой фреймворк для нейросетей — это только основа. На нём нет большинства решений для разных конкретных задач, и если вы не страдаете синдромом NIH, вам всё равно придётся использовать уже написанные конкретные решения. Поэтому почти всегда сравнивать надо экосистемы и эффективность работ в этих экосистемах.
Современная платформа для DL гетерогенна: вам нужен быстрый (обычно, нативный) код для загрузки данных, код для препроцессинга данных, язык для соединения частей воедино (glue language), код для быстрых векторых операций на CPU, код для быстрых векторных операций на GPU / TPU, возможно, код на мобильных устройствах.
Как в Java и DL4J в 2019м году с поддержкой видеокарт и эффективным кодом для них?
Как в Java с быстрой загрузкой картинок? С эффективным быстрым векторным кодом на CPU?
Так какие задачи на себя тогда берёт Java? Препроцессинг и glue-language. Препроцессинг обычно не является узким местом в плане скорости работы, и редко когда содержит действительно много кода, и тогда использование Java, по сути, только в качестве glue-language делает его ничем не лучше питона для типичных задач DL, при этом он крайне переусложнён и многословен, и итоговая скорость программирования этих задач оставляет желать лучшего (скрестим пальцы за Kotlin, Scala и прочие попытки исправить эти неудобства языка без потери скорости работы кода). Конечно, если вы знаете Java и его экосистему и не знаете Python и его экосистему, то, наверное, на DL4J вы задачу решите быстрее и лучше, но тогда это не говорит ничего о сравнении языков, а лишь о ваших вкусах и навыках.
У вас наиболее адекватный ответ, но… Если под задачу подходит два языка или более, то почему такое засилие питона? ВСЕ книги, которые я находил, с примерами на питоне.

Вопрос можно переформулировать: почему книги про ML ориентированы не на квалифицированных ынтерпрайз кодеров (где жаба безусловный стандарт), а на околокомпьютерный сброд (студенты, менеджеры и прочие не осилившие компилятор и нормальную IDE)?

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

Что жаба годится только на glue совершенно не согласен. То что жабка самый (либо топовый) универсальный язык (очень мало отстающий от плюсов по скорости.) это тоже аксиома.

>Как в Java и DL4J в 2019м году с поддержкой видеокарт и эффективным кодом для них

Судя по их сайту, отлично. Но не проверял.
Вопрос можно переформулировать: почему книги про ML ориентированы не на квалифицированных ынтерпрайз кодеров (где жаба безусловный стандарт), а на околокомпьютерный сброд (студенты, менеджеры и прочие не осилившие компилятор и нормальную IDE)?

Переформулирую: книги по ML ориентированы не на галерный ынтерпрайз сброд (где Java — безусловно один из стандартных языков), а на математиков и алгоритмистов, понимающих, что язык надо выбирать под задачу.

То что жабка самый (либо топовый) универсальный язык (очень мало отстающий от плюсов по скорости.) это тоже аксиома.

Это не аксиома и это требует доказательства. Предоставить его, боюсь, будет трудновато.

Судя по их сайту, отлично. Но не проверял.

Я бы удивился, если бы хоть один фреймворк на сайте честно писал, мол, «да, ребят, у нас интерфейс не очень удобный, но вы держитесь».
>У вас наиболее адекватный ответ, но… Если под задачу подходит два языка или более, то почему такое засилие питона? ВСЕ книги, которые я находил, с примерами на питоне.
Ну, тут вам ответили другие комментаторы, попробую собрать всё вместе: потому что сложилась экосистема (есть готовые библиотеки), потому что чистая Java не очень удобна как glue language, потому что при обучении Python намного ниже порог вхождения, потому что учёные-математики приходят с ещё более высокоуровневых языков.
Дополнительный комментарий по остальным вопросам:
У вас в большинстве комментариев прослеживается скрытый комплекс превосходства над окружающими. Вы абсолютно уверены, что у кого программа быстрее работает, тот и круче, и у кого нет IDE — тот недопрограммист. Не надо так. Попробуйте от этого комплекса избавиться хотя бы при написании комментариев, если хотите действительно разобраться в ситуации. Заодно и минусы вам перестанут ставить слишком эмоциональные читатели, которых, я уверен, коробит именно это.
Но Java же быстрее Python, почему в DL не пишут на Java?
Давайте разберём все нерассмотренные ещё факторы.
Для начала, насколько действительно важна для бизнеса скорость языка программирования?
(Подойдёт любой язык, который не слишком медленный для задачи)
Для какого процента бизнесов скорость ЯП настолько важна, что люди готовы переходить с Python на Java, а с Java на C/C++? И где место в этих задачах языку Java, если они из-за скорости перейдут с Java на C? Если дело в скорости, почему вы тогда не хвалите Caffe и CNTK, которые на C? Они же ещё быстрее.
Java — эдакий универсально-неудобный середнячок.
Но всё-таки, пусть Java не самый быстрый, но он же быстрее Python?
Понимаете, даже фреймворки на Python обычно загружает видеокарточки для DL на 100%, а быстрее работать уже нельзя. Шах и мат.
Но, наверное, ещё тот язык лучше, где IDE мощнее — раз вы пишете про «нормальную IDE».
Наверняка вы удивитесь тому, что я скажу, но Java-программисты не мыслят жизни без IDE для Java, потому что без IDE на Java программировать практически невозможно! Жизнь без паттернов — потому что без паттернов на Java писать трудно. Жизнь без классов — по той же причине. Каждое чтение файла или объединение двух массивов превращается в мини-квест — даже писать glue-код на Java трудно.
Куча комплексов, именуемых преимуществами. Может быть, это всё и полезно при написании безопасного сетевого кода или тонн кода бизнес-логики — это те области, где Java хвалят. Но здесь подобных нужд нет, и преимущества Java оборачиваются недостатками. Он не самый быстрый, он не самый удобный, он не имеет достаточно развитой экосистемы для большинства задач. А из-за инертности разработчиков и закрытости решений в Enterprise-сегменте он недостаточно быстро эту экосистему развивает.
>>Как в Java и DL4J в 2019м году с поддержкой видеокарт и эффективным кодом для них
>Судя по их сайту, отлично. Но не проверял.
А я как раз спросил это, чтобы вы попробовали разобраться самостоятельно. Ладно, тогда придётся объяснять.
Но Java хорош для быстрого кода на CPU и GPU.
Ага, они наконец-то портировали Numpy на Java, и назвали его ND4J. Вместо tensor[x] предлагается писать tensor.getRow(x), и тому подобное. Для быстрого умножения используется С-шная библиотека BLAS, многие другие функции наверняка оптимизированы до нативного кода (или же работают в среднем в 2-4 раза медленнее, чем могли бы, в основном, из-за ограничений оптимизаций JVM для массивов, и медленнее, чем в нативно-оптимизированном Numpy). Так говорите, Java хорош не как glue language для DL?
Для видеокарт, опять же, язык Java не используется. Я именно это имею в виду, когда говорю о видеокартах, а не о том, что в DL4J не могут написать Nvidia-С-шные кернелы для видеокарты и нативный (C-шный) код для запихивания данных на видеокарту.
Подытожим:
Java — хороший язык, но для DL у него нет ровно никаких преимуществ над Python.
При одинаковой скорости развития, он вполне мог бы быть на равных или даже обогнать Python для DL.
Спасибо за труды. Удивительно, столько слов написано, а правильный ответ мне всё равно пришлось между строчек выискивать. Что-то в духе «мы ученые, культуры программирования нет, IDE тяжело, getRow тяжело, классы какие-то непонятные. где мой фортран?».

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

ML набирает обороты, ынтырпрайзу можно было бы предлагать какие-то продукты. Для этого надо палочкой потыкать, не изучая новые языки и не набирая в штат питонистов и седовласых академиков. Это выгодно всем и писателям книг и разрабам фреймворков. А по факту «в команду надо питониста брать, не нравится, отвали»

Можете и дальше игнорировать тот факт, что людей, пишущих на жабе, миллионы. Из них наверняка 80% питон не знают. Можно дальше пойти, писать все книги по ML на эсперанто. Чтобы остались ну совсем уж труъ сатанисты. :)
Что-то в духе «мы ученые, культуры программирования нет, IDE тяжело, getRow тяжело, классы какие-то непонятные. где мой фортран?».

Зачем Вы так? Я вот ни разу не учёный, культура программирования какая-никакая имеется (>10 лет C#, 1 год Java и ещё немного других языков). Но для анализа, визуализации данных и ML использую и буду использовать Python (в прошлом использовал SAS BASE — страшный язык 80x, но даже он был удобнее C# и Java). Потому что это просто удобнее: REPL, компактность языка, развитое сообщество и куча подключаемых библиотек.
В ML программирования мало, в привычном Вам понимании. Классы и десятиэтажные абстракции там не нужны, сложные алгоритмы программировать не требуется. Ну кроме разработчиков фреймворков, но их по пальцам перечесть.
А нужны в ML рутинные манипуляции с данными и возможность быстрого прототипирования, и с этим Python справляется куда лучше Java.

Ого, вы даже после моего комментария не понимаете, что у вас громадный культурный bias, не позволяющий вам оценивать мир программирования беспристрастно. Вы просто не видите того, что не подтверждает ваши тезисы. Такое поведение типично для верующих, расистов и фанатов политических партий (и вообще любых фанатиков), но такое не считается нормальным для конструктивных дискуссий в интернете. Так мозг устроен: вера не работает на логике, это логика подстраивается под веру, вместе с системой ценностей.
Так вот, я так понимаю, вы верите, что Java лучше других языков, и, видимо, потому что она универсальная!
Уверяю вас, силами команды на python, c, и любом другом универсальном языке программирования можно сделать всё то же самое и примерно с теми же трудозатратами. (немного меньшими — если язык и экосистема лучше соответствует задачам, чем Java, или большими — если язык и экосистема хуже соответствуют задачам). Именно об этом я говорил.
Засилье Java в Enterprise вызвано не совершенством или универсальностью этого языка, а, в основном, консерватизмом в этой области. По сути, Java выбирается, потому что "Java проверена временем". Альтернативы не рассматриваются, ведь "у нас уже есть команда универсальных Java-разработчиков". Доходит даже до идиотизма, когда команды выбирают решения на Java даже когда они замедляют скорость решения задач в разы и десятки раз, потому что это для них проще, чем выучить другие языки программирования и стеки технологий. Последний пример, который я помню — Spark + ML-библиотека была выбрана из-за Java-распределенность-значит-быстро, но вся распределенность уступала обычному локальному сетапу на python в 10 раз по скорости, потому что эти энтерпрайз-программисты не умели оптимизировать граф потока данных.
Да и вообще, я считаю, что универсальность — ругательное слово, ради универсальности всегда приходится чем-то жертвовать.
И я не учёный, я программист-консультант, я с Java в Enterprise работал много лет. Я имею возможность сравнивать и умею это делать.

>не позволяющий вам оценивать мир программирования беспристрастно

А у тебя есть сертификат о беспристрастности? На слово не привык доверять неизвестным мущщинам.

>вся распределенность уступала обычному локальному сетапу на python в 10 раз по скорости

Да, это крутейший пример негодности жабы и прекраснояти питона. Ещё можно вспомнить про задачи на полмикросекунды и си. Жабка и медленнее си в 100500 раз будет за счёт медленного старта.

>Уверяю вас, силами команды на python, c, и любом другом универсальном языке программирования можно сделать всё то же самое и примерно с теми же трудозатратами

А если добавить в условие «чтобы скорость работы была на уровне жабки»? Удачи в написании например Frontend на питоне (уровня GWT/Primefaces) или си. Про си я вообще ржу под столом. Это ansi который, даже в стринги не умеет? Да, да, с теми же трудозатратами для широкого круга задач.

Всё, передаю пальму адекватности AndreyGaskov.

Эхх, слова про зависимость от задачи опять были проигнорированы, и потом откуда-то снова взялось требование на скорость работы, про которое я уже объяснял. Возможно, сложные рассуждения и примеры вас путают. Такой уровень дискуссии меня не устраивает.
Давайте сформулирую в последний раз: пригодность Java в конкретном случае так же зависит от задачи, как и у других языков программирования. Просто эти задачи разные. Возможно, у стеков на Java количество приемлемо решаемых задач средним количеством усилий и больше, чем у некоторых других языков и стеков — я про это упоминал, но на практике это несущественно, если смотреть с той точки зрения, что нужно стараться выбирать лучший язык и стек под задачу. Про NIH я тоже уже упоминал.
Это фундаментальное различие в наших системах ценностей. Приземлю:
Ваш тезис: "я что угодно могу сделать на Java"
Мой тезис: "выбирая язык и стек технологий под задачу, можно решить её эффективнее, чем на одном любом ЯП". Критерии эффективности тоже могут быть разными: это и трудозатраты, и достижение целей бизнеса.

но тратить время на изучение совершенно не нужного мне недоязыка смысла не вижу.

Иногда полезно выходить из зоны комфорта.


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

UFO just landed and posted this here
наконец-то люди стали адекватно оценивать джаву! а то у джавистов самогипноз уже перевалил разумные пределы
UFO just landed and posted this here
Я не топлю за Java, но тут вы неправы. Сообщество Java огромно, вы можете посмотреть просто на количество форумов, ресурсов и тд по Java. По поводу фреймворков, развития и тд., тут тоже всё в порядке. Начиная с самой Джавы, которая постоянно развивается и перенимает приемы функционального программирования, заканчивая россыпью библиотек и фреймворков для всего и вся. Если вы не из мира Джава и не знаете что там происходит, то и говорить об этом не стоит. Котлин, Груви, Гозу как и GoLang были созданы для снижения порога вхождения в разработку, в том числе над существующими проектами, а также для упрощения разработки. Они упрощают разработку, но жертвуют безопасностью и стабильностью. Я тоже постоянно слышу о том, не умирает ли Джава, но достаточно взглянуть на статистику использования, статистику увеличения проектов на Джаве, чтобы понять, что Джава себя прекрасно чувствует и развивается.
На счёт Питона — я не знаю, писать не буду и сравнивать тоже. Но вы пишите глупости про Джаву.
А можно поподробнее, как именно
Котлин, Груви, Гозу как и GoLang
жертвуют безопасностью и стабильностью
?
Хотелось бы со ссылками на авторитетные источники.
UFO just landed and posted this here
UFO just landed and posted this here
Джава себя прекрасно чувствует и развивается.

По моему она хороша для бизнес приложений, где нужна стабильность и переносимость.
А вот например GPU прикрутить или заблокировать кусок кода в физической памяти, чтобы он в swap никогда не уходил — это неспецифичные для джавы темы. Но эти неспефичные темы как раз и ограничивают её развитие.
Как бы стандарт, увы, тут ничего не поделаешь. Это как если Вы хотите заниматься музыкой, даже просто петь, Вам придётся освоить фортепьяно. Я бы сам предпочел такой курс на julia, на scala, в крайнем случае на java, питон я не очень люблю. Но есть приходится что дают. В любом случае с одной рептилии на другую (в смысле с питона на жабу), Вы перепрыгнете без особого труда. Так что лучше поучаствуйте. Я например собираюсь, хотя сейчас довольно прилично занят.
Виноват. Амфибия! :)))))
>Как бы стандарт, увы, тут ничего не поделаешь

Стандарт лишь среди жабофобов, как я вижу.

>Я бы сам предпочел такой курс на julia, на scala, в крайнем случае на java

Сегодня вспомнил про Dive into Deep Learning (сайт d2l.ai) Книга от амазоновских спецов, правда про MXNet, но примеры на julia и scala вроде.

Я пока склоняюсь к «почитать теорию в любой из книг про tensorflow» и потом по tutorial-ам deeplearning4j (там и жаба и скала и интеграция с остальным жабохозяйством хорошая)
правда про MXNet

Я уже кидал распределение использования фреймворков, да?

примеры на julia и scala вроде

Почему-то не вижу Java в этом предложении.

Я пока склоняюсь к «почитать теорию в любой из книг про tensorflow» и потом по tutorial-ам deeplearning4j (там и жаба и скала и интеграция с остальным жабохозяйством хорошая)

Так флаг вам в руки. Никто не мешает делать DL на Java. Просто пройти тот же путь на Python было бы быстрее и проще.
UFO just landed and posted this here
Он изначально был на русском. На YouTube поищите.
UFO just landed and posted this here
Последняя картинка чуть напугала, можете набросать «что почитать» перед началом курса? :)
UFO just landed and posted this here
Спасибо. Вообще хотел бы углубится в ML но т.к математику подзабыл в виду не использования хотелось бы подтянуть начиная с азов.
Есть вообще какой-то комплексный курс по математики от азов до матана?
Есть вообще какой-то комплексный курс по математики от азов до матана?
Д. Письменный — Конспект лекций по высшей математике. Потом перейти на что-то более серьезное (тот же Фихтенгольц).

Если же даже школьную программу не помните — то сначала по диагонали пробежать «Алгебру и начала мат.анализа» Мордковича за 11 класс. По диагонали — потому что там очень много совсем уж примитива.
Можно найти курсы по матану на openedu.ru (курсы предоставляют МФТИ, МГУ и другие ВУЗы), а так же на ocw.mit.edu

Кину еще раз комент к предыдущей статье Семена — про подготовку по математике и Python

Не устану рекомендовать "Глубокое обучение" от Сергея Николенко с соавторами. Вышла в 2017, и как введение — очень хороша.

Всё-таки, объявляя набор на курс, надо бы вывесить содержание. А лучше ещё и расписание.
Вот к примеру, прогнозирование временных рядов будет в вашем курсе?
Слушать про спуск шарика по кривой поверхности и про биологический нейрон кому-то надо, а кто-то может по-позже присоединиться.
А зачем тогда новый курс? Можно и по старому пройтись.
Он будет отличаться работой над ошибками, несколькими новыми темами, более детальным обзором современного состояния и, конечно, выступлений гостевых лекторов.

Но общая программа и темы те же.
несколькими новыми темами

темы те же

Ох. Ну хорошо, «обсуждаемые домены применения те же»
Семен, как раз сейчас начал смотреть ваши лекции с того года.
(Кстати очень интересно рассказываете)
Дошел до формул вычислений градиентов.

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

Спасибо!
Крайне желателен, к сожалению или к счастью. Одним из заданий будет реализовать свою собственную нейтронную сеть и ее натренировать, то есть вычислить градиенты, написать код тренировки итд. Без матана и линейной алгебры будет тяжело.
Мат. анализ:
Для практической работы и общего понимания курса нужны будут только его некоторые небольшие части, касающиеся вычисления производных в одномерном и многомерном случае. Поскольку на них построен весь DL, нужно эту тему хорошенько освежить в памяти.
Если кто знает/найдёт хорошие видео- или текстовые лекции с объяснением производных одной переменной и частных производных, пожалуйста, шлите ссылки в ответ на этот комментарий.

Для работы со звуком будет упоминаться преобразование Фурье.

Высшая алгебра:
Нужно умение складывать, умножать и транспонировать матрицы. Умножать матрицу на константу. Знать про некоммутативность умножения матриц. Операции над векторами как аффинные преобразования (матриц). Скалярное произведение векторов.
Будет упомянуто сингулярное разложение матриц (может даже дважды).

Мат. статистика:
Базовое понятие среднего и дисперсии, базовое понимание распределения случайной величины, что такое нормальное распределение. Формула полной вероятности (что сумма вероятностей равна 1). Желательно вспомнить теорему байеса и решить пару задач на вероятность.
Например, такую задачу.
Ночью таксист совершил наезд и скрылся с места происшествия. В городе работают две компании такси, «Зеленая» и «Синяя». Вам представили такие данные:
85% городских такси — из «Зеленой» компании, а 15% — из «Синей».
Свидетель опознал такси как «Синее». Судебная экспертиза проверила надежность свидетеля в ночных условиях и заключила, что свидетель правильно опознает каждый из двух цветов в 80% случаев и неправильно — в 20% случаев.
Какова вероятность того, что такси, совершившее наезд, было «Синим», а не «Зеленым»?

Из дискретной математики:
Помнить идею, что при выборке из N предметов без повторений число сочетаний — очень быстро растёт при увеличении N.

Базовые знания математики:
Знание графиков логарифма и экспоненты, косинуса и тангенса, умение упрощать и преобразовывать формулы, уметь вычислять значение функции в точке, знать геометрический смысл производной. Арифметическое и геометрическое среднее двух чисел.

Вычислительная математика и программирование на Python:
Умение запрограммировать математическую функцию на Python и проверить её работоспособность. Базовые навыки программирования на Python: циклы, условные операторы, функции, классы. Работа со встроенными типами: строками, массивами, словарями. Типы данных: bool, int, float32. Работа с библиотеками: базовые навыки поиска документации, работы с новыми библиотеками, вызов методов, понятие модуля в питоне.
Передача функции в качестве аргумента. Навыки тестирования и отладки кода.
Области существования переменных (scopes), идея сборки мусора.
Знание основ теории сложности программ — это которая про O(N).
Это на самом деле не так много.

Это у меня еще с университетского курса в голове осталось, хотя это было 15 лет назад, и оценки по ней у меня были не лучшие.
Захожу на dlcourse.ai, заполняю поля, нажимаю Subscribe и ничего не происходит. Что я делаю не так?

В моем случае, внизу появилась задпись "вы зарегистрированы", форма очистилась, каких-либо подтверждений на почту не прилетело.

В моём случае это было из-за защиты от отслеживания в Firefox:
The resource at “https://facebook.us7.list-manage.com/subscribe/post-json?u=...&id=...&c=jQuery190034443197359643307_1550183743729&EMAIL=...&FNAME=...&LNAME=...&b_a320e1b7c8bb271f1153b18f3_418af07ec4=&subscribe=Subscribe&_=...” was blocked because content blocking is enabled.
Хотелось бы уточнить, обучение будет онлайн? На русском?
Sign up to leave a comment.