После 18-го февраля начнется открытый и бесплатный курс "Deep Learning на пальцах".


Курс предназначен для того, чтобы разобраться с современным deep learning с нуля, и не требует знаний ни нейросетей, ни machine learning вообще. Лекции стримами на Youtube, задания на Питоне, обсуждения и помощь в лучших русскоязычных DS-сообществах — ODS.ai и ClosedCircles.


После него вы не станете экспертом, но поймете про что все это, сможете применять DL на практике и будете способны разбираться дальше сами. Ну, в лучшем случае.


Одновременно и в том же объеме курс будет читаться для магистрантов Новосибирского Государственного Университета, а также студентов CS центра Новосибирска.


Выглядеть объяснение на пальцах будет примерно так:



Главная ссылка — dlcourse.ai. Подробности ниже.


Откуда вообще это взялось


Все началось с того, что один из бывших научных руководителей в очередной раз приехал в гости, и я спросил как у них дела с машинным обучением на родной кафедре НГУ. Оказалось, что они уже несколько лет ищут преподавателя и не могут найти. Я в шутку сказал, что в принципе могу, но придется устраивать телемост в Новосибирск из Кремниевой Долины.


Слово за слово, в следующем учебном году студенты кафедры приходили в аудиторию, и им там включали на прожекторе Youtube стрим. Они задавали вопросы, я отвечал с 5-секундной задержкой и вообще, будущее наступило. Огромное спасибо кафедре АФТИ ФФ НГУ и Юре Бабурову (buriy), который вел семинары!


Ну а если делать в 2019 году университетский курс на энтузиазме, то надо чтобы его материалы были открыты и доступны всем.


Тем более, когда я начинал это делать, на английском уже были прекрасные курсы о Deep Learning — и CS231n от Стенфорда и Andrej Karpathy, и fast.ai от Jeremy Howard. Про классический ML на русском есть отличный mlcourse.ai от yorko и ODS-братии, а про DL на русском полного комплекта (лекции, задания и живое место обсуждений) — я не нашел.


Сейчас, кстати, многие делают и выкладывают курсы про Deep Learning, и это замечательно. Если получится быть хоть какое-то время бейзлайном для других курсов — для меня это уже успех.


Что в курсе


Что вообще надо для полноценного курса? По мне — лекции, задания, и место для обсуждений и вопросов.


Лекции — будут стримами на Youtube каждую неделю, чтобы можно было задавать вопросы по ходу и потом.
Задания — будут выкладываться на github, все на Питоне в ноутбуках.
Для выполнения заданий иметь свой GPU необязательно — спасибо компании Google за Google Colab!


Место обсуждений — канал #dlcourse_ai в слаке ODS.ai и #dlcourse на ClosedCircles.


Еще мы в курсе попросим вас написать пост о какой-то современной статье и поучаствовать в актуальном соревновании по машинному обучению.


Как попасть в ODS

Доступ в ODS дается по инвайтам, но если вы в заявке укажете, что вы насчет курса dlcourse.ai, ваши шансы резко возрастут. Одновременно это уверенно отвечает на вопрос "чем этот курс лучше других".


Примерную программу можно посмотреть в варианте прошлого года, про который был пост на Хабре — https://habr.com/ru/post/414165/


TL;DR


  • Основы deep learning до формул, математики и основного метода тренировки.
  • Использование современных библиотек на примере PyTorch.
  • Применение к основным доменам — компьютерному зрению, обработке текста и звука, обучению с подкреплением.
  • Краткий обзор современного состояния.

Что надо знать для успешного прохождения курса


Три вещи!
Для каждой будет приложена проверочная картинка — если она вас не испугала, то вы в деле.


Немного питона:


Немного линейной алгебры:


Немного матанализа:


Если какая-то из картинок все же пугает, вот хороший список вариантов что с этим делать — https://vk.com/mlcourse?w=wall-158557357_3.


Кто вообще ведет курс


А ты правда продюсер? Да, я правда продюсер.

Лекции буду читать в основном я, но планируются и гостевые лекции от известных в узких кругах специалистов.
На всякий случай два слова обо мне — меня зовут Семен Козлов, я живу в Долине, руковожу машинным обучением в стартапе Instrumental, раньше работал в machine learning team в Dropbox. Еще раньше я занимался компьютерной графикой, делал игры, и помогал deep learning тем, что давал видеокартам причину существовать.


С остальным помогают:


  • Юрий Бабуров, специалист по анализу текста и распознаванию речи
  • Павел Петроченко и Денис Денисенко из OnPositive
  • Максим Вахрушев и Кирилл Бродт из CS-Центра Новосибирска
  • Александр Гончаренко из Expasoft
  • Лена Бручес из 2gis
  • Гостевые лекторы — пока не спойлю кто!
  • Вся тусовка ODS, помогающая собирать материал для лекций.

Еще мне жуть как помогает жена, поддерживая и освобождая время. Готовить все это — какое-то безумное количество усилий.


Как начать!


На dlcourse.ai можно записаться на аносы в почте или в Telegram-группе.
Первая лекция — уже через две недели, после 18-го февраля.
Если вы давно собирались разобраться с этим всеми нейросетями — вот он, шанс!


А еще — если у нас все получится, то неминуемо все курсы всех университетов будут вестись именно так. Поборемся за прекрасное будущее!

Комментарии (68)


  1. DrAndyHunter
    05.02.2019 11:09

    Почему-то у меня ссылка не доступна dlcouse.ai, и подскажите канал в телеграмме, чтобы подписаться. Спасибо!


    1. sim0nsays Автор
      05.02.2019 11:12

      Ай-ай, dlcourse.ai конечно же! Поправил, спасибо!


  1. youngspecialist
    05.02.2019 11:23

    Спасибо, Семен! Давно ждали курс по DL на русском языке!


  1. mspaint
    05.02.2019 11:30
    -5

    Скажите, пожалуйста, почему ML == python?
    Есть же нормальные языки, например java.
    И deeplearning4j вроде как местами лучше tensorflow и конкурентов.

    А все курсы упорно впаривают кактус (питон).
    (это не претензия, а вопрос)


    1. sim0nsays Автор
      05.02.2019 11:34
      +2

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

      Мне он нравится, на самом деле. За скорость итерации.


      1. mspaint
        05.02.2019 12:11
        -2

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

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

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

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

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


        1. roryorangepants
          05.02.2019 12:20
          +1

          Скорость у жабки в разы выше.

          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 платформы, говорит другое.


        1. saluev
          05.02.2019 20:36
          +1

          Подозреваюсь, что имелись в виду итерации разработки. Всегда можно быстро всё переделать, даже если изначальная идея была далека от совершенства.


      1. eugenk
        05.02.2019 19:15

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


        1. sim0nsays Автор
          05.02.2019 20:02
          +1

          Я специально со времен Dropbox фоточку про это сохранил


          1. Stas911
            05.02.2019 21:12

            И что, в Дропбоксе на питоне не пишут в итоге?


            1. sim0nsays Автор
              05.02.2019 22:41

              Наоборот, в основном пишут как раз на Питоне, потому что хватает одного из предыдущих четырех пунктов.


        1. nikolay_karelin
          07.02.2019 07:45

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


          1. eugenk
            07.02.2019 07:56

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


    1. roryorangepants
      05.02.2019 12:12
      +3

      Скажите, пожалуйста, почему ML == python?

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

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

      Ох лол.
      Вы, наверное, не особо работали с DL-фреймворками, да?


    1. buriy
      05.02.2019 12:34

      А какой у вас критерий «нормальности» языка программирования? И в 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 вы задачу решите быстрее и лучше, но тогда это не говорит ничего о сравнении языков, а лишь о ваших вкусах и навыках.


      1. mspain
        05.02.2019 16:05
        -4

        У вас наиболее адекватный ответ, но… Если под задачу подходит два языка или более, то почему такое засилие питона? ВСЕ книги, которые я находил, с примерами на питоне.

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

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

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

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

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


        1. roryorangepants
          05.02.2019 16:14
          +1

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

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

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

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

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

          Я бы удивился, если бы хоть один фреймворк на сайте честно писал, мол, «да, ребят, у нас интерфейс не очень удобный, но вы держитесь».


        1. buriy
          05.02.2019 23:00
          +3

          >У вас наиболее адекватный ответ, но… Если под задачу подходит два языка или более, то почему такое засилие питона? ВСЕ книги, которые я находил, с примерами на питоне.
          Ну, тут вам ответили другие комментаторы, попробую собрать всё вместе: потому что сложилась экосистема (есть готовые библиотеки), потому что чистая 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.


          1. mspaint
            06.02.2019 06:31

            Спасибо за труды. Удивительно, столько слов написано, а правильный ответ мне всё равно пришлось между строчек выискивать. Что-то в духе «мы ученые, культуры программирования нет, IDE тяжело, getRow тяжело, классы какие-то непонятные. где мой фортран?».

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

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

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


            1. AndreyGaskov
              06.02.2019 07:08

              Что-то в духе «мы ученые, культуры программирования нет, IDE тяжело, getRow тяжело, классы какие-то непонятные. где мой фортран?».

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


            1. uhf
              06.02.2019 08:18

              В ML программирования мало, в привычном Вам понимании. Классы и десятиэтажные абстракции там не нужны, сложные алгоритмы программировать не требуется. Ну кроме разработчиков фреймворков, но их по пальцам перечесть.
              А нужны в ML рутинные манипуляции с данными и возможность быстрого прототипирования, и с этим Python справляется куда лучше Java.


            1. buriy
              06.02.2019 09:45

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


              1. mspaint
                06.02.2019 11:14

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

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

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

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

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

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

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


                1. buriy
                  06.02.2019 14:08

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


                  1. mspaint
                    07.02.2019 06:06
                    -1

                    >на практике это несущественно

                    бла, бла, бла… на практике жабка это промышленная платформа, на которой пишут и топовые СУБД (neo4j, elasticsearch, cassandra, hadoop) и качественный фронт и супермасштабируемый бэк (кафки там всякие), и standalone прожки и GUI и всё остальное. А питон это школиё, студенты, джангосмузи и дедушки-фортранщики.

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


                    1. kraamis
                      07.02.2019 06:44

                      Стесняюсь спросить, вы какую мысль хотите донести?

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

                      На питоне очень много библиотек заточенных под анализ вообще и под ML в частности.


    1. UndeadDragon
      05.02.2019 14:12

      нормальные языки

      например java.

      Я надеюсь, что это просто вброс жирного тролля.


      1. dim2r
        05.02.2019 17:18

        наконец-то люди стали адекватно оценивать джаву! а то у джавистов самогипноз уже перевалил разумные пределы


    1. mAAriellla
      05.02.2019 15:18

      Есть же нормальные языки, например java.

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

      Сколько организаций и добровольцев внесли вклад в развитие Java за последнее время? Насколько динамично в принципе развивается экосистема Java, что кардинально нового появилось за последнее время, язык Java в принципе улучшается или застрял на одном месте в своем развитии? Java — чемодан без ручки? Это синоним устаревшего кода со старыми костыльными решениями, а выбросить его проблематично?

      Вижу тенденцию отказа от Java в пользу Kotlin в области андроид-разработки, включая корпорацию Google. В популярных браузерах прекратилась поддежка Java. На англоязычных форумах постоянно маячат одни и те же вопросы от программистов, наподобие «Is Java dying», и причины этих вопросов, думаю, лежат на поверхности.


      1. aPiks
        05.02.2019 17:53

        Я не топлю за Java, но тут вы неправы. Сообщество Java огромно, вы можете посмотреть просто на количество форумов, ресурсов и тд по Java. По поводу фреймворков, развития и тд., тут тоже всё в порядке. Начиная с самой Джавы, которая постоянно развивается и перенимает приемы функционального программирования, заканчивая россыпью библиотек и фреймворков для всего и вся. Если вы не из мира Джава и не знаете что там происходит, то и говорить об этом не стоит. Котлин, Груви, Гозу как и GoLang были созданы для снижения порога вхождения в разработку, в том числе над существующими проектами, а также для упрощения разработки. Они упрощают разработку, но жертвуют безопасностью и стабильностью. Я тоже постоянно слышу о том, не умирает ли Джава, но достаточно взглянуть на статистику использования, статистику увеличения проектов на Джаве, чтобы понять, что Джава себя прекрасно чувствует и развивается.
        На счёт Питона — я не знаю, писать не буду и сравнивать тоже. Но вы пишите глупости про Джаву.


        1. Ktator
          05.02.2019 19:05

          А можно поподробнее, как именно

          Котлин, Груви, Гозу как и GoLang
          жертвуют безопасностью и стабильностью
          ?
          Хотелось бы со ссылками на авторитетные источники.


        1. mAAriellla
          05.02.2019 19:26

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


          предоставьте, пожалуйста, статистику, хотелось бы тоже ознакомиться


          1. aPiks
            05.02.2019 19:55
            -1

            Вас в гугле забанили что-ли или лень одолела?
            insights.stackoverflow.com/survey/2018#most-popular-technologies
            www.tiobe.com/tiobe-index


            1. mAAriellla
              05.02.2019 22:32

              Как и ожидалось, предоставить/ доказать

              • статистику увеличения проектов на Джаве
              • По поводу фреймворков, развития и тд., тут тоже всё в порядке. Начиная с самой Джавы, которая постоянно развивается и перенимает приемы функционального программирования, заканчивая россыпью библиотек и фреймворков
              • Котлин, Груви, Гозу как и GoLang жертвуют безопасностью и стабильностью

              у вас не получилось.
              Спасибо. Больше вопросов не имею. Всего вам доброго.


        1. dim2r
          05.02.2019 22:56

          Джава себя прекрасно чувствует и развивается.

          По моему она хороша для бизнес приложений, где нужна стабильность и переносимость.
          А вот например GPU прикрутить или заблокировать кусок кода в физической памяти, чтобы он в swap никогда не уходил — это неспецифичные для джавы темы. Но эти неспефичные темы как раз и ограничивают её развитие.


    1. eugenk
      05.02.2019 19:04

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


      1. boogiebomzh
        06.02.2019 06:03

        Жаба — не рептилия!


        1. kraamis
          06.02.2019 06:04

          И не язык :)


        1. eugenk
          07.02.2019 08:05

          Виноват. Амфибия! :)))))


      1. mspaint
        06.02.2019 13:21
        -1

        >Как бы стандарт, увы, тут ничего не поделаешь

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

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

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

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


        1. roryorangepants
          06.02.2019 13:32

          правда про MXNet

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

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

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

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

          Так флаг вам в руки. Никто не мешает делать DL на Java. Просто пройти тот же путь на Python было бы быстрее и проще.


  1. TiesP
    05.02.2019 11:41

    Спасибо!
    А по указанной ссылке

    Про классический ML на русском есть отличный mlcourse.ai от yorko

    только на английском вроде, на русском не нашёл.


    1. kraamis
      05.02.2019 11:46

      Он изначально был на русском. На YouTube поищите.


      1. TiesP
        05.02.2019 12:01

        Спасибо, нашёл… даже вот ссылка на хабр


  1. kraamis
    05.02.2019 11:47

    А записи лекций будут на YouTube?


    1. buriy
      05.02.2019 12:00

      Да.


  1. Ryav
    05.02.2019 13:39

    Последняя картинка чуть напугала, можете набросать «что почитать» перед началом курса? :)


    1. dedyshka
      05.02.2019 15:19
      +1

      Фихтенгольц — Курс математического анализа
      Кудрявцев — Курс математического анализа
      Демидович — Сборник задач
      Антидемидович

      И авторы несколько лукавят насчёт «немного матанализа»…
      чтобы понимать немного матанализа нужно понимать много чего на чём это всё основано иначе это путь «манки-кодера».


      1. valis
        05.02.2019 16:11
        +2

        Спасибо. Вообще хотел бы углубится в ML но т.к математику подзабыл в виду не использования хотелось бы подтянуть начиная с азов.
        Есть вообще какой-то комплексный курс по математики от азов до матана?


        1. Fenzales
          05.02.2019 18:15

          Есть вообще какой-то комплексный курс по математики от азов до матана?
          Д. Письменный — Конспект лекций по высшей математике. Потом перейти на что-то более серьезное (тот же Фихтенгольц).

          Если же даже школьную программу не помните — то сначала по диагонали пробежать «Алгебру и начала мат.анализа» Мордковича за 11 класс. По диагонали — потому что там очень много совсем уж примитива.


        1. Antisignanus
          07.02.2019 09:26

          Можно найти курсы по матану на openedu.ru (курсы предоставляют МФТИ, МГУ и другие ВУЗы), а так же на ocw.mit.edu


    1. yorko
      05.02.2019 17:25
      +1

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


    1. nikolay_karelin
      05.02.2019 18:26
      +1

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


  1. Stepan555
    05.02.2019 16:08
    -1

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


    1. yorko
      05.02.2019 17:26
      +1

      А чем не устраивает план, обозначенный в предыдущей статье автора, на которую он тут ссылается?


      1. Stepan555
        05.02.2019 21:48

        А зачем тогда новый курс? Можно и по старому пройтись.


        1. sim0nsays Автор
          05.02.2019 22:43

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

          Но общая программа и темы те же.


          1. Stepan555
            06.02.2019 09:59

            несколькими новыми темами

            темы те же


            1. sim0nsays Автор
              06.02.2019 10:59

              Ох. Ну хорошо, «обсуждаемые домены применения те же»


  1. volk0ff
    05.02.2019 17:27
    +1

    Семен, как раз сейчас начал смотреть ваши лекции с того года.
    (Кстати очень интересно рассказываете)
    Дошел до формул вычислений градиентов.

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

    Спасибо!


    1. sim0nsays Автор
      05.02.2019 18:09

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


    1. buriy
      06.02.2019 00:53

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

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

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

      Мат. статистика:
      Базовое понятие среднего и дисперсии, базовое понимание распределения случайной величины, что такое нормальное распределение. Формула полной вероятности (что сумма вероятностей равна 1). Желательно вспомнить теорему байеса и решить пару задач на вероятность.

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


      1. kraamis
        06.02.2019 05:58

        Это на самом деле не так много.

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