Русский
Русский
English
Статистика
Реклама

Самообучение

Перевод Учимся читать научные статьи у Эндрю на из Стэнфорда

11.07.2020 16:20:05 | Автор: admin

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

Альберт Эйнштейн

Каждому, кто серьёзно занимается машинным обучением, необходимо научиться понимать то, что публикуется в научных статьях. Подобные публикации делают учёные, находящиеся на переднем крае исследований в соответствующих областях. Это искусственный интеллект (AI, Artificial Intelligence), машинное обучение (ML, Machine Learning), глубокое обучение (DL, Deep Learning) и многие другие сферы.



Для того чтобы оставаться в курсе последних открытий и расширять собственные знания, нужно обладать научным складом мышления и соответствующими привычками. Технологии AI, ML и DL развиваются с невероятной скоростью. Поэтому нам нужно, чтобы не отставать от прогресса, запастись соответствующими знаниями. Эти знания можно получить только в ходе работы с научными публикациями.

Здесь вы найдёте руководство по эффективной работе с научными статьями. В частности, мы остановимся на следующих темах:

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

Кто такой Эндрю н?


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

Для начала хочу в двух словах рассказать о том, кто такой Эндрю н (Andrew Ng).

Эндрю н является доцентом Стэнфордского университета. Он, вероятно, самый известный (и обладающий самой большой зрительской аудиторией) преподаватель, читающий лекции в сфере машинного обучения. Эндрю, кроме того, является сооснователем Deeplearning.ai и Coursera.

Как люди приобретают полезные навыки?


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

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

Методика подбора материалов для чтения


Талантливому человеку, который хочет трудиться в сфере машинного обучения, лучше всего на чём-то специализироваться. Например, достойно одобрения обладание общими сведениями из сферы машинного зрения (Computer Vision). Но тот, у кого есть специализированные знания и опыт использования основных методов решения задачи оценки положения объекта в пространстве (Pose Estimation, PE) будет выглядеть гораздо привлекательнее с точки зрения потенциального работодателя, которому нужен специалист соответствующего профиля.

Давайте, на примере задачи PE, разберём методику работы с научными публикациями по интересующей нас теме.

1. Подбор материалов


На первом шаге работы мы сформируем подборку ресурсов, относящихся к предмету нашего интереса. В понятие ресурсы входят научные публикации, статьи с Medium, материалы из блогов, видеозаписи, GitHub-репозитории и так далее.

Если поискать в Google по фразе pose estimation, в нашем распоряжении окажется набор ссылок на основные ресурсы, имеющие отношение к интересующему нас вопросу. На этом шаге работы нашей целью является сбор всего того, что нам может подойти. Это и видео с YouTube, и документация, касающаяся практической реализации интересующих нас механизмов машинного зрения, и, конечно, научные статьи. Тут, в идеале, не нужно ограничиваться каким-то определённым количеством ресурсов, которые вы считаете важными. Главное составить итоговый список материалов, которые могут принести вам пользу.

2. Анализ материалов и оценка уровня их понимания


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


Таблица ресурсов, используемая для оценки уровня их понимания

Рекомендуется постараться прочесть как минимум 10-20% содержимого каждого документа, добавленного в подобную таблицу. Это позволит ознакомиться с таким объёмом материала, которого хватит для того чтобы достаточно точно проверить то, насколько материал соответствует нашим нуждам.

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

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

У меня нет ответа на этот вопрос, а вот у Эндрю ответ есть.

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

Если речь идёт о понимании 50-100 материалов, это значит, что вы очень хорошо разбираетесь в вопросе.

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


Обновлённая таблица для оценки уровня понимания ресурсов

3. Краткое описание материалов


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

Теперь, после того, как мы нашли материалы, которые стоит прочесть, мы переходим к их чтению.

Чтение научной статьи


Когда что-то читают ради того, чтобы понять, одного прочтения материала недостаточно. Эндрю говорит, что чтение всей статьи за один присест, возможно, не лучший способ работы, позволяющий сформировать понимание материала.

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

4. Первое прочтение


При первом прочтении статьи сосредоточьтесь на заголовке, аннотации и рисунках.

5. Второе прочтение


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

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

6. Третье прочтение


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

7. Следующие прочтения статьи


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

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

Вот пример того, что я называю здесь глубоким исследованием. Я прочитал эту статью по представленной здесь методике, разобрался в ней, а потом, на её основе, написал 4 собственные статьи (1, 2, 3, 4).

Вопросы, которые стоит задать самому себе при чтении статьи


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

Вот эти вопросы:

  1. Опишите то, чего пытается достичь автор статьи, или, возможно, то, чего он уже достиг.
  2. Если вы встречаетесь с новым подходом к решению задачи, с новой техникой или методикой, опишите их ключевые элементы.
  3. Что именно в статье вы считаете самым полезным для себя?
  4. Какие материалы, упомянутые в статье, вам хочется прочитать?

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


Мне, в поисках информации, очень помогли некоторые ресурсы, список которых я привожу ниже.


Вы вполне можете составить подобный список самостоятельно.

Итоги


Долговременные результаты даёт постоянная стабильная учёба, а не изучение чего-либо набегами.

Эндрю н

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

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

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

Как вы читаете научные статьи?

Подробнее..

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

22.01.2021 16:14:24 | Автор: admin

Начало

Здравствуй, читатель.

Это моя первая статья на данном ресурсе и надеюсь она будет полезной для всех ребят, которые задались вопросами и целью - "Как мне стать хакером?", "Как мне самостоятельно учиться и где это делать?", "С чего начать свой путь?", "Где мне найти нужную информацию и вообще как её искать по тематике хакинга?".

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

А так, как с размерами моего эго, может потягаться только сверх-массивная черная дыра в кластере супергалактик - то я постараюсь сделать эту статью/гайд/обзор - максимально объемным и полезным для новичков любого уровня, чтобы он стал ЛЕГЕНДАРНМ и на него все ссылались отныне и вовеки веков.

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

Немного обо мне

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

Меня зовут Ричард, на просторах интернета меня никто, нигде и никогда не знал ни под какими именами, потому что я, собственно говоря, никогда, нигде и не светился.

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

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

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

На большее я и не могу надеяться.

Так как за годы проб, придумывания отговорок, причин и метаний (что собственно говоря типично для ребят моего поколения) в стиле - "Что же мне стоит делать?", "Куда лежит душа?", "Это не интересно", "Здесь скучно", "Тут тупо", "Здесь вообще меня воротит от сферы деятельности", "Да ну не, может мне бросить всё и стать мотогонщиком ралли гонок ДАКАР?", "Не, может лучше мне поступить в MIT и заняться роботехникой?", "Или может быть я просто ленивый и бесконечно прокрастинирующий фантазёр, и буду всю жизнь работать посредственным специалистом в какой-нибудь конторке?". Или просто потому что я никак не мог перестать лениться и избегать той работы, которая мне сразу оказалась не по душе. Даже если мне нечего есть и моё обыденное существование подвергается опасности, я всё равно буду продолжать это делать. Такой вот я упёртый/глупый/самонадеянный/сверх меры самоуверенный в себе баран.

Но, в итоге, остановился я твёрдо и уверенно на теме хакинга.

Это оказалась та бесконечно-фрактальная тема и область, где моё нескончаемое любопытство (а проще говоря ОКР и желание быть готовым ко всему, всегда, везде), а также вечное стремление узнавать новое, неспособность сидеть долго на уже досконально изученном до дыр месте, и желание применять полученные знания на высоком уровне скилла на практике - наконец-то гармонично собрались, как будто так и надо было, в единую картину - "это то что надо, чувак, давай обоснуемся пока в этих чертогах." - вещал я себе сам, радуясь как ребёнок, думая что мои потуги наконец-то подходят к концу (ага, щас).

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

Итак, после нудного и не особо полезного вступления, начнём.

Процесс обучения

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

Мне хотелось бы разделить условно процесс самообразования/самообучения на 2 важных составляющих.

И это:


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

2) Обладать навыком поиска нужной информации ( это значит уметь искать быстро (потому что ваше время - это ограниченный и самый ценный ресурс который есть у каждого из нас), это значит знать где искать, чем искать, грамотно фильтровать и после, и самое важное - грамотно её структурировать/каталогизировать, хранить, дополнять и после удобно использовать).
Особенно если мы говорим про хакеров, для которых навык OSINT'a (Open source intelligence - разведка из открытых источников) - является одним из самых crucial умений в списке профессиональных умений.

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

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

Я хотел бы подытожить описанное выше следующим образом (сразу прошу учесть, это сугубо субъективный опыт моей жизни, я не претендую на звание преподавателя и тем более ментора, мне бы себе найти оного, но я всегда оспаривал современные методы школьного/университетского обучения в силу их кусочности, грубости, ригидности и как следствие ущербности, посему я буду описывать своё видение)

Я разделю ниже указанные области на аспекты. Так должно быть проще и понятней.

  • Аспект 1.

    Правильно формулируйте и задавайте вопросы.

    Изучение любой темы, будь это поиск уязвимостей XSS, осваивание основных инструментов для проведения пентеста, вождение мотоцикла или как выполнять правильно болевой приём Гяку-Удэ-Гарами - должно начинаться с двух вопросов.

    1) Что я уже знаю об этом?

    2) Чего я ещё не знаю про это?

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

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

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

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

    Таким образом вы обхватываете сразу две основных области в ваших головушках и разом убиваете двух зайцев

    Вы проходите один из самых важных этапов в процессе обучения - формированию структуры.

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

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

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

    Вы скажете, хорошо Ричард, это всё круто и здорово, но знать что-то не равно уметь делать это, да к тому же на профессиональном уровне.

    И будете абсолютно правы.

    Ведь практический опыт и теория неразрывно связаны.

    А точнее практика это ваша теория, которая обрела физическую форму на бумаге, в ваших действиях и словах.

    И тут стоит перейти к второму важному аспекту.

  • Аспект 2.
    Ошибайтесь.

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

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

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

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

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

    НО

    Для прогресса это делать запрещено.

    Ни у кого из нас нет доступа к шару с предсказаниями и тому, что будет с нами в будущем.
    А потому никто не может знать, принесет ли мне занятие хакингом истинное удовольствие в жизни, стану ли я топ-10 на hackerone и заработаю милльоны-милльонов долларов на этом? (спойлер - если вы решили заниматься хакингом исключительно ради денег можете закрыть эту статью и забыть обо всём что прочитали как страшный сон, эта сфера точно не для вас просто потому что вы быстро выгорите и вам быстро надоест), стоит ли мне записаться на курсы? Или заниматься самому? Читать мне эту книгу или вот эту?

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

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

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

    Всё что вы увидите - это нескончаемые падения и вставания после падений. 0 оправданий, 0 поиска причин почему не удалось и самокопания в себе. Это лишь чистые, честные постоянные попытки в которые дети вкладывают все свои усилия, навыки и знания.
    До тех пор пока не будет достигнут единственный верный результат - уметь ходить как все.

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

    Проблема это лишь эмоциональное состояние. Без эмоций - это просто ситуация.

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

    Баланс доступности задачи и её сложности - сохраняет живость и интерес к ней.

    Можно прибегнуть к разным подходам, таким как Закон Парето или нагуглить кучу разных видео с Ted talks, или вот такую диаграмму в виде пирамиды,, или очередное мотивирующее видео - суть остается одна и та же.

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

    Посему закон простой - пойми как устроен и функционируешь ты - поймешь как можно контролировать себя - поймешь что можно делать со своей жизнью.

    В этом вся суть хакинга.

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

  • Аспект 3.

    Выгорание и фрустрация.

    Сфера информационной безопасности невообразимо огромна. Пентест, реверс, беспроводные сети, физический пентест, OSINT, ботнеты, форензика, 0-day уязвимости, DDOS/DOS атаки, сетевые уязвимости, уязвимости мобильных устройств, военная промышленность, банковское ПО, криптография и шифры - это лишь часть того, что я вспомнил наугад из головы, где информационная безопасность не просто важна, а играет жизненно-важную роль для функционирования той или иной отрасли.

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

    Я потратил весь прошлый год, только на то, чтобы вспомнить университетскую базу и в целом вновь окунуться в мир инфобеза, понять что вообще сейчас происходит, какие хакеры кого терроризируют, какие тулзы используются в криминалистике, а какие в пентестах, что такое реверс и как пользоваться burpsuite. И почти всегда меня сопровождало ощущение "ё-маё, ну неужели я такой тупой, что не могу запомнить такие простые вещи как HTTP заголовки или модель OSI, или как мне и когда собирать информацию о цели, что такое SQL инъекция и как вообще мне её применять".
    Но я старался не обращать внимание на подобные мысли, потому что я понимал, что я сейчас выстраиваю свой базис, основу на которую я буду сверху накидывать уже костяк своих умений и далее плясать в те сферы, которые мне будут наиболее интересны.
    Посему я просто давал подобным мыслям, фрустрации и нежеланию продолжать немного повариться во мне - отвлечься на ютуб, покушать вкусной еды, покачать пресс - и возвращался вновь к тому, на чём останавливался.


    Постоянно напоминайте себе о том, куда вы идёте, зачем и почему. Это полезно, это подзаряжает мотивацию, напоминает вам и позволяет высунув голову из тонны документации и текста с практикой - оглядеться, осознать на каком вы этапе и что вообще вы делаете сейчас и куда движетесь.(порой когда увлечешься какой-то темой, можешь вообще забыть с чего ты начинал, я не единожды начинал читать про модель OSI, а заканчивал в итоге про настройку сертификатов HTTPS соединения и как это сделать на apache2 и nginx или начинал изучать HTTP методы, а через полчаса находил себя за просмотром видео по тому как ломать wi-fi сети).

    Также нужно помнить что каждый из нас по разному толерантен к фрустрации и неудачам. Для кого-то затяжные провалы и неудачи могут не иметь серьезного эффекта на процесс обучения, работы и повседневной жизни, для кого-то даже легкая неудача равносильна гибели и провалу всей жизни, которая выбивает из распорядка дня на продолжительное время и заставляет зациклиться мыслями про неё.

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

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

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

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

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

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

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

    Главное помните о том, что ваши эмоциональные переживания временны.
    Чем чаще вы сталкиваетесь с чем-то и учите себя бороться с переживаниями - тем более толерантными к подобным переживаниям вы становитесь.

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

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

Hack is life. Или мой чемоданчик джентльмена

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

Ранее я не раз повторял фразу, что мир информационной безопасности невероятно велик.

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

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

1) Каков порядок изучения?

Отвечая просто - я считаю, что есть 3 пути.
Все они в любом случае зависят от вашего бэкграунда и начальных знаний.
Можно заниматься бесплатно и самостоятельно - тогда времени уйдет больше и придётся его потратить на то, чтобы настроиться сначала на область занятий, подготовить материал, учебный план и расписать свой путь (он же роадмап), затем перейти к самостоятельным занятиям, отслеживать свой прогресс, уметь мотивировать себя, ставить посильные задачи и т.д. и т.п..
Можно покупать курсы и получать структурированную информацию в одном месте и сразу.
Можно комбинировать.
Можно качать курсы с торрентов (я бы так ни за что не сделал, вы что).

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

Можно идти сверху-вниз.
Начав изучать к примеру устройство ОС (linux, windows) и спускаться вниз по мере возникновения понимания как работает программа или наоборот не понимания как именно обменивается программа данными, как она их получает и как вообще происходит вся магия за монитором.

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

Или идти так, как удобно тебе.

Да-да, можно создать свой порядок следования и изучения тем, инструментов, ОС, чего угодно.
Например, я пользуюсь mind-map программой XMind ZEN (не реклама если чо) - которая позволяет мне создавать удобные майнд-мепы.

Пример моих майнд-мепов.

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

Однако, несмотря на многие "гайды" и подобные моим статьи - в интернете на зарубежных ресурсах таких как hackthebox, tryhackme ,pentesterslab (не спешите бежать гуглить, все ссылки будут ниже) - есть уйма уроков структурированных в том формате, в котором стоит начинать изучение темы хакинга.


Отвечая на второй вопрос.

2) "Где оттачивать скилы и что изучать?"

Думаю здесь уже стоит ввести некоторую разбивку на категории, которые я создал исключительно сам исходя из своих субъективных суждений.


Категории следующие:

1) Ресурсы для обучения (места где можно тренироваться использовать полученные навыки по пентесту и хакингу + ctf площадки типа hackthebox).

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

  • https://academy.hackthebox.eu/ - онлайн академия от достаточно популярного ресурса hackthebox. Здесь вы сможете найти модули по фундаментальным знаниям (Windows, Linux fundamentals, как работать с основными тулзами в kali linux, что такое обфускация, что такое Stack-Based Buffer Overflows on Linux x86, DNS enumeration и многое-многое другое). Основа бесплатна - остальные Tier - модули обучения - платны. Но цены весьма адекватные, а материал для старта вполне адекватен по качеству и количеству + сам Hackthebox тут же под рукой, на котором можно отточить все только что полученные навыки.

  • https://picoctf.org/ - CTF площадка от университета Carnegie Mellon на которой можно оттачивать свои навыки пентестера

  • https://www.professormesser.com/ и https://www.youtube.com/user/professormesser - полноценные курсы как в бесплатном, так и в платном доступе по сертификатам

  • https://www.pentesteracademy.com/ - очередной достаточно знаменитый ресурс для тренировок и оттачивания своих навыков (дебаггеры, wi-fi челенджи, network pentesting, web pentesting, forensics) - к тому же до 31 января 2021 у них сейчас вроде как скидоны идут (как и в течении года) - можно урвать хороший доступ к куче лаб и обучающим курсам и виде.

  • https://www.hacker101.com/ - замечательный ресурс с достаточным количеством видео и упорядоченным списком что изучать и в каком порядке - более чем достаточен для старта и дальнейших самостоятельных занятий.

  • https://www.learnqa.ru/security - не проходил, но по отзывам для старта веб-пентеста самое то.

  • https://academy.tcm-sec.com/courses и https://www.youtube.com/c/thecybermentor - один из первых ресурсов, которые я нашёл, когда начал изучать и искать инфу по теме хакинга - TheCyberMenthor - на сайте представлены платные курсы, на ютубе есть огромные 5-15 часовые полноценные курсы по пентесту, веб-пентесту, основам линукса и куче всего остального. Прелесть в том, что на ютубе, в бесплатной 15 часовой версии обучающей по пентесту - есть практически всё, что нужно для того, чтобы посмотреть на рабочий день пентестера, увидеть как юзаются тулзы.

  • https://book.hacktricks.xyz/ - хотите освоить основы эскалации привелегий на linux и windows? работать с shell'ом и заливать paylod'ы? Тогда вам точно следует изучить блог данного парня.

  • https://www.hacking-lab.com/ - очередная площадка для отработки CTF - но в этой есть также лабы на которых можно потестить sms spoofing и в целом "пощупать" уязвимости телефонии.

  • https://ctftime.org/ - площадка на которой можно принимать участие в upcoming CTF батлах и кубках. Можно командой, можно в соло.

  • https://sqlbolt.com/ - хотите научиться работать с SQL и понять вообще как он устроен, научиться писать запросы? Точно пройдите этот тренажер.

  • https://linkmeup.ru/sdsm/ - я думаю такая титаническая работа как "сети для самых маленьких" и иже с ним не нуждается в рекламе. А если вы не знаете кто это и что это - то тем более бегом туда.

  • https://github.com/bkimminich/juice-shop - очередной аналог DVWA или metasploitable2-3 - уязвимые ОС и веб сайты, для оттачивания своих навыков в эксплуатации уязвимостей.

  • http://www.iso27000.ru/katalog-ssylok/hakerskie-saity - ребят, ну самые настоящие хакерские сайты, что вам ещё надо?

  • https://xakep.ru/ - олды тут?

  • https://stepik.org/course/127/syllabus - думаю мне не нужно рекламировать Stepik? Помимо этого курса есть с десяток других, которые стоит обязательно просмотреть. Как по общим знаниям операционных систем, так и по сетям, устройству ЭВМ, основам программирования и куче всего интересного и полезного

  • https://www.hacksplaining.com/ - великолепный ресурс с инфографиками, гифками и пояснениями основных уязвимостей и того, как именно они работают. Очень рекомендую. Люблю такие простые и крайне понятные инфографичные ресурсы.

  • https://xss-game.appspot.com/ - хотите научиться находить XSS уязвимости за которые можно получать до 7500$ за одну найденную уязвимость? Тогда стоит посмотреть что там по ссылке.

  • https://www.hackers-arise.com/ - вырвиглазный форум с полезной инфой старого поколения и образца.

  • ine.com - великолепный ресурс, который имеет как платные, так и бесплатные модули, по которым можно набить себе базу по пентесту, реверсу и в целом по информационной безопасности.

  • https://pentesterlab.com/ - отличный ресурс для тренировок по CTF и пентесту с кучей лаб. Дешево стоит если покупать на год доступ.

  • https://jehy.github.io/mami/# - просто полезный ресурс, почитать про уязвимости.

  • https://overthewire.org/wargames/ - хотите научиться основным командам и работе в терминале ? Тогда этот ресурс с мини играми расположенными на удаленных ssh лабах точно для вас. Самый простой порог вхождения в CTF + обучает одновременно азам работы в линуксе.

2) Форумы, каналы, блоги, библиотеки книг.

Наиважнейшая ортодоксальная часть как форумы.
Список книг для обязательно (и не очень) изучения.

  • Таненбаум Э. - Компьютерные сети (5-е издание)

  • Таненбаум - Современные операционные системы

  • Олифер - Компьютерные сети. Принципы, технологии, протоколы (кстати в прошлом году вышел свежак этой книги)

  • Яворски П. - Основы веб-хакинга. Как зарабатывать деньги этичным хакингом.

  • Скабцов Н. - Аудит безопасности информационных систем (2018)

  • Эриксон Дж. - Хакинг искусство эксплойта (старая книга, но переиздание было пару лет назад, в любом случае актуальна как для новичков, так и для среднего уровня)

  • Мануал по Shodan - hackerlib (гуглите, ищите сами, заодно потренируетесь в OSINT)

  • Макконел С. - Совершенный код. Практическое руководство по разработке программного обеспечения

  • Парасрам Ш. - Kali Linux. Тестирование на проникновение и безопасность (2020)

  • Гейер Дж. - Беспроводные сети. Первый шаг.

  • Херцог, О'Горман, Ахарони - Kali Linux от разработчиков (Компьютерная литература) - 2019

  • Милосердов А. - Тестирование на проникновение с помощью Kali Linux 2.0 - 2015

  • Кофлер М. - Linux. Полное руководство - 2011

  • Колисниченко Д.Н. - Linux. От новичка к профессионалу, 6-е изд. (В подлиннике) - 2018

  • https://codeby.net/ - форум с кучей полезной инфы. Также у них есть пара курсов от создателей форума, по отзывам вроде ок. Я не тестил.

  • https://hackaday.com/ - англоязычный форум, свежие новости, но в основном всякий варезный и diy фан.

  • https://hacker-basement.ru/ - подвальчик хакера - нужно другое пояснение?

  • http://rus-linux.net/ - хотите быть в курсе последних изменений в мире линукса - надо сидеть тут.

  • http://dorlov.blogspot.com/2011/05/issp-cissp-all-in-one-exam-guide.html - говорят монстры среди монстров и отцы отцов только смогли прочитать эту книгу от начала и до конца.
    Ну а в целом очень полезное чтиво для уже подготовленного ума и начинающего.

  • https://hackware.ru/?page_id=1735 - просто куча разной литературы по хакингу и безопасности. Чекай и наведи порядок сам

3) OSINT.

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

  • Научись пользоваться google dorks или google hacking - невероятно расширяет доступ к поиску нужной информации, особенно если овладеешь этим скиллом как следует.

  • https://osintframework.com/ - отец всех отцов - старый добрый osintframework - почти все нужные тулзы собранные в одном месте, просто выбери нужную ветку, найди название фреймворка или тулза - загугли и юзай.

  • https://telegra.ph/Podrobnoe-opisanie-besplatnyh-modulej-v-Maltego-09-27 и https://telegra.ph/CHAST-2-09-29-2 - что такое Maltego и как пользоваться одним из основных инструментов для OSINT'a читать здесь (в двух частях)

  • https://www.spiderfoot.net/ - платформа с различными автоматизированными тулзами и плюшками для тех чья работа - пробив и поиск информации.

  • https://namechk.com/ - хотите пробить пользователя по нику и узнать где ещё он зарегистрировался с подобным? Ваш выбор номер 1 (не включая конечно фреймворки внутри kali)

  • https://www.social-searcher.com/social-mention/ - надо отследить часто повторяющиеся и упомянутые тренды? Тогда эта тулза выручит

  • https://hunter.io/ - надо найти связь почты и компании? Определенно пользуйся этим. Более 100 млн индексированных страниц дадут точный результат.

  • https://vas3k.ru/blog/389/ - полезная статья с которой началось моё знакомство с OSINT и техниками поиска информации.

  • https://search.buzz.im/ - в пояснении думаю не нуждается.

  • Обязательно посмотреть видео и почитать книги Андрея Масаловича - если ваша цель стать крутым OSINT'ером

4) Youtube каналы и курсы (какие-то скачаны с торрентов, какие-то куплены по акциям, "скидончики в пятерочке наше всё").

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

  • https://www.youtube.com/c/PwnFunction/videos - основы OWASP-10 уязвимостей в формате красочных, простых и понятных коротких видео.

  • https://www.youtube.com/watch?v=fB3DI48MNno&list=PLnjNR4-S-EVqfJWovxEJyb7I0IOkKkoYM - не самый свежий, но вполне годный полноценный туториал курс по работе с kali linux и первыми шагами в направлении пентеста.

  • https://www.youtube.com/c/HackerSploit - пентест, основы работы с линуксом и терминалом, работа с основными тулзами в kali linux, разбор и объяснение основных уязвимостей и былых 0-day, научиться использовать Metasploite и много-многое другое.

  • https://www.youtube.com/c/KirillSemaev - старый добрый Семаев, хотите обучиться как юзать линукс в боевых задачах и условиях - милости прошу (его видео не имеют никакого особого отношения к пентесту или безопасности, скорее к общим навыкам работы с линуксом)

  • https://www.youtube.com/c/webpwnized - один из лучших англоязычных чуваков, которые очень понятно и доступно объясняют основы линукса, пентеста, настройки burp и owaspzap и тонна других полезных тем разбирается.

  • https://www.youtube.com/c/devnull1337 - кодинг, хакинг, много кофе - что нужно ещё? Иногда разбирает пройденные таски на picoCTF - который я указал ещё в первом пункте. Так что если застряли где-то - не стесняйтесь дать себе подсказку.

  • https://www.youtube.com/channel/UCQfwKTJdCmiA6cXAY0PNRJw - канал преподавателя Тимофея Хирьянова - нужны академические азы программирования, информатики и основ ЭВМ? Вам точно сюда

  • https://www.youtube.com/c/JohnHammond010 - прям как CyberMentor что упоминал я выше, только со своей колокольни.

  • https://www.youtube.com/user/RapidBug - очень толковая и крутая девчонка, которая расскажет, объяснит и покажет как начать свои похождения в веб-пентесте и научиться находить первый баг за который заплатят денюжку на hackerone.

  • https://www.youtube.com/channel/UCSXe3vOtFuMQnchDyGPi-fQ/videos - хакинг для самых маленьких. Не самое свежее, но годное.

  • https://www.youtube.com/watch?v=wBp0Rb-ZJak - фул курс по линуксу.

  • https://www.youtube.com/c/%D0%9A%D0%B0%D1%82%D0%B0%D0%BD%D0%BE%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%D1%85/ - вот какая ссылка бывает, когда название канала на русском языке - узнать про нетсталкинг, осинт, слежку через камеры - и в общем популярным языком на коротких, красочных видео завлечь и развлечь себя ненадолго темой хакинга можно тут.

  • https://www.youtube.com/c/LiveOverflowCTF - достаточно известный канал и известный хакер в своих кругах.

  • https://www.youtube.com/c/ChrisGreer/videos - работа с wireshark, сетями, протоколами

  • https://www.youtube.com/c/devcentral/ - очень толковый канал, на котором можно найти подробные и очень понятные объяснения различных технологий (шифрование, безопасность, devops и многое другое)

  • Linux для начинающих (OTUS)

  • [OTUS] Пентест. Практика тестирования на проникновение (2019)

  • Хакинг веб-приложений, атака на куки (2018 Pluralsight)

  • https://www.youtube.com/channel/UC5gufuYHPSsJA-jul-iwyXA Курс по сетям и основам коммуникаций (Андрей Созыкин)

  • [HTML Academy] Профессиональный онлайнкурс HTML и CSS, уровень 1 (2020)

  • [jsexpert] [Евгений Калюжный] Понятный JavaScript (Beginner)

  • [SkillBox] [Вадим Шандринов] Python-разработчик

  • [Udemy] Полный Курс Python 3 от Новичка до Мастера (Питон, Пайтон) [Jose Portilla]

  • Kali Linux Для Начинающих (2018) Видеокурс (HackersAcademy)

  • Learn Hacking Windows 10 Using Metasploit From Scratch (iSecurutyPro) - какой-то индийский курс

  • Pentester Academy - Python For Pentesters

  • Udemy - SQL для начинающих с нуля до сертификата Oracle (2019)

  • Модель OSI и стек протоколов TCP-IP (GeekBrains)

  • Тестирование защищенности веб-приложений (software-testing ru)

  • Jason Dion - Анатомия кибератаки начинающий взлом с Metasploit! (2019) https://cloud.mail.ru/public/3ebg/o1im3g5fE/

  • Изучаем Python и взлом систем с нуля (2018) Заид Саби

5) Программирование.

Хоть тема и смежная, но в любом случае жизненно-важная для любого уважающего себя хакера.

6) WEB и всё что связано с веб-пентестом.

  • https://portswigger.net/web-security/learning-path - ресурс компании portswigger - создателей BurpSuite - имеют собственную академию онлайн в которой уйма и тонны полезной информации по веб-пентесту. Если хотите в будущем заниматься поиском багов и тестированием сайтов на уязвимости - вам точно следует вдоль и поперёк прочитать данный ресурс.

  • https://urlscan.io/ - надо узнать список субдоменов, доменов и технологий которые юзаются на сайте? urlscan твой друг товарищ и брат.

  • Расширение Wappalyzer в Chrome- позволяет просматривать расширения и технологии используемые на сайте.

  • Поставьте себе Firefox Multi-Account Containers - незаменимая вещь для проведения веб-пентестов. Позволяет легко и быстро переключаться между 4 разными пользователями с 4 разными куками, чтобы посылать 4 разных запроса не разлогиниваясь. Ну думаю понятно?

  • https://securityheaders.com/ - полезная тулза для проверки заголовков сайта.

  • https://builtwith.com - очередная тулза, которая позволяет получить полезную инфу в ходе сбора данных по сайту.

  • dehashed.com - узнать утекли ли креды на вашем сайте во вне, весьма полезная, но платная платформа

  • https://owasp.org/www-project-web-security-testing-guide/ - ну и как же без owasp ресурса компании, которая и занимается структурированием и категоризацией уязвимостей на сегодняшний день. Если что-то и будет появляться нового по уязвимостям - то точно в первую очередь у них.

7) Внешние инструменты вне ОС + железо (ПО).

  • https://urlscan.io/ - надо узнать список субдоменов, доменов и технологий которые юзаются на сайте? urlscan твой друг товарищ и брат.

  • https://market.yandex.ru/product--wi-fi-adapter-alfa-network-awus036ach/12473758 - тот самый знаменитый Alpha адаптер для тренировок по взлому wi-fi сетей (дисклеймер не взламывайте чужие сети, доступа к которым вы не имеете, это плохо, ломайте только те, доступ и разрешение к которым у вас есть)

8) Reverse engineering.

  • https://www.manhunter.ru/ - хотите уметь в настоящий мужской реверс и ассемблер? Конечно хотите.

  • https://www.youtube.com/c/LiveOverflowCTF - достаточно известный канал и известный хакер в своих кругах + также топит за реверс.

  • https://forum.reverse4you.org/c/materials/8?order=activity - хотите знать про реверс - точно надо сюда

  • http://personeltest.ru/aways/habr.com/ru/users/yashechka/posts/ - введение в реверс + адванс введение в реверс, одним словом на хабре куча статей по реверсу. Поиск в помощь.

  • https://yutewiyof.gitbook.io/intro-rev-ida-pro/ - однажды после очередного собеседования на позицию джуна мне сказали подготовиться по этой книге и решить тестовое (я конечно же этого не сделал). Но книга очень годная. Обязательна к прочтению.

  • https://www.corelan.be/ - надо в хардкорный реверс? там есть его с головой.

  • rdot.org - олдскул, реверс, хакинг, программирование и живое общение - пой душа, несись в рай.

  • Реверс-инжиниринг курс от OTUS

9) Bugbounty площадки

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

Поэтому как всегда - финальный результат всегда за каждым из вас.

Кто-то сможет найти ещё более крутые ресурсы, чем я.

Заключение

Написание данной статьи было решением принятым абсолютно случайно.

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

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

В любом случае получилось то, что получилось.

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

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

Надеюсь что и дальше этот тренд у меня удастся поддерживать на должном уровне и отдаче.

Спасибо.

Подробнее..

Практика лечебного дыхания в цифрах и мобильных приложениях

03.05.2021 22:12:52 | Автор: admin

Недавно Google, Apple, Xiaomi и иже с ними добавили во многие свои устройства уже готовые к употреблению и встроенные в прошивку упражнения с дыханием. Одно это прекрасно показывает уже теперь международное признание этого вида лечебной физкультуры. Буду далее стараться изо всех сил избегать соответствующей теории и расскажу практику, исходя из своего многолетнего опыта, личного и профессионального (как бывшего врача ЛФК и спортивной медицины).

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

Более точно этот параметр организма покажет т.н. проба Штанге, она несложная. Нужно в спокойном состоянии (не сразу после драки или секса, например) включить секундомер в смартфоне или часах, максимально вдохнуть, задержать дыхание, насколько сможете и измерить это время, вплоть до конца выдоха накопленного. По сути, происходит подсчёт срока имитации ныряния под воду. Можно сделать ради интереса ещё пробу Генче это время задержки на выдохе. Они почти одинаково показывают устойчивость данного человека к смешанной гиперкапнии и гипоксии. Для индивидуального расчёта упражнений достаточно цифр штанги.

В этой таблице показаны нормы проб для здоровых и молодых людей.

Примерно 15 лет я каждый день занимаюсь дыхательными упражнениями, даже если не хочу, привычка образовалась. Я бы даже признался, что без них несколько раз не знаю, как бы выжил. У меня небольшая задержка, всего 125 секунд, а у многих знакомых фридайверов и йогов она 3-5 минут.

Минимум нужной теории сейчас будет. Очень гиперогромная в последние годы для меня пичалька, что не все пациенты и даже профессора знают, что для нормального функционирования организма человека нужен не только кислород, но и углекислый газ. В легких молекулы кислорода прикрепляются к молекулам гемоглобина из нашей крови, чтобы доставить его к клеткам, но, чтобы молекула кислорода смогла хоть как-то оторваться от этого гемоглобина, нужна, определённая внутренними сенсорами, концентрация углекислого газа в крови. Если же СО2 мало, то кислород никак не сможет оторваться от гемоглобина и организм будет испытывать кислородное голодание даже при наличии хоть тонны чистейшего кислорода в артериях и венах. Поэтому повышение углекислоты так помогает общему усвоению кислорода, в итоге.

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

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

Для начала попробуем сделать т.н. треугольное дыхание. Нужно вдохнуть носом на 4 счёта или секунды, задержать дыхание на 4 секунды и потом плавно выдохнуть на 4 счёта тоже, либо носом либо ртом, как больше нравится. Можно сначала с секундомером, но потом лучше просто интуитивно примерно вести счёт, чтобы не зависеть от внешних устройств. Нужно первый раз сделать 3-5 таких треугольников. Потом нужно будет употребить нашу посчитанную пробу Штанге, разделив именно ваши секунды (40, 60, 100 или сколько там было) на три части. И делать вдох, соответственно, на 20, паузу на 20 секунд или счётов и, наконец, ещё двадцать сек выдыхать. Но сразу, с первого раза нельзя идти на максимум, категорически. Сначала на 4 или 5 счётов, тихо, постепенно, не спешите, плиз.

Если малопонятно, то вот тогда ещё обучающее видео.

Затем также сделаем упражнение "квадратное дыхание", поделив при этом тот самый Штанге на четыре части пропорционально. Длительность вдоха-выдоха в секундах повышаем тоже постепенно: от 4 секунд до 6-8-10 и т. д.

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

Задержки дыхания субъективно делаем до потребности сделать вдох. По мере тренировки треугольного или квадратного увеличиваем длительность фаз примерно каждые 1-2 дня на 0,5 - 1 секунду. Можно и быстрее, главное быть уверенным, что так будет не чрезмерно.

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

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

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

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

И.П. Сядьте удобно, комфортно, положив кисти рук на колени. Попробуйте ощутить свое дыхание: в носоглотке, в грудной клетке, животе. Можно положить руку на грудь и посмотреть, как она двигается. Привычнее всего ощущается дыхание в полости носа. Нужно уметь отличать вдох от выдоха и тогда уже приступать к выполнению способа. Когда вы вдыхаете, то мысленно, про себя, следует говорить вдох или раз, когда выдыхаете выдох или два. Вместо этих слов можно говорить сто и один, сто и два, и так до 199 , а потом опять с 101 до сто девяносто девять. Таких циклов нужно сделать не менее 3-4 в течение 5-10 минут. Это оказывает седативный и даже снотворный эффект, проверено на сотнях обученных мной пациентов.

Опять нужно немного теории, чтобы понимать, что происходит вообще. Эффект дыхательной релаксации заключается в следующем: во время какого-либо дистресса чувства и мысли человека полностью заняты сиюминутной, конфликтной ситуацией и соответствующими негативными эмоциями. Концентрация внимания сознания, например, на ритмичном ощущении движения воздуха или грудной клетки увеличивает здоровье и спокойствие чисто арифметически вычитанием неприятного через прибавление жизненно важного и ощущаемого самоЧувствия. Когда происходит еще и вербализация (проговаривание) происходящего на осознаваемом уровне, то подкорковые центры дыхательной регуляции образуют межнейронные связи с центрами речи коры, находящимися близко к лимбической (эмоциональной) части головного мозга, давая эмоцию успокоения и релаксации. ЭЭГ много раз это показывало, а в тренингах БОС можно наблюдать интерактивно.

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

Таким образом, с точки зрения теории нейрофизиологии и психотерапии, получается улучшение взаимодействия и взаимопонимания между волей, сознанием и подсознательно-привычными негативными эмоциональными реакциями. И тогда вам достаточно будет только мысленно пожелать овладеть собой и, как по волшебству, приятное спокойствие придёт! Конечно, это возможно лишь при условии, что концентрация внимания на дыхании будет хотя бы в 2-3 раза больше, чем обычно и, как правило - минимум 2-3 минуты. Вообще-то, чем больше вы станете делать эти упражнения (особенно если оно станет частью образа жизни), тем сильнее будет уверенность в себе и крепче здоровье души и тела. Хотя 24 часа в сутки осознанно дышать, конечно, не стоит.

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

Сейчас на рынке очень много мобильных приложений про дыхательную гимнастику и каждый год их число растёт, не буду тоже таки останавливаться, нужно тогда отдельную статью писать. Два отмечу новое весёлое и старое, с миллионом скачиваний.

В заключение хочу сказать, что уже год не веду занятий по ДГ и не собираюсь, ибо уже много других учителей этой ЛФК ничуть не хуже, например, есть самый популярный сейчас Вим Хоф, его рекламировать не надо вовсе.

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

З если будут какие-то вопросы, то ответы буду добавлять сюда, улучшать статью.

UPD: прошу поделиться своим опытом в комментариях тех сверхлюдей, у кого больше 140 секунд)

Подробнее..

Перевод Обучение на табличных данных. TABNet. Часть 2. Реализация

22.12.2020 10:22:28 | Автор: admin

Продолжение перевода про архитектуру TABNet. Первая часть здесь

4 .Самостоятельное обучение для табличного представления.

Декодирование табличных объектов: Предлагаем архитектуру декодера для восстановления табличных функций по закодированным представлениям, полученным с помощью кодировщика TabNet. Декодер состоит из блоков преобразователей признаков, за которыми следуют слои FC на каждом шаге принятия решения. Выходные данные суммируются для получения реконструированных функций.

Цель самообучения: Предлагаем задачу прогнозирования отсутствующих столбцов из других. Рассмотрим двоичную маску

S \{0, 1 \} ^{BD}.

TabNet кодирует вход

(1-S) * \hat{f}

и TabNet декодирует выход реконструированных объектов,

S * \hat{f}

Мы инициализируем P[0] = (1 S)

в кодере так, чтобы модель делала упор только на известные объекты, а последний слой FC декодера умножаем на S, чтобы просто вывести неизвестные объекты. Мы рассматриваем потери на оптимизирующие преобразования в фазе самообучения:

\sum_{b=1}^{B} \sum_{j=1}^{D} \mid (\hat{f}_{b,j} - f_{b,j}) * S_{b,j} / \sqrt{\sum_{b=1}^{B}(f_{b,j}-1/B\sum_{b=1}^{B}f_{b,j})^2} \mid ^2 .

Нормализация среднеквадратичного отклонения начальных данных с помощью достоверных данных имеет важное значение, так как характеристики могут иметь колебания в различных диапазонах. Мы выберем записи Sb,j независимо от распределения Бернулли с параметром ps на каждой итерации.

5.Эксперименты.

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

Мы используем стандартные классификационные (обобщение логистическойфункции для многомерного случая, перекрёстнаяэнтропия) и регрессионные (среднеквадратичная ошибка) целевые функции и исследуем сходимость в различных случаях. Гиперпараметры модели TabNet оптимизированы на обучающей выборке и перечислены в Приложении. Производительность TabNet не очень чувствительна к большинству гиперпараметров, как показано в исследованиях (приложениях). Во всех экспериментах, где мы приводим результаты из других работ, мы используем одни и те же данные обучения, проверки и тестирования, как и в оригинальных работах. Для обучения всех моделей используются алгоритм оптимизации Adam [32] и равномерная инициализация Glorot. Реализацию с открытым исходным кодом можно найти на сайте https://github.com/google-research/google-research/tree/master/tabnet.

5.1 Выбор объекта по экземпляру

Выбор наиболее информативных объектов может иметь решающее значение для высокой производительности, особенно для небольших наборов данных. Мы рассмотрим 6 синтетических табличных наборов данных из [6] (состоящих из 10k обучающих выборок). Синтетические наборы данных построены таким образом, что только подмножество объектов определяет выходные данные. Для наборов данных Syn1, Syn2 и Syn3 эталонные объекты одинаковы для всех экземпляров, поэтому общий механизм выбора объектов должен быть оптимальным. Например, истинный результат набора данных Syn2 зависит только от объектов X3-X6. Для наборов данных Syn4, Syn5 и Syn6 существенные особенности зависят от рассматриваемого экземпляра. Например, для набора данных Syn4 индикатором является X11, а результирующий исход зависит либо от X1-X2, либо от X3-X6, в зависимости от значения X11. Эта зависимость от экземпляра делает глобальный выбор объектов неоптимальным, поскольку глобально значимые объекты были бы избыточными для некоторых экземпляров. В таблице 1 показана производительность кода TabNet по сравнению с другими методами, включая отсутствие выбора, использование только глобально значимых признаков, древовидных ансамблей [16], регуляризации LASSO, L2X [6] и INVASE [61]. Мы наблюдаем, что TabNet превосходит все другие методы и сравним по уровню с INVASE. Для наборов данных Syn1, Syn2 и Syn3 мы наблюдаем, что производительность TabNet очень близка к глобальному выбору объектов. Для наборов данных Syn4, Syn5 и Syn6 получено, что TabNet улучшает глобальный выбор объектов, который будет содержать избыточные объекты. (Выбор объекта визуализируется в разделе 5.3.) Все остальные методы используют прогностическую модель с 43k параметрами, а общее число обучаемых параметров составляет 101k для INVASE, благодаря другим двум сетям в рамках "актор-критик". С другой стороны, TabNet - это единая архитектура ГНС (Глубокая Нейронная Сеть), и ее размер модели составляет 26k для наборов данных Syn1-Syn3 и 31k - для наборов данных Syn4-Syn6.

Это компактное сквозное представление является одним из ценных свойств TabNet.

таблица 1. Среднее и стандартное квадратичное отклонение тестовой области под кривой (AUC) на 6 синтетических наборах данных из [6], для TabNet и других моделей ГНС на основе выбора признаков: Нет выбора: использование всех функций без какого-либо выбора функций, Глобальный: использование только глобально значимых функций, Дерево: Ансамбли деревьев [16], LASSO: регуляризованная модель, L2X [6] и INVASE [61].таблица 1. Среднее и стандартное квадратичное отклонение тестовой области под кривой (AUC) на 6 синтетических наборах данных из [6], для TabNet и других моделей ГНС на основе выбора признаков: Нет выбора: использование всех функций без какого-либо выбора функций, Глобальный: использование только глобально значимых функций, Дерево: Ансамбли деревьев [16], LASSO: регуляризованная модель, L2X [6] и INVASE [61].

5.2 Производительность на реальных наборах данных

Многоклассовая классификация объектов Forest Cover Type [14]: Этот набор данных соответствует задаче классификации типа леса (лесного покрова) по картографическим переменным. Таблица 2 показывает, что TabNet значительно превосходит ансамблевые древовидные подходы, которые, как известно, достигают солидной производительности в этой задаче [38]. Кроме того, мы рассматриваем AutoInt [51] для этой задачи, учитывая его силу для задач с высокой размерностью функций. AutoInt моделирует попарное взаимодействие объектов с ГНС, основанным на внимании [51] и значительно уступает TabNet, который использует выбор объектов по экземплярам и рассматривает взаимодействие между различными объектами, если модель делает вывод о том, что это подходящая обработка для применения. Наконец, рассмотрены таблицы AutoML [2], автоматизированная система поиска, основанная на ансамбле моделей, включающих линейную обратную связь ГНС, градиентное усиление дерева решений, AdaNet [10] и ансамбли [2]. Для таблиц AutoML количество узловых часов отражает меру количества искомых моделей для ансамбля и их сложность. Одна модель TabNet без детального гиперпараметрического поиска превосходит точность ансамблевых моделей при обучении с подкреплением.

таблица 2. Производительность для набора данных типа лесного покрова.таблица 2. Производительность для набора данных типа лесного покрова.

Покер [14]: этот набор данных соответствует задаче классификации при раздаче карт в покере по необработанным мастям и ранговым атрибутам карт. Отношение ввода-вывода является детерминированным, и правила ручной раздачи, реализованные с помощью нескольких строк кода, могут получить 100% точность. Тем не менее, обычные ГНС, деревья решений и даже гибридный вариант моделей глубокого нейронного дерева решений [60] сильно зависимы от несбалансированности данных и не могут освоить необходимые операции сортировки и ранжирования с необработанными входными признаками [60]. Настроенные процедуры XGBoost, CatBoost и LightGBM показывают очень незначительные улучшения по сравнению с ними. С другой стороны, TabNet значительно превосходит другие методы и подходы к точности детерминированных правил, поскольку может выполнять сильно нелинейную обработку с большой глубиной обработки без переоценки, благодаря индивидуальному выбору функций потерь.

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

Sarcos Robotics Arm, обратная динамика [57]: этот набор данных соответствует задаче регрессии обратной динамики семи степеней свободы антропоморфной руки робота. В [53] показано, что приличная производительность с очень компактной моделью возможна для ансамбля решающих деревьев (random forest), но лучшая производительность достигается с адаптивным нейронным деревом (adaptive neural tree), которое немного превосходит дерево градиентного бустинга (gradient boosted tree). В режиме модели очень малой размерности, производительность TabNet находится на одном уровне с лучшей предложенной моделью со 100-кратным увеличением параметров. TabNet распределяет свою емкость по базовым функциям и дает более компактную модель. Когда размерность модели не ограничена, TabNet показывает на порядок меньше в тесте, чем MSE.

таблица 4. Производительность для набора данных обратной динамики Sarcos Robotics Arm. расчет дерева моделей TabNet разных размеров (обозначается -S, -M и -L).таблица 4. Производительность для набора данных обратной динамики Sarcos Robotics Arm. расчет дерева моделей TabNet разных размеров (обозначается -S, -M и -L).

Бозон Хиггса [14]: этот набор данных соответствует задаче различения сигнального процесса, который производит бозоны Хиггса, и фонового процесса. Из-за своего очень большого размера (10,5 млн обучающих примеров) ГНС превосходят варианты дерева решений в этой задаче даже с очень большими ансамблями. Мы показываем, что TabNet превосходит MLPs с более компактными представлениями. Также сравниваем с современным алгоритмом эволюционной разреженности [39], который применяет неструктурированную разреженность, интегрированную в обучение, с низким количеством параметров. Благодаря своему компактному представлению TabNet дает почти такую же производительность, как и разреженное эволюционное обучение для того же числа параметров. Эта разреженность, изученная TabNet, структурирована иначе, чем альтернативные подходы она не ухудшает вычислительную способность модели [59] и может эффективно использовать современные многоядерные процессоры.

таблица 5. Производительность на наборе данных Бозона Хиггса. Расчет двух моделей TABNet (обозначены как -S и -M)таблица 5. Производительность на наборе данных Бозона Хиггса. Расчет двух моделей TABNet (обозначены как -S и -M)

Магазин Россманна [29]: Этот набор данных соответствует задаче прогнозирования продаж магазина со статическими и сезонными признаками. Мы заметили, что TabNet превосходит XGBoost, LightGBM и CatBoost, которые обычно используются для таких проблем. Временные характеристики (например, день) приобретают большое значение, и преимущество выбора функции по экземпляру особенно заметно в праздники, когда динамика продаж изменяется.

таблица 6. Производительность на наборе данных магазина Россмана.таблица 6. Производительность на наборе данных магазина Россмана.

Наборы данных KDD. Наборы данных Appetency, Churn и Upselling используются в задачах классификации для управления взаимоотношениями с клиентами, а набор данных KDD Census Income [14] предназначен для прогнозирования доходов на основе демографических переменных и переменных, связанных с занятостью. Эти наборы данных демонстрируют интенсивную производительность (даже простые модели дают аналогичные результаты). Таблица 7 показывает, что TabNet достигает очень похожих или немного худших результатов, чем у XGBoost и CatBoost, которые известны своей надежностью, поскольку содержат большое количество ансамблей.

таблица 7. Производительность на наборе данных KDD.таблица 7. Производительность на наборе данных KDD.

5.3 Интерпретируемость.

Маски выбора функций в TabNet можно интерпретировать выбранными особенностями на каждом этапе. Такая возможность недоступна для обычных ГНС, таких как MLP, поскольку каждый последующий уровень совместно обрабатывает все функции без механизма выбора с контролируемой разреженностью. Для масок выбора признаков, если Mb, j [i] = 0, то j-ая особенность из b-ого образца не должна влиять на принятие решения. Если бы fi была линейной функцией, коэффициент Mb, j [i] соответствовал бы важности признака fb, j. Хотя на каждом этапе принятия решения используется нелинейная обработка, их результаты позже агрегируются линейным образом. Наша цель - количественно оценить общую важность функции в дополнение к анализу каждого шага. Объединение масок на разных этапах требует учета коэффициента, который может отражать относительную важность каждого этапа в принятии решения. Мы используем

\eta_{b}[i] = \sum_{c=1}^{N_d}ReLU(d_{b,c}[i])

обозначают совокупный вклад решения на i-м шаге решения для b-й выборки. Интуитивно понятно, что если d b, c [i] <0, то все функции i-го шага решения должны иметь нулевой вклад в общее решение. По мере увеличения его значения, оно играет более важную роль в общем линейном сочетании. Масштабируя маску принятия решения на каждом шаге с помощью nb [i], мы предлагаем маску важности агрегированного признака

M_{agg-b,j} = \sum_{i=1}^{N_{steps}} \eta_b[i]M_{b,j}[i] / \sum_{j=1}^{D} \sum_{i=1}^{N_{steps}} \eta_b[i] M_{b,j}[i].

Нормализация используется для обеспечения:

\sum_{j=1}^{D} M_{agg-b_{b,j}} = 1

Синтетические данные. На рис. 5 показаны совокупные маски важности признаков для синтетических наборов данных, обсуждаемых в разд. 5.1. Истинный результат для набора данных Syn2 зависит только от функций X3-X6. Мы видим, что совокупные маски почти все равны нулю для нерелевантных функций, они просто фокусируются на релевантных. Для набора данных Syn4 X11 является индикатором, а исходные данные зависят от X1-X2 или X3-X6 в зависимости от значения X11. TabNet обеспечивает точный выбор функций для каждого экземпляра - он выделяет маску, чтобы сосредоточиться на X11, и присваивает близкие нулю веса нерелевантным функциям (тем, которые не относятся к одной из двух групп функций).

таблица 8. Рейтинг важности характеристик Дохода взрослого населения в переписи. TabNet составляет рейтинг важности функций в соответствии с хорошо известными методами.таблица 8. Рейтинг важности характеристик Дохода взрослого населения в переписи. TabNet составляет рейтинг важности функций в соответствии с хорошо известными методами.

Наборы данных из реального мира: сначала мы рассмотрим простую реальную задачу предсказания съедобности грибов [14]. TabNet прошел 100% тест точности этого набора данных. Действительно, известно [14], что запах является наиболее отличительным признаком для этой задачи, только с функцией запах модель может получить точность теста> 98,5% [14]. Таким образом, для него ожидается высокая важность функции. TabNet присваивает ему коэффициент важности 43%, в то время как другие известные методы, такие как LIME [48], Интегрированные градиенты [52] и DeepLift [49] присваивают оценку важности с коэффициентом менее 30% [27].

Рисунок 5. Маски важности признаков M [i] (которые указывают, какие объекты выбираются на i-м шаге) и совокупная маска важности признаков Magg, показывающая глобальный выбор объекта по экземплярам для наборов данных Syn2 и Syn6 из [6]. Более яркие цвета показывают более высокую ценность. Например, для набора данных Syn2 используются только четыре функции (X3-X6). Рисунок 5. Маски важности признаков M [i] (которые указывают, какие объекты выбираются на i-м шаге) и совокупная маска важности признаков Magg, показывающая глобальный выбор объекта по экземплярам для наборов данных Syn2 и Syn6 из [6]. Более яркие цвета показывают более высокую ценность. Например, для набора данных Syn2 используются только четыре функции (X3-X6).

Затем мы рассмотрим доход взрослого населения от переписи населения, где задача состоит в том, чтобы определить, превышает ли доход человека 50 000 долларов. Таблица 8 показывает ранжирование важности функций для TabNet по сравнению с другими методами объяснимости из [36], [42]. Мы наблюдаем общность наиболее важных характеристик Age (Возраст), Capital gain/loss (Прирост / потеря капитала), Education number (Уровень образования), Relationship (Родство)) и наименее важных Native country (Родная страна), Race (Раса) , Gender (Пол). Для той же проблемы на рис. 6 (c) показано влияние наиболее важной функции на решение о выходе путем визуализации T-SNE многообразия решений. Наблюдается четкое разделение возрастных групп, так как Age (Возраст) является наиболее важной характеристикой TabNet.

Рисунок 6. T-SNE многообразия решений для тестовых выборок переписи дохода взрослого населения и влияние главного признака Age (Возраст).Рисунок 6. T-SNE многообразия решений для тестовых выборок переписи дохода взрослого населения и влияние главного признака Age (Возраст).

5.4 самостоятельное обучение под наблюдением

Мы изучаем самообучение на наборах данных типа Хиггса и лесного покрова. Для предварительного обучения предсказанию (заполнению) недостающих столбцов мы используем параметр маскирования ps = 0.8 и процесс обучения с 1 миллионом итераций. Используем подмножество помеченного набора данных для контролируемой тонкой настройки с набором проверки для определения количества итераций для ранней остановки. Большой набор данных при проверке был бы нереалистичным для небольших наборов обучающих данных, поэтому в этих экспериментах мы предполагаем, что его размер равен набору обучающих данных. Таблица 9 показывает, что предварительное обучение без учителя значительно улучшает производительность задачи классификации с учителем, особенно в режиме, когда немаркированный набор данных намного больше, чем маркированный. Как показано на рис. 7, сходимость модели происходит намного быстрее при предварительном обучении без учителя. Очень быстрая сходимость может быть очень полезной, особенно в таких сценариях, как непрерывное обучение, адаптивное предметной области.

Рисунок 7. Сходимость с предварительным обучением без учителя происходит намного быстрее, что показано для набора данных Хиггса с выборкой в 10 тыс..Рисунок 7. Сходимость с предварительным обучением без учителя происходит намного быстрее, что показано для набора данных Хиггса с выборкой в 10 тыс..таблица 9. Табличные результаты обучения с самостоятельным контролем. Среднее и стандартное отклонение точности (более 15 прогонов) по Хиггсу с TabNet-М модель, варьируя размером обучающего набора данных для контролируемой тонкой настройки.таблица 9. Табличные результаты обучения с самостоятельным контролем. Среднее и стандартное отклонение точности (более 15 прогонов) по Хиггсу с TabNet-М модель, варьируя размером обучающего набора данных для контролируемой тонкой настройки.таблица 10. Табличные результаты обучения с самоконтролем. Среднее и стандартное отклонение точности (более 15 прогонов) для типа леса, с варьированием размера обучающего набора данных и контролируемой точной настройкитаблица 10. Табличные результаты обучения с самоконтролем. Среднее и стандартное отклонение точности (более 15 прогонов) для типа леса, с варьированием размера обучающего набора данных и контролируемой точной настройки

Заключение

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

Перевод, коррекция, редактирование Гилязов Айрат, Шигапова Фирюза.


Ссылки

[1] Dario Amodei, Rishita Anubhai, Eric Battenberg, Carl Case, Jared Casper, et al. 2015. Deep Speech 2: End-to-End Speech Recognition in English and Mandarin. arXiv:1512.02595 (2015).

[2] AutoML. 2019. AutoML Tables Google Cloud. https://cloud.google.com/ automl-tables/

[3] J. Bao, D. Tang, N. Duan, Z. Yan, M. Zhou, and T. Zhao. 2019. Text Generation From Tables. IEEE Trans Audio, Speech, and Language Processing 27, 2 (Feb 2019), 311320.

[4] Yael Ben-Haim and Elad Tom-Tov. 2010. A Streaming Parallel Decision Tree Algorithm. JMLR 11 (March 2010), 849872.

[5] Catboost. 2019. Benchmarks. https://github.com/catboost/benchmarks. Accessed: 2019-11-10.

[6] Jianbo Chen, Le Song, Martin J. Wainwright, and Michael I. Jordan. 2018. Learning to Explain: An Information-Theoretic Perspective on Model Interpretation. arXiv:1802.07814 (2018).

[7] Tianqi Chen and Carlos Guestrin. 2016. XGBoost: A Scalable Tree Boosting System. In KDD.

[8] Michael Chui, James Manyika, Mehdi Miremadi, Nicolaus Henke, Rita Chung, et al. 2018. Notes from the AI Frontier. McKinsey Global Institute (4 2018).

[9] Alexis Conneau, Holger Schwenk, Loc Barrault, and Yann LeCun. 2016. Very Deep Convolutional Networks for Natural Language Processing. arXiv:1606.01781 (2016).

[10] Corinna Cortes, Xavi Gonzalvo, Vitaly Kuznetsov, Mehryar Mohri, and Scott Yang. 2016. AdaNet: Adaptive Structural Learning of Artificial Neural Networks. arXiv:1607.01097 (2016).

[11] Zihang Dai, Zhilin Yang, Fan Yang, William W. Cohen, and Ruslan Salakhutdinov. 2017. Good Semi-supervised Learning that Requires a Bad GAN. arxiv:1705.09783 (2017).

[12] Yann N. Dauphin, Angela Fan, Michael Auli, and David Grangier. 2016. Language Modeling with Gated Convolutional Networks. arXiv:1612.08083 (2016).

[13] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2018. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805 (2018).

[14] Dheeru Dua and Casey Graff. 2017. UCI Machine Learning Repository. http: //archive.ics.uci.edu/ml

[15] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. 2017. Convolutional Sequence to Sequence Learning. arXiv:1705.03122 (2017).

[16] Pierre Geurts, Damien Ernst, and Louis Wehenkel. 2006. Extremely randomized trees. Machine Learning 63, 1 (01 Apr 2006), 342.

[17] Ian Goodfellow, Yoshua Bengio, and Aaron Courville. 2016. Deep Learning. MIT Press.

[18] K. Grabczewski and N. Jankowski. 2005. Feature selection with decision tree criterion. In HIS.

[19] Yves Grandvalet and Yoshua Bengio. 2004. Semi-supervised Learning by Entropy Minimization. In NIPS.

[20] Isabelle Guyon and Andre Elisseeff. 2003. An Introduction to Variable and Feature Selection. JMLR 3 (March 2003), 11571182.

[21] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. 2015. Deep Residual Learning for Image Recognition. arXiv:1512.03385 (2015).

[22] Joel Hestness, Sharan Narang, Newsha Ardalani, Gregory F. Diamos, Heewoo Jun, Hassan Kianinejad, Md. Mostofa Ali Patwary, Yang Yang, and Yanqi Zhou. 2017. Deep Learning Scaling is Predictable, Empirically. arXiv:1712.00409 (2017).

[23] Tin Kam Ho. 1998. The random subspace method for constructing decision forests. PAMI 20, 8 (Aug 1998), 832844.

[24] Elad Hoffer, Itay Hubara, and Daniel Soudry. 2017. Train longer, generalize better: closing the generalization gap in large batch training of neural networks. arXiv:1705.08741 (2017).

[25] Drew A. Hudson and Christopher D. Manning. 2018. Compositional Attention Networks for Machine Reasoning. arXiv:1803.03067 (2018).

[26] K. D. Humbird, J. L. Peterson, and R. G. McClarren. 2018. Deep Neural Network Initialization With Decision Trees. IEEE Trans Neural Networks and Learning Systems (2018).

[27] Mark Ibrahim, Melissa Louie, Ceena Modarres, and John W. Paisley. 2019. Global Explanations of Neural Networks: Mapping the Landscape of Predictions. arxiv:1902.02384 (2019).

[28] Kaggle. 2019. Historical Data Science Trends on Kaggle. https://www.kaggle. com/shivamb/data-science-trends-on-kaggle. Accessed: 2019-04-20.

[29] Kaggle. 2019. Rossmann Store Sales. https://www.kaggle.com/c/ rossmann-store-sales. Accessed: 2019-11-10.

[30] Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, et al. 2017. LightGBM: A Highly Effcient Gradient Boosting Decision Tree. In NIPS.

[31] Guolin Ke, Jia Zhang, Zhenhui Xu, Jiang Bian, and Tie-Yan Liu. 2019. TabNN: A Universal Neural Network Solution for Tabular Data. https://openreview.net/forum?id=r1eJssCqY7

[32] Diederik P. Kingma and Jimmy Ba. 2014. Adam: A Method for Stochastic Optimization. In ICLR.

[33] P. Kontschieder, M. Fiterau, A. Criminisi, and S. R. Bul. 2015. Deep Neural Decision Forests. In ICCV.

[34] Siwei Lai, Liheng Xu, Kang Liu, and Jun Zhao. 2015. Recurrent Convolutional Neural Networks for Text Classification. In AAAI.

[35] Tianyu Liu, Kexiang Wang, Lei Sha, Baobao Chang, and Zhifang Sui. 2017. Table-to-text Generation by Structure-aware Seq2seq Learning. arXiv:1711.09724 (2017).

[36] Scott M. Lundberg, Gabriel G. Erion, and Su-In Lee. 2018. Consistent Individualized Feature Attribution for Tree Ensembles. arXiv:1802.03888 (2018).

[37] Andre F. T. Martins and Ram on Fern andez Astudillo. 2016. From Softmax to Sparsemax: A Sparse Model of Attention and Multi-Label Classification. arXiv:1602.02068 (2016).

[38] Rory Mitchell, Andrey Adinets, Thejaswi Rao, and Eibe Frank. 2018. XGBoost: Scalable GPU Accelerated Learning. arXiv:1806.11248 (2018).

[39] Decebal Mocanu, Elena Mocanu, Peter Stone, Phuong Nguyen, Madeleine Gibescu, and Antonio Liotta. 2018. Scalable training of artificial neural networks with adaptive sparse connectivity inspired by network science. Nature Communications 9 (12 2018)

[40] Alex Mott, Daniel Zoran, Mike Chrzanowski, Daan Wierstra, and Danilo J. Rezende. 2019. S3TA: A Soft, Spatial, Sequential, Top-Down Attention Model. https://openreview.net/forum?id=B1gJOoRcYQ

[41] Sharan Narang, Gregory F. Diamos, Shubho Sengupta, and Erich Elsen. 2017. Exploring Sparsity in Recurrent Neural Networks. arXiv:1704.05119 (2017).

[42] Nbviewer. 2019. Notebook on Nbviewer. https://nbviewer.jupyter.org/github/ dipanjanS/data science for all/blob/master/tds model interpretation xai/ Human-interpretableMachineLearning-DS.ipynb#

[43] N. C. Oza. 2005. Online bagging and boosting. In IEEE Trans Conference on Systems, Man and Cybernetics.

[44] German Ignacio Parisi, Ronald Kemker, Jose L. Part, Christopher Kanan, and Stefan Wermter. 2018. Continual Lifelong Learning with Neural Networks: A Review. arXiv:1802.07569 (2018).

[45] Liudmila Prokhorenkova, Gleb Gusev, Aleksandr Vorobev, Anna Veronika Dorogush, and Andrey Gulin. 2018. CatBoost: unbiased boosting with categorical features. In NIPS.

[46] Alec Radford, Luke Metz, and Soumith Chintala. 2015. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks. arXiv:1511.06434 (2015).

[47] Rajat Raina, Alexis Battle, Honglak Lee, Benjamin Packer, and Andrew Y. Ng. 2007. Self-Taught Learning: Transfer Learning from Unlabeled Data. In ICML.

[48] Marco Ribeiro, Sameer Singh, and Carlos Guestrin. 2016. fiWhy Should I Trust You?fi: Explaining the Predictions of Any Classifier. In KDD.

[49] Avanti Shrikumar, Peyton Greenside, and Anshul Kundaje. 2017. Learning Important Features Through Propagating Activation Differences. arXiv:1704.02685 (2017).

[50] Karen Simonyan and Andrew Zisserman. 2014. Very Deep Convolutional Networks for Large-Scale Image Recognition. arXiv:1409.1556 (2014).

[51] Weiping Song, Chence Shi, Zhiping Xiao, Zhijian Duan, Yewen Xu, Ming Zhang, and Jian Tang. 2018. AutoInt: Automatic Feature Interaction Learning via SelfAttentive Neural Networks. arxiv:1810.11921 (2018).

[52] Mukund Sundararajan, Ankur Taly, and Qiqi Yan. 2017. Axiomatic Attribution for Deep Networks. arXiv:1703.01365 (2017).

[53] Ryutaro Tanno, Kai Arulkumaran, Daniel C. Alexander, Antonio Criminisi, and Aditya V. Nori. 2018. Adaptive Neural Trees. arXiv:1807.06699 (2018).

[54] Tensorflow. 2019. Classifying Higgs boson processes in the HIGGS Data Set. https://github.com/tensorflow/models/tree/master/offcial/boosted trees

[55] Trieu H. Trinh, Minh-Thang Luong, and Quoc V. Le. 2019. Selfie: Self-supervised Pretraining for Image Embedding. arXiv:1906.02940 (2019).

[56] Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, et al. 2016. WaveNet: A Generative Model for Raw Audio. arXiv:1609.03499 (2016).

[57] Sethu Vijayakumar and Stefan Schaal. 2000. Locally Weighted Projection Regression: An O(n) Algorithm for Incremental Real Time Learning in High Dimensional Space. In ICML.

[58] Suhang Wang, Charu Aggarwal, and Huan Liu. 2017. Using a random forest to inspire a neural network and improving on it. In SDM.

[59] Wei Wen, Chunpeng Wu, Yandan Wang, Yiran Chen, and Hai Li. 2016. Learning Structured Sparsity in Deep Neural Networks. arXiv:1608.03665 (2016).

[60] Yongxin Yang, Irene Garcia Morillo, and Timothy M. Hospedales. 2018. Deep Neural Decision Trees. arXiv:1806.06988 (2018).

[61] Jinsung Yoon, James Jordon, and Mihaela van der Schaar. 2019. INVASE: Instancewise Variable Selection using Neural Networks. In ICLR

Подробнее..

Самообучение в Data science, с нуля до Senior за два года

08.01.2021 18:05:33 | Автор: admin

Хочу поделиться методами освоения Data science с нуля человеком из другой ИТ специальности. Цель: дать понять, подходит ли Вам эта специальность в принципе, и рассказать про эффективные подходы к самообучению, которые мне помогли (отдельно планирую потом детальные статьи по отдельным темам).

Отличные материалы уже существуют по большинству конкретных тем, я сам по ним учился.
Думаю, многим будут полезны "мета" материалы о том, как выбирать курсы и статьи, по которым учиться. Например, я пересмотрел десятки статей и книг, пробовал много разных он-лайн курсов, но полезной оказалась лишь малая часть всего доступного. Надеюсь, что смогу серьезно сэкономить вам время и помочь достигнуть большего, показав более эффективный путь самообучения.

И важно сказать сразу: я верю, что любой человек с аналитическими способностями и структурным мышлением может стать специалистом по машинному обучению/data science. Еще 4 года назад я сомневался, потеряв веру в свои математические способности из-за преподавателей университета. Теперь верю: основы машинного обучения и минимально необходимую математику сможет выучить любой сильно замотивированный человек.

Мой опыт:

  • Когда я понял, что скоро мне стукнет 30 лет, решил уйти в другую сферу и переехать из РФ. В своей сфере (1С) я был карьерно успешен, но стало ясно, что дальнейший рост очень затруднителен и требует выполнять работу, которая мне неинтересна и почти противна.

  • Через полгода перебора вариантов решил, что Data science мне интереснее всего.

  • Ещё через год имел достаточную квалификацию и прошёл собеседование на работу в Чехии (оговорка: у меня еще до этого было неплохое знание английского).

  • Ещё через год стал Senior Data scientist в Vodafone (мой LinkedIn).

Цель - учиться эффективнее и бесплатно

Мне помогло то, что до этого я сформировал привычки к самообразованию, а экономность не позволила мне пойти по самому простому пути: найти онлайн курс с именитыми преподами, заплатить им много денег и довериться, что они всему научат лучше всего. В итоге я перебирал много бесплатно доступных книг и курсов (книги часто были найдены на b-ok.org). Из всех курсов и книг отбирал самые лучшие, забрасывая то, что казалось слишком теоретизированными или плохо структурированным.

На основе этих десятков книг и курсов я и сформировал то мнение, которым хочу поделить. Вероятно, существует еще более эффективный и быстрый способ научится этому всему. То, как учился я, было всего-лишь быстреее большинства платных программ, которые я видел, и заодно бесплатным (на многие лучшие англоязычные курсы всегда можно записаться бесплатно; покупал я только книги русских авторов и пару книг, которые иначе не смог найти).

Сначала надо понять, что такое Data science/машинное обучение и подойдет ли оно вам

Потому что если это просто модное словои вы хотите получать много денег или работать в Гугл, то легче заработать на позиции маркетолога или веб-аналитика, и это тоже достаточно аналитичная работа.

Какие альтернативы:

Возможно, вы технарь-интроверт, желающий делать что-то своими руками и не желающий много общаться с другими людьми или вникать в бизнес (потому что DS очень прикладная штука, требующая погруженная в предметную область). Тогда есть варианты: или "просто программирование" вам будет интереснее (Не хочется разрабатывать сайты? - Нужны разработчики бэкенд приложений и дата-инженеры, в больших количествах), или если всё-таки хочется заниматься машинным обучением, то изучать все методы data science и знать их лучше всех, чтобы пойти сразу в более крупную компанию, где достаточно чисто-технических задач.

Если вы человек творческий, возможно, разработка интерфейсов (фронтенд, мобильные приложения) вам подойдёт больше.

Если вы от природы аналитик и любите разбираться в данных, но программирование вас не заинтересует, а на изучение всей математики вам не хватает времени, стоит выбрать тот же самый учебный путь! Просто сделать акцент на мнее математических задачах, и не лезть в программироване сложных систем. Аналитики, знающие основы data science, тоже нужны в компаниях.

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

Как понять, будет ли вам интересно заниматься именно data science?

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

Мне кажется, что идеально эту роль выполняет книга Datasmart (выше писал сайт, на котором я нашёл её бесплатно). На русский она тоже переведена: "Много цифр. Анализ больших данных при помощи Excel, Джон Форман". Хотя, если вы хотите работать в data science, знание английского необходимо (технический английский выучить намного легче разговорного, и это будет очень полезно для любой работы в ИТ).

Эта книга показывет многие из технических методов Data science на уровне интуиции и даёт сразу достаточно детальное представление о решаемых задачах и где в бизнесе можно применить данные модели.

Если эта книга не вызовет интерес разобраться во всех указанных алгоритмах детальнее, вероятно, работа в data science не для вас.

Если книга интересн вызовет, но вам также хочется больше программировать, скорее всего, вам интересно будет стать machine learning engineer. Разница между data scientist и machine learning engineer в том, что первый должен общаться с людьми и понимать, какую задачу имеет смысл решать, а второй должен уметь состыковать программы с "искусственным интеллектом" с другими ИТ системами, мобильными телефонами или требованиями обрабатывать огромные объемы данных.

Кстати, подобная книга для тех, кто хочет понять стоит ли ему заниматься визуализацией данных (PowerBI, Tableau и т.п.) - "Storytelling with data". Если эта книга тоже вдохновила, вместе с предыдущей, вероятно вы data scientist, способный выполнять и роль аналитика. Если же заниматься объяснением данных вам неинтересно, вам стоит нацелеваться на позицию machine learning engineer или подумать, не легче ли быть "обычным" программистом.

Что учить

Если вы решили, что готовы "грызть гранит науки", то в образовании специалиста data science есть два кита:

  • Непосредственные методы Data science, которые стоят на трёх математических черепахах: теории вероятностей и статистике, линейной алгебре и основах мат.анализа (только основах, там требуется минимум сверх школьного курса "алегбра и начало анализа"). Кстати, вся эта математика далеко не так сложна. Проблема в том, что её плохо и неинтересно объясняют во многих вузах. Позже поделюсь советами, как её можно легче освоить.

  • Программирование на Python (+SQL и подобные), которое позволит применить все изученные методы с помощью логичных и простых в своей сути библиотек готовых функций.

    Каждый data scientist немного программист. При этом именно python является стандартом де-факто для нашей сферы. Вероятно, этот язык занял своё положение благодаря тому, что он очень простой и логичный. Если вы программировали на чём угодно, и слова "цикл" или "if-then-else" вас не пугают, то вам не будет очень сложно освоить Пайтон. Если вы никогда не программировали, но считаете, что структурное и математическое мышление - ваш конёк, с программированием у вас не будет проблем. Даже если вы "конченный гуманитарий", освоить Python значительно легче, чем выучить многие иностранные языки (но, внимание! для людей без предыдущего опыта программирования обучаться ему эффективнее по-другому, не так, как для тех, кто уже имеет опыт программирования)

Даже примерный учебный пландля изучения методов Data science требует отдельного поста. Ниже напишу чуть подробнее про Python и SQL

Английский необходим!

Как минимум, технический английский, на уровне чтения документации и профессиональных книг, - абсолютная необходимость. В этой сфере особенно: всё слишком быстро меняется. На русский язык все важные книги просто не будут успевать переводить, а многие критически важные библиотеки - даже и не будут пытаться. Поэтому, пока вы не способны читать упомянутые книги в оригинале, у вас вряд ли получится эффективно изучать data science. Хорошая новость: техническая терминология намного уже нормального разговорного языка и слэнга. Поэтому выучить английский на необходимом уровне не так уж и сложно. К тому же, знания языка могут пригодиться во многих других сферах, и даже в отпуске.

Принципы эффективного обучения

  1. Эффективный учебный план. Хороший план позволяет вам учить вещи в таком порядке, чтобы каждая новая вещь базировалась на уже полученных знаниях. И, в идеале, он идёт по спирали, постепенно углубляя знания во всех аспектах. Потому что учить теоретически математику, без интересных примеров применения - неэффективно. Именно это является одной из проблем плохого усваивания материалов в школе и институте.

    Учебный план - это именно та вещь, которую без опыта составить труднее всего.И именно с этим я стараюсь помочь.

  2. Следует концентрироваться на понимании главных принципов - это легче, чем запоминать отдельные детали (они часто оказываются не нужны). Особенно важно это становится, когда вы учите язык программирования, тем более свой первый: не стоит зубрить правильное написание команд ("синтаксис") или заучивать API библиотек.

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

Программирование: что и как учить?

Что такое SQL и зачем его учить?

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

SQL простой, потому что он "декларативный": нужно точно описать "запрос" как должен выглядеть финальный результат, и всё! - база данных сама покажет вам данные в нужной форме. В обычных "императивных" языках программирования нужно описывать шаги, как вы хотите чтобы компьютер выполнил вашу инструкцию. C SQL намного легче, потому что достаточно только точно понять что вы хотите получить на выходе.

Сам язык программирования - это ограниченный набор команд.

Когда вы будете работать с данными - даже аналитиком, даже необязательно со знанием data science, - самой первой задачей всегда будет получить данные из базы данных. Поэтому SQL надо знать всем. Даже веб-аналитики и маркетологи зачастую его используют.

Как учить SQL:

Наберите в Гугле "sql tutorial" и начните учиться по первой же ссылке. Если она вдруг окажется платной, выберете другую. По SQL полно качественных бесплатных курсов.

На русском языке тоже полно курсов. Выбирайте бесплатные.

Главное - выбирайте курсы, в которых вы можете сразу начать прямо в браузере пробовать писать простейшие запросы к данным. Только так, тренируясь на разных примерах, действительно можно выучить SQL.

На изучение достаточно всего лишь от 10 часов (общее понимание), до 20 часов (уверенное владение большей частью всего необходимого).

Почему именно Python?

В первую очередь, зачем учить Python. Возможно, вы слышали что R (другой популярный язык программирования) тоже умеет очень многое, и это действительно так. Но Python намного универсальнее. Мало сфер и мест работы, где Python вам не сможет заменить R, но в большинстве компаний, где Data Science можно делать с помощью Python, у вас возникнут проблемы при попытке использования R. Поэтому - точно учите Python. Если вы где-то услышите другое мнение, скорее всего, оно устарело на несколько лет (в 2015г было совершенно неясно какой язык перспективнее, но сейчас это уже очевидно).

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

Как учить Python

Основы:

http://pythontutor.ru/

Прочитать основы и пройти все упражнения с этого сайта можно за 5-40 часов, в зависимости от вашего предыдущего опыта.

После этого варианты (все эти книги есть и на русском):

  1. Learning Python, by Mark Lutz (5 издание). Существует и на русском.

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

    Эта книга, наоборот, разбирает Python досконально. Поэтому по началу её чтение будет идти медленнее, чем аналоги. Но зато, прочтя её, вы будете способны разобраться во всём.

    Я прочёл её почти целиком в поездах в метро за месяц. А потом сразу был готов писать целые программы, потому что самые основы были заложены в pythontutor.ru, а эта книга детально разжевывает всё.

    В качестве практики берите, что угодно, когда дочитаете эту книгу до 32 главы, и решайте реальные примеры (кстати, главы 21-31 не надо стараться с первого раза запоминать детально. Просто пробежите глазами, чтобы вы понимали что вообще Python умеет).

    Не надо эту книгу (и никакую другую) стараться вызубрить и запомнить все детали сразу. Просто позже держите её под рукой и обращайтесь к ней при необходимости.

    Прочитав эту книгу, и придя на первую работу с кучей опытных коллег, я обнаружил, что некоторые вещи знаю лучше них.

  2. Python Crash Course, byEric Matthes

    Эта книга проще написана и отсеивает те вещи, которые всё-таки реже используются. Если вы не претендуете быстрее стать высоко-классным знатоком Python - её будет достаточно.

  3. Automate the Boring Stuff with Python

    Книга хороша примерами того, что можно делать с помощью Python. Рекомендую просмотреть их все, т.к. они уже похожи на реальные задачи, с которыми приходится сталкиваться на практике, в том числе специалисту по анализу данных.

Какие трудозатраты?

Путь с нуля до уровня владения Python, на котором я что-то уже мог, занял порядка 100ч. Через 200ч я уже чувствовал себя уверенно и мог работать над проектом вместе с коллегами.

(есть бесплатные программы - трекеры времени, некоторым это помогает для самоконтроля)

Пожалуйста, дайте обратную связь

Если это было кому-то полезно (а не просто помогло убить время), поставьте лайк. Можете написать на адрес ниже пожелания и рекомендации. Буду стараться быть полезным большинству.

Для желающих могу выступить в роли ментора

Посчитав, что мой опыт самообучения эффективен и быстрый рост (с нуля до синьора за 2 года) это доказывает, год назад я вписался в программу менторства родного университета (Высшая школа экономики). За год помог нескольким студентам не-ИТ факультетов начать изучать DS и ИТ вообще или выбрать более эффективные пути самообучения.

Помогать другим учиться мне нравится с детства, когда хотел, как папа, стать учителем информатики. Поэтому решил сделать это своим хобби: если вам нужен ментор, чтобы освоить DS эффективнее - обращайтесь (кстати, могу научить как стать 1С экспертом и руководителем проектов, если вдруг это окажется интереснее кому-то читающему эту статью).

Буду раду помочь, пишите на адрес почты ниже.

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

self.development.mentor в домене gmail.com, Олег

Подробнее..

Программист учится рисовать. Дневник Емели

28.12.2020 12:07:24 | Автор: admin
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге.

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!


image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс смотрел, сколько работ мне удалось нарисовать и какого они были качества нравились ли они мне лично или были совсем так себе по исполнению.


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

Февраль


Свой путь я начал не в январе, а уже лишь только в середине февраля. Решил начать с сайта drawabox.com. Выучить основы, некие фундаментальные вещи: движение рукой (рисуем от плеча), четкое рисование гладких ровных линий, кривых, эллипсов, кубов и так далее.

Поглядел уроки Proko на YouTube. Также мне очень нравятся короткие обзорные ролики от CG Speak вряд ли они чему-то учат и набивают руку, это скорее мощные заряды креативности и мотивации.

Март


image

image

Покуда топтался на уроках drawabox, вбил в Google Программистский подход к рисованию
Гугл-выдача показала много чего мусорного, но мало релевантного. Однако я Напоролся на случайный пост на Пикабу, который очень завлек и привлек меня.

Программист учится рисовать

Меня как совершенного новичка впечатлили работы человека, решившего прокачать свой скилл с нуля. Рекомендованная книжка Марк Кистлер Вы сможете рисовать через 30 дней была хорошо разрекламирована в посте и я решил попробовать. Книга была скачана, я пошёл практиковаться по её урокам. От drawabox пока отошёл, не знаю пока, насовсем ли, возможно зря.









Апрель


Продолжаю понемножку рисовать по уроку-два-три в неделю по книжке Кистлера. Пришла также заказанная в интернет-магазине бумажная книжка Эндрю Лумис Рисование Фигуры.

Апрель можно считать одним из переломных моментов в моём постижении ремесла рисования мною был заказан в онлайн-магазине планшет популярной фирмы Wacom.


Далее я еще несколько раз заказывал разное себе по мелочи: бумажные альбомы, обычные листы А4 (бумага для принтера), простые карандаши, ластики.

Также в этом месяце поучавствовал в Ludum Dare 46, где сам же был ответственным за графическую часть. Открыл для себя Krita (раньше уже конечно слышал об этом граф. редакторе, но вот решил освоить его). Стиль спрайтов и анимацию всё изготавливал сам.

Получилось как-то так:




Май (aka Перемены Курса)


По советам с нескольких форумов по тематикам типа С чего начать новичку, были заказаны несколько книжек по рисованию. Начал проходить главы книги Искусство Рисунка за авторством Берт Додсон.

Пробные работы по урокам из книги ниже (ноги автора поста и бутылка алкогольного напитка)





Решил попробовать рисование поз (Figure drawing, gesture drawing). Пробовал по роликам Proko на YouTube. Осознал, насколько я в этом плох, решил что нужно как-то изучить этот вопрос, прокачать этот аспект.

Ужасные попытки в рисование поз прилагаются ниже




Просматривая ролики по Krita, наткнулся на рекламу курсов обучения рисованию персонажей на Одном Популярном Сайте С Курсами TM, подвергся влиянию рекламы и пошел на сайт. Там открыл для себя много крутых курсов по рисованию от Brent Eviston. Там же был курс по Figure Drawing, где художник посоветовал сперва пройти первые базовые курсы от него по рисованию (ну ещё бы, хорошо продает себя, чертяка!). В это время как раз была какая-то удачная акция на платформе, и поддавшись импульсу, я скупил где-то с штук 5 курсов, включая заветный Figure Drawing, тем самым дав себе обещание, прокачать эти области, пройти курсы.


Начал с курса Basic Skills. Пока что всё нравится. Это отработка совсем базовых, но необходимых навыков: рисование контуров, прямых линий, эллипсов, конструирование произвольных форм, держание карандаша, привычка рисования от плеча, не от кисти и так далее.



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





Нашел хорошую подборку статей и обучающих роликов по Krita, откуда открыл для себя потрясающий сайт (и соответствующий канал на YouTube) за авторством Nathan Lovato GDQuest.com. Там есть несколько хороших курсов (серии обучающих и вводных видео на YouTube) по рисованию в Krita.

По итогу по одной идее, которую мне подкинул мой хороший друг я выдал в редакторе Krita вот такого персонажа это шахтер-работяга. Рисовал техникой позаимствованной из вышеописанных обучающих роликов Nathan Lovato.


Скетч-набросок


Финальная работа

Мысли и наблюдения, которые я зафиксировал в мае:
  • Просматривая обучающий ролик Brent Eviston Одном Популярном Сайте С Курсами TM, я подметил некую аналогию в данной фазе рисовки накидывание сперва легких еле-заметных линий, наметки крупных основных форм, с постепенным их уточнением и корректировкой. У меня в голове сама собой выстроилась аналогия из мира программирования декомпозиция, накидывание интерфейсов и API. Последующие фазы это уже имплементации, небольшие подгонки API методов, дополнительные классы и интерфейсы.
  • Я отметил у себя легкие (можно сказать скрытие) боязнь и ступор, когда сел за планшет и открыл Krita. Вот вроде бы посмотрел обучающие ролики, все было понятно, был полон решимости. Но как сел сделать что-нибудь сам, повторить технику, создать свою работу получается полный ступор и страх, некого рода паралич. Похожие чувства были у меня новичка, когда я совершенно не знал информатику, ни одного ЯВУ, не имел никакого опыта в алгоритмах и решении каких-либо алгоритмических задачек.


Июнь


Продолжаю осваивать азы рисования по курсам от Brent Eviston на Одном Популярном Сайте С Курсами TM. Получается попрактиковать где-то 1-2 курсовых дня в неделю из программы курса (курс побит на недели, недели по 5 дней).

Серия изображений с прогрессом по ходу прохождения курса












Смотрю YouTube-ролики Ctrl-Paint, а также пересматриваю классные ролики от GDQuest, стараюсь перенимать оттуда подходы к рисованию ассетов для игр. В целом пытаюсь рисовать с той же техникой и алгоритмом шагов: фаза скетча, фаза обводки и заливки форм (с разбиением частей тела или предмета сразу по слоям), фаза добавления объема путем рисования обводящих линий и теней по краям полученных форм.

Мысли и наблюдения, которые я зафиксировал в июне:
  • Просматривая и повторяя за инструктором в видеокурсах по рисованию объема и форм невольно выстраиваю в голове аналогии с слоями и подсистемами в архитектуре разабатываемого программного обеспечения.



    Например, композицию из книги, апельсина и кружки, автор в рамках курса по освоению объемных форм, предлагает раскладывать (по сути декомпозировать!) на простые примитивные формы цилиндр, шар, стоящие рядышком на палаллелепипеде. Важно соблюсти примерное их расположение относительно друг друга, соотношение сторон и передать базовую форму, отбрасывая кучу аспектов: цвет, свет, детали, тени, снизводя всё до базовых примитивов.

    Это мне напоминает процесс, когда во время разработки, мы стараемся мыслить в один момент времени на каком-то одном уровне: 1. уровень API 2. уровень хранения данных (то, как мы побьем данные на модели и схемы, определим хранилище и так далее) 3. уровень протоколов и характеров взаимодействия (сетевые протоколы, очереди, гарантии доставки и прочее). 4. способы доставки и развертывания сервиса etc.


Июль


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

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

Продолжаю осваивать цикл курсов Art & Science, очень уж он мне по душе.

В этот месяц я ударными темпами проходил курсы Динамичные штрихи (техника применения штрихов для передачи глубины, расстояния, детализации рисунка.), Пропорции и измерения, а также Тени.

Работа с применением динамичных штрихов, кажется одно из финальных заданий курса. Сюжет на свободную тему (сделано на основе реального фото с собственного смартфона; но не срисовано!). Думаю, по рисунку вполне можно угадать город и даже более-менее вычислить обзорную точку.


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

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





Упражнение по отработке динамичных штрихов не глядя на холст рисуем по внутренним ощущениям сложный контур, например кисти рук

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

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

Также я еще дозаказал себе комплект альбомов формата А4 для рисования со спиралью и еще набор цветных карандашей, 18 цветов. Думаю, такого набора цветов мне хватит за глаза. Планирую использовать синий, голубой, бурый, красный.

А ниже работы в Krita, намалёванные в июле в Krita

Это хаотичное скопление клякс почему-то очень радует меня. Я сохранил работу. Как думаете, за сколько такое пойдет на торги на Sotheby's? ;)


Образ появился еще пару месяцев назад, случайно, когда баловался на бумаге. Теперь наконец-то реализовал его с помощью планшета в графическом редакторе.
Можно углядеть здесь применение инструмента зеркалирования в Krita.



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


Просто почеркушка (хотел повторить мультяшный стиль художника Blackthornprod). Сохранил как черновой проект с возможными планами развить идею. Но может быть просто выкину.

Мысли и наблюдения, которые я зафиксировал в июле:
  • Осмысление своих слабых сторон пропорции в рисунке натолкнуло меня на, как мне показалось, смешную аналогию из мира софтостроения регулярные промахи в оценке задачи.

    Я с усмешкой подметил, как я не очень хорош во временных оценках задач то, сколько та или иная задачка на имплементацию функционала или фикс бага занимает по задумке, и то, сколько она отъела в реальности порой очень разные числа. У меня она колебалось с перекосом в перерасход часов, от 1.2 до 2-3 раз.

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


    Поверьте мне, эти пропорции чрезвычайно кривые как мои временные оценки задач в JIRA.


Август


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

Также за август немного попрактиковался с планшетом.
Получились такие пара работ:


Развитие наброска, сделанного в блокноте несколько месяцев назад


Собственно тот самый набросок

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



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



В Августе помимо практики смотрел и впитывал мастерство Давида Ревуа по его роликам. В основном смотрел записи стримов, где он делает пейзажные композиции. Хотел бы я иметь такой талант!

По курсам я проходил Тени и Контуры. Наконец-то начал осваивать курс по рисованию поз, но об этом чуть ниже и чуть позже. А пока овощи, бананы и шары ниже по курсу.













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

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


    Каждый отдельный слой сам по себе скопление странных пятен..


    Но постепенно комбинируя, накладывая друг на друга слои получаем цельную картинку


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

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



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



Сентябрь


Решил сразу на грядущий месяц выставить себе какие-то цели. Некие ориентиры, TODO-ки. Запланировать спринт, если хотите.

Итак, что я хотел бы иметь в конце месяца:
  1. Несколько пейзажных работ, сделанных в графич. редакторе. 2-3 сюжета будет здорово. Любые попытки уже хорошо.
  2. Продвинуться дальше в курсе рисования поз. Пройти в курсе хотя бы 5-6 уроков.
  3. Сделать какую-нибудь анимацию в Krita. Скажем, 5-секундный простой сюжет.


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

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

Ниже то, что получилось во время обучения рисованию поз.









Первые уроки, да и вообще сам подход к рисованию поз ставят намеренные жесткие временные рамки в 30-60-90 секунд, бывают сессии до 3-5 минут, где уже можно разгуляться и уточнить свою позу, добавить каких-то деталей, теней и изюминок своей работе.

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

Октябрь


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

Ноябрь


Продолжил (вернее возобновил) курс рисования поз на Udemy. Из-за перерыва решил начать курс по позам с самых первых уроков, с самых азов первичные линии, вспомогательные линии, формирование корпуса, руки и так далее.

Придумал себе новую идею-фикс: каждый день посещать сайты-агрегаторы типа Pinterest и разглядывать интересные, красивые работы художников, всё, что приглянулось и привлекло. Закидываю такие работы на свою Pinterest-доску, с целью затем вернуться к этим работам, разглядеть их подробно, попытаться осознать технику и предположить, как и чем автор делал свой арт, подметить какие-то понравившиеся фишки, линии, сочетания цветов, мазки кистями, сюжеты. Короче, попытка впитать арт, сформировать некую насмотренность.


Вид моей доски в Pinterest с понравившимся артом. Назвал доску Насмотренность

Просматриваю YouTube ролики с ускоренным процессом рисования пейзажных сюжетов. Очень четко подметил, как художники активно и мудро используют слои. Впрочем, есть товарищи, которые все делают на одном слое, постепенно уменьшая кисть и меняя её. От крупных мазков на 200-300 пикселей толщиной до тонкой хирургической точечной рисовки деталей в 30-70 пикселей, при этом сам размер холста идет у художника в 3000 на 4000 пикселей, иногда и больше, чтобы было где размахнуться такими большими радиусами кистей.


Пример работы над пейзажным сюжетом в Krita с YouTube ускоренно заснятый процесс. Лайфхак: ставим скорость на 0.25 или 0.5 и получаем практически бесплатный туториал!

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













А вот наконец-то худо-бедно реализованные в Krita попытки в пейзажные композиции.


Попытка изобразить жаркую пустыню или каньон. Кажется, я даже не определился, что хочу показать зрителю. Оттого такая каша и чепуха на холсте.


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


То же самое подземелье, без цветов, только контуры.

Ниже моя попытка изобразить облака


И наконец, ниже снова, попытка выстроить композицию замок около-феодальных времен в безжизненной инопланетной пустыне.


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

Мысли и наблюдения, которые я зафиксировал в ноябре:
  1. То что я понял и усвоил Слои в Digital Арт-е решают. Это верный способ декомпозировать свою работу. Также в каждом отдельном слое очень удобно работать с конкретной группой объектов, изолированно от других. Это как раз то самое, что даёт нам грамотная архитектура, когда система очень хорошо разбита по слоям (пакеты, уровень сервисов, уровень хранения данных, уровень представления, уровень контроллеров и т.д.), каждый слой можно модифицировать практически безболезненно и в отрыве от других, не затрагивая целиком всю систему.
  2. Про общение с сообществами и критику. Только сейчас осознал и поймал себя на мысли, что еще ни разу не выкладывал свои работы на всеобщий суд коллег по цеху (то есть тех, кто параллельно со мной осваивает науку рисования или уже прокачан в ней). Пара выкладок в телеграм чате по Krita пожалуй не в счет. Я кидал свои работы родным и друзьям, скорее чтобы получить какое-то одобрение или похвалу, это точно было не фидбека и полезной критики ради, я уверен. Зачастую так и было, лишь пара человек подмечали и честно писали некоторые огрехи. На профессиональные форумы и сообщества я пока что так и не ходил и не выкладывал там свои поделки. Думаю, это защитная функция организма. Он очень боится критики и быть уязвленным.

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

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

    Могу предположить, что у людей из арт-мира, уже умеющих в рисование, музыку, сочинительство, которые начали постигать науку программирования есть схожие страхи они боятся делиться своими сниппетами с кодом, но смело показывают черновые наброски рисунков, какие-то свои полу-готовые работы.
  3. Это может быть для кого-то откровением, но многие уроки для одного графического редактора с некоторыми адаптациями и небольшими дополнительными усилиями можно смело проходить в другом редакторе. Так, мой выбор это Krita. Но интернет сплошь завален хорошими курсами и обучающими видео именно по ФШ. Не беда, я просто искал какие-то близкие аналоги тех же кистей или инструментов в Krita, и просто старался воспроизвести предлагаемую технику или повторить нужную картинку.


  4. Еще я понял, что моя проблема в том, что я не знаю, в каких направлениях в рисунке я хочу развиваться. Пейзажи, персонажи, анимация, окружение, ассеты для игр мне одинаково интересно всё. Думаю, такое распыление как раз не пошло мне на пользу, а размазало мои усилия по прокачке тех или иных навыков, уже под конец года. С тем же программированием все не так я знаю, какие темы мне совершенно не интересны и я спокойно или порой намеренно обхожу их стороной и не трачу усилия на их изучение или по крайней мере глубокое понимание. Например, ML, Искусcтвенный интеллект, какие-то вещи из мира front-end-разработки я не хочу развиваться в этих областях и четко направляю свои усилия в другие области ИТ.


Декабрь


Почти завершил курс рисования поз, но осознал, что материал точно не освоен на все 100%. Есть очень много огрехов и совершенно плохих мест в рисунке (начиная от пропорций, заканчивая сильно искаженной позой и неправильной формой отдельных частей тела).










Не бросая попыток изобразить пейзажные композиции, накидал в Krita мелькнувший в голове сюжет пещера с выпученными в ней от страха глазами. Кто это? Человек ли, дикий зверь или просто обман зрения, и никого там нет?


Назвал картинку Первобытный Страх

В Krita я делал небольшие разогревочные (warmup) сессии по рисованию поз. Здесь рекомендую полезный сайт, заточенный специально под эти упражнения: Line Of Action











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





Пока получился вот такой набросок моего персонажа, он еще будет дорабатываться, но уже скорее всего в следующем году. Вдохновение и некоторые фишки я брал со скетчей великого мультфильма от любимейшей анимационной студии Pixar Bug's Life, плюс немного скетчей поваров и шефов от других авторов, анатомических рисунков жуков. Процесс работы выглядела так в левой части экрана открыты и разложены ровным коллажем несколько картинок, скачанных с Pinterest, в правой части экрана графический редактор с белым холстом в отдаленном масштабе, куда штрихами набрасывались основные формы жучка от крупных и длинных линий к мелким штрихам и деталям.



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

Мысли и наблюдения, которые я зафиксировал в декабре:
  • В сети есть валом диаграмм и Mind Map-ов с планом развития навыков для освоения профессии Front-End разработчика, Back-End разаботчика и так далее. Похожих толковых и развёрнутых планов для того, чтобы стать скажем классным digital artist-ом, я так и не смог найти, но скорее всего плохо искал. Был бы очень рад, если в комментариях поделятся подобными диаграммками и планами обучения.


Немного фактов и статистики


  1. Сточил примерно 2 простых карандаша и половину цветного.
  2. Была изрисована примерно 1 целая пачка листов А4 для принтера и где-то 40 листов альбома для рисования.
  3. Посмотрел порядка 55 роликов по рисованию на YouTube (примерно 16 часов)
  4. Провел примерно 80+ часов за данным хобби (сюда не входит вдумчивый и не очень просмотр роликов с YouTube)
  5. На моё хобби было потрачено примерно 12 734 рубля.
  6. Было приобретено 3 книги по изобразительному искусству. Ни одну из них в итоге я не прочел до конца, не применил на 100% и не сказал бы сейчас, что эти покупки были оправданы. Скорее всего, это были импульсивные поступки по приобретению чего-то в надежде качественно улучшить свой навык.

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


В качестве заключения


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

    Да. У меня есть работы, которые мне нравятся, нравится идея, исполнение.
  2. Мог ли я освоить рисование более эффективно за этот год?

    Безусловно. Я думаю, без четко сформулированной цели (чего же в конце концов я хочу добиться уметь суперски рисовать лошадей, анатомию, позы, пейзажи, делать концепт-арты игровых локаций?), хотя бы какого-то схематичного плана на год, меня метало из стороны в сторону, фокус обучения и усилий размывался в совершенно разные области, поэтому не выстраивалась никакая система, это просто были лихорадочные набеги творчества. Но думаю, что лучше хотя бы так, чем никак.
  3. Что я могу посоветовать новичкам, решившим тоже войти в чудесный мир рисования?

    Что я могу тут советовать; я сам пока такой же новичок и я отнюдь не педагог. Я лишь уверен, что каждый пойдет абсолютно своим уникальным путем обучения, которым пошёл я. Таков путь (с)
  4. Какие мои дальнейшие планы касательно рисования?

    Думаю, что следующий год я также уделю прокачке рисования, различным техникам и областям.

    В арте мне интересно очень и очень многое:
    • пиксель-арт
    • анимация
    • пейзажи
    • механизмы, машины, здания
    • CG графика тоже очень меня привлекает. В студенчестве я баловался Blender-ом, изредка набегами заныривал туда и быстро выныривал обратно в рутину и бытовуху.
    • low-poly тоже меня завлекает

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



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

Самообучение в организации и как сделать эффективный тренинг

10.06.2021 14:04:32 | Автор: admin

Коллеги, всем привет!

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

Сразу отмечу, что если хочется получше разобраться с тем, как создаются тренинги, то стоит прочитать интереснейшую и полезнейшую книгу Д.А Григорьева Бизнес-тренинг: как это делается.

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

Условно работу над тренингом можно разделить на три этапа:

  • Подготовка.

  • Проведение.

  • Оценка успешности.

Ниже подробнее рассмотрим каждый из них.

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

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

Проиллюстрирую эту мысль на примере. Как вы думаете, в каком случае тренинг будет интереснее:

  • Мы приходим, рассказываем какую-то теорию, а потом просим сделать какие-то упражнения.

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

Подсказка - во втором случае:) Это и есть реализация цикла Колба.

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

Этап 1. Подготовка и проектирование тренинга

Шаг 0. Определить цели тренинга и критерии их достижения.

Прежде чем проектировать любой тренинг, необходимо четко ответить на ряд вопросов:

  • Какую проблему мы хотим решить, почему считаем, что она актуальна?

  • Какую цель мы хотим достичь?

  • Кто является нашей основной аудиторией?

  • Какие критерии достижения цели, и как мы проверим, что мы их выполнили?

От ответов на эти вопросы будет зависеть следующее:

  • Какую именно информацию необходимо донести до аудитории в ходе тренинга.

  • Какие упражнения стоит предложить аудитории, чтоб лучше сформировать и закрепить необходимые навыки.

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

Шаг 1. Определить, как мы будем формировать запрос на обучение у будущих участников.

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

  • Деловые игры, в ходе которых участники моделируют различные ситуации и в процессе осознают, что у них есть проблемы.

  • Разбор какой-то типовой рабочей ситуации, где проявляется проблема.

  • Предложить участникам решить задачу привычными им способами, после чего оценить эффективность.

  • Дать участникам возможность смоделировать идеальную ситуацию и сравнить с текущей.

И т.п.

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

  • Какой вывод можно сделать из этой ситуации?

  • Что было самым сложным в упражнении? Почему?

  • Что получилось лучше всего, а что хуже? Почему?

  • Насколько эффективен полученный результат?

И т.п.

Лайфхак:). Иногда ответы, которые участники дают на, казалось бы, простой вопрос, могут сильно отличаться от тех, которые ожидает услышать тренер:) Поэтому имеет смысл сначала определить для себя итоговую мысль (ответ), которую должны осознать участники, а потом придумать вопрос, на который можно было бы ответить только так, как хочет тренер:)

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

Шаг 2. Подготовить теоретическую часть тренинга.

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

Этот рассказ можно проводить в формате мини-лекции, но важно помнить, что идеальная длительность мини-лекции 15-20 минут, после этого у слушателей снижается эффективность восприятия информации. Если лекционная часть больше по времени, то нужно разбивать ее на части, каждая из которых завершается упражнением на формирование навыка и его осознанием (см. ниже).

Шаг 3. Подготовить упражнения для закрепления навыков.

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

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

Шаг 4. Продумать, как подвести участников к осознанию и осмыслению результатов.

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

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

  • Что полезного вы выносите с сегодняшнего тренинга, и как хотите применить это в работе?

  • Как то, что вы сегодня изучили, повлияет на вашу работу? Что изменится?

  • Что для вас было самым ценным в сегодняшнем тренинге? Почему?

И т.п.

Шаг 5. Продумать, как мы будем собирать обратную связь и оценивать эффективность тренинга.

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

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

  • Контрольное тестирование спустя какое-то время после тренинга, где мы проверим то, насколько участники овладели необходимой информацией и навыками.

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

  • Оценка изменения продуктовых метрик, KPI и т.п. Например, если мы проводили тренинг по освоению какой-то техники, которая должна повысить эффективность процесса, то можно сравнить метрики этого процесса до тренинга и спустя несколько месяцев.

И т.п.

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

Этап 2. Проведение тренинга

После того, как мы выполнили подготовку, можно проводить тренинг. Ниже типовой сценарий:

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

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

  3. Определить и зафиксировать правила работы. Важно в самом начале тренинга определить базовые правила работы (не перебивать, отключать телефоны, как задавать вопросы, взаимное уважение и т.д. и т.п.), чтобы все их понимали, и в процессе проведения тренинга можно было на них ссылаться.

  4. Формирование запроса на обучение. Тут предлагаем команде выполнить те задания, которые мы разработали на этапе проектирования тренинга.

  5. Теория. В формате мини-лекции рассказываем теорию, которую хотим донести до команды.

  6. Практика. Отрабатываем те упражнения, которые мы разработали на этапе проектирования.

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

Этап 3. Оценка результатов

Как уже говорил выше, спустя какое-то время после проведения тренинга необходимо оценить его эффективность. Для этого мы воспользуемся теми инструментами и подходами, которые определили на этапе планирования тренинга.

Вот собственно и всё. Надеюсь, что описанные выше идеи будут полезны в подготовке ваших тренингов.

Подробнее..

Перевод Почему не стоит читать статьи о том как за несколько месяцев стать специалистом по Data-science

07.03.2021 16:16:59 | Автор: admin

Когда я приступила к изучению дата-сайенс (сейчас автор статьи CAN | Geoscience BSc undergrad student | Software Dev graduate), прим. перев.), я читала практически каждую статью по этой темпе, которая попадала в мои руки. В большинстве случаев это были вдохновляющие статьи других людей, которые смогли обучиться профессии дата-сайентиста самостоятельно.

В этих статьях было полным-полно информации о счастливчиках, которые, не имея IT-образования, преодолели все преграды и проблемы и стали дата-сайентистами в течение нескольких месяцев. Само собой, большинство авторов таких статей затем устраивались в крупные компании класса FAANG.

Статей подобного рода полным-полно в интернете. Как я стал дата-сайентистом за 6 месяцев, Как я стал дата-сайентистом и устроился в Google в таких материалах приводятся подробности успеха.

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

Возможности это все


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

Примеры возможность учиться по 8 часов в день, что может позволить себе далеко не каждый, возможность платного участия в буткемпах и MOOC, проживание в каком-либо из tech hub. Все это позволяет ускорить процесс обучения, но доступно немногим.

Никто не говорит, что люди с подобными преимуществами не работали, не старались. Конечно, нет, они много месяцев долго и упорно трудились, не будем приуменьшать их заслуги. Но проблема в том, что статьи об успешных новичках в индустрии обычно не раскрывают эти подробности, а ведь рассчитаны подобные материалы на самую широкую целевую аудиторию. У 90% из читающих нет ни возможности целыми днями учиться, ни платить за буткемпы.

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

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

Эффект выжившего или то, что сработало для кого-то, не означает, что оно сработает для всех


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

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

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

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


Кстати, большинство авторов, которые пишут такие материалы, часто считают само собой разумеющимся базовое образование в сфере разработки ПО или любой другой IT-отрасли. И для айтишника это действительно само собой разумеется. Но ведь читают-то такие статьи вовсе не только IT-специалисты.

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

Стать дата-сайентистом менее, чем за год? Это можно считать чудом


Год не такой и большой промежуток времени. Достичь чего-либо за год это сложно, особенно, если мы говорим о том, чтобы стать специалистом в сфере больших данных.

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

Когда я училась в университете, и приступила к изучению разработки ПО, не имея предшествующего опыта программирования (за исключением небольшого опыта HTML и CSS, что нельзя, собственно, считать программированием), то мне понадобился целый семестр, чтобы изучить хотя бы базовые основы работы с C#. Целых четыре месяца.

Шести месяцев или года будет недостаточно для того, чтобы освоить базовые вещи, которые необходимы IT-специалисту, не говоря уже о самой дата-сайенс. Но, конечно, это в том случае, если у вас нет специального образования. На то, чтобы разобраться в абстрактных концепциях и научить свой мозг думать о вещах иначе, может понадобиться куча времени.

А время идет, дедлайн все ближе, и все это может здорово вас расстроить. Здесь снова стоит подчеркнуть, что дедлайны важны, но вам нужно понимать свой собственный путь. Да, человек, который в состоянии посвятить обучению 8 часов в день, вполне может справиться за год, возможно, и за полгода. Но если выкраивать на обучение 1-2 ежедневно после основной работы? Сомневаюсь.

По моему мнению, для того, чтобы получить работу в отрасли дата-сайенс, необходимо потратить на обучение минимум год. Этот минимум очень зыбкий, поскольку, скорее всего. Понадобится больше времени. Если у вас получится отлично, нет не стоит переживать, поскольку даже год можно считать почти невозможным сроком. А полгода и подавно.

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

В сухом остатке



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

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

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

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

Подробнее..

Перевод Почему не стоит читать статьи о том, как за несколько месяцев стать специалистом по Data Science

07.03.2021 18:19:39 | Автор: admin

Когда я приступила к изучению Data Science (сейчас автор статьи CAN | Geoscience BSc undergrad student | Software Dev graduate), прим. перев.), я читала практически каждую статью по этой теме, которая попадала в мои руки. В большинстве случаев это были вдохновляющие статьи других людей, которые смогли обучиться профессии дата-сайентиста самостоятельно.

В этих статьях было полным-полно информации о счастливчиках, которые, не имея IT-образования, преодолели все преграды и проблемы и стали дата-сайентистами в течение нескольких месяцев. Само собой, большинство авторов таких статей затем устраивались в крупные компании класса FAANG.

Статей подобного рода в интернете много. Как я стал дата-сайентистом за 6 месяцев, Как я стал дата-сайентистом и устроился в Google в них описываются подробности успеха.

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

Возможности это все


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

Например, возможность учиться по 8 часов в день, что может позволить себе далеко не каждый, возможность платного участия в буткемпах и MOOC, проживание в каком-нибудь tech hub. Все это позволяет ускорить процесс обучения.

Никто не говорит, что люди с подобными преимуществами не работали, не старались. Конечно, нет, они много месяцев долго и упорно трудились, не будем приуменьшать их заслуги. Но проблема в том, что статьи об успешных новичках в индустрии обычно не раскрывают эти подробности, а ведь рассчитаны подобные материалы на самую широкую целевую аудиторию. У 90% из читающих нет возможности ни учиться целыми днями, ни платить за буткемпы.

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

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

Эффект выжившего или то, что сработало для кого-то, не означает, что оно сработает для всех


Авторы некоторых статей о Data Science предлагают идеальный, по их мнению, план, который позволит любому читателю стать профессионалом в этой сфере за короткий период времени.

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

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

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


Кстати, большинство авторов, которые пишут такие материалы, часто считают само собой разумеющимся базовое образование в сфере разработки ПО или любой другой IT-отрасли. И для айтишника это действительно само собой разумеется. Но ведь читают-то такие статьи вовсе не только IT-специалисты.

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

Стать дата-сайентистом менее, чем за год? Это можно считать чудом


Год не такой и большой промежуток времени. Достичь чего-либо за год это сложно, особенно, если мы говорим о том, чтобы стать специалистом в сфере больших данных.

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

Когда я училась в университете, и приступила к изучению разработки ПО, не имея предшествующего опыта программирования (за исключением небольшого опыта HTML и CSS, что нельзя, собственно, считать программированием), то мне понадобился целый семестр, чтобы изучить хотя бы базовые основы работы с C#. Целых четыре месяца.

Шести месяцев или года будет недостаточно для того, чтобы освоить базовые вещи, которые необходимы IT-специалисту, не говоря уже о самой дата-сайенс. Но, конечно, это в том случае, если у вас нет специального образования. На то, чтобы разобраться в абстрактных концепциях и научить свой мозг думать о вещах иначе, может понадобиться куча времени.

А время идет, дедлайн все ближе, и все это может здорово вас расстроить. Здесь снова стоит подчеркнуть, что дедлайны важны, но вам нужно понимать свой собственный путь. Да, человек, который в состоянии посвятить обучению 8 часов в день, вполне может справиться за год, возможно, и за полгода. Но если выкраивать на обучение 1-2 ежедневно после основной работы? Сомневаюсь.

По моему мнению, для того, чтобы получить работу в отрасли дата-сайенс, необходимо потратить на обучение минимум год. Этот минимум очень зыбкий, поскольку, скорее всего. Понадобится больше времени. Если у вас получится отлично, нет не стоит переживать, поскольку даже год можно считать почти невозможным сроком. А полгода и подавно.

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

В сухом остатке



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

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

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

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

Подробнее..

Изучение data science c нуля этапы и вехи

22.01.2021 02:23:24 | Автор: admin

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

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

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

Для каждого этапа указываю ориенторовчные трудозатраты, при условии более-менее эффективного подхода и изучении только минимально необходимого объема (при неэффективном подходе - каждый пункт можно учить в десять раз дольше)

Позднее, в отдельной статье напишу хорошие курсы и книги, соответствующие каждому этапу (некоторые курсы и книги для первых этапов уже указал ранее в первой статье этой серии).

Этап 1. Базовые инструменты анализа данных: SQL, Excel

  • SQL, основы (20ч). Самостоятельное знание SQL может пригодится для выполнения кучи других задачи. И оно, в любом случае, необходимо для большой (большей?) части вакансий на позицию аналитика, дата сайентиста и, тем более, machine learning engineer.

  • Основы Excel (10ч): фильтры и сортировка данных, формулы, vlookup, pivot tables, базовая работа с графиками. Коллеги, партнеры или руководство будут присылать входящие данные в excel, и вам нужно будет уметь их быстро понять и изучить. Нередко и результаты анализа сделанного на Питоне удобнее подготовить и предоставить в Excel.

  • Базовый английский (20-200ч, зависит от предыдущего уровня), на уровне самостоятельного чтения технической документации и спец.литературы. Например, вам совершенно необходимо уметь читать официальную документацию pandas/scikit, и также многие хорошие материалы по Python доступны только на английском.

В некоторые компании с таким набором знаний берут на позиции: аналитика/ младшего аналитика/ веб-аналитика. В Москве хорошие знания этих вещей могут, иногда, давать ЗП до 100тыс, но вероятнее ЗП порядка 50-70 тыс и начальная позиция .

Этап 2. Основы Python и Pandas

  • Основы Python (80ч). Без знания Питона невозможно использовать львиную часть инструментов машинного обучения. Другие языки менее эффективны в этой сфере и непопулярны.

  • pandas (20 ч) - основа основ в работе с данными в Питоне. На первых порах достаточно хотя бы самых базовых знаний: индексирование, выбор данных по условиям, группировка данных, и соединение разных датафреймов

  • Также научиться основам работы с разными API и парсингом данных (requests, beatiful soup)

На этом этапе дополнительные знания Python позволяют вытаскивать данные из разных API, или путем веб-парсинга.

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

Этап 3. Базовые понятия и классические алгоритмы машинного обучения

(Этот этап может занять 200-400 ч в зависимости от того, насколько хорошо изначально вы владеете математикой)

Базовые понятия машинного обучения:

  • Кросс-валидация

  • Overfitting

  • Регуляризация

  • Data leakage

  • Экстраполяции (понимание возможности в контексте разных алгоритмов)

Базовые алгоритмы, которые достаточно знать на уровне главных принципов:

  • Прогнозирование и классификация:

    • Линейная регрессия

    • Дерево решений

    • Логистическая регрессия

    • Random forest

    • Градиентный бустинг

    • kNN

  • Кластерзиация: k-means

  • Работа с временными рядами: экспоненциальное сглаживание

  • Понижение размерности: PCA

Базовые приёмы подготовки данных: dummy переменные, one-hot encoding, tf-idf

Математика:

  • умение считать вероятности: основы комбинаторики, вероятности независимых событий и условные вероятности (формула Байеса).

  • Понимать смысл фразы: "correlation does not imply causation", чтобы верно трактовать результаты моделей.

  • Мат.методы, необходимые для полного понимания, как работают ключевые модели машинного обучения: Градиентный спуск. Максимальное правдоподобие (max likelihood), понимание зачем на практике используются логарифмы (log-likelihood). Понимание как строиться целевая функция логистической регрессии (зачем log в log-odds), понимание сути логистической функции (часто называемой "сигмоид"). С одной стороны, нет жесткой необходимости всё это понять на данном этапе, т.к все алгоритмы можно использовать как черные ящики, зная только основные принципы. Но понимание математики поможет глубже понять разные модели и придать уверенности в их использовании. Позднее, для уровня senior, эти знания являются уже обязательным:

Без практических навыков знания данного этапа мало повышают ваши шансы на трудоустройство. Но значительно облегчают общение с другими дата-сайентистами и открывают путь для понимания многих дальнейших источников (книг/курсов) и позволяют начать практиковаться в их использовании.

Этап 4. Набор базовых навыков решения задач

Цель данного этапа - получение навыков применения всех ранее изученных методов машинного обучения с помощью scikit-learn, pandas (numpy).

По сути, это практика по теоретическим знания предыдущего этапа. Имеет смысл отвести на это 100-300ч. И важнее уметь хотя бы как-то применять все указанные выше методы, чем дотошно разобраться в одном из них.

Тут же следует инвестировать время в изучение разных приёмов и трюков feature engineering

По завершению данного этапа есть шанс устроиться на позицию junior data scientist. ЗП будет низкая. Но главное будет продолжать учиться. До достижения уровня senior возможность учиться у коллег ценнее, чем текущая зарплата.

Знакомство с основами нейронных сетей

На данном этапе может быть полезно знание основ нейронных сетей, CNN, RNN/LSTM слоев, vector embeddings. Но не обязательно уметь тренировать их самому, на данном этапе. Пока это важно для "общего развития" и чтобы вы не хотели применять нейронные сети там, где без можно обойтись, и, наоборот, понимали где они могут быть полезны и когда имеет смысл или обращаться к коллеге уже их знающему, или браться за глубокое изучение и практику.

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

Рекомендую ограничить это объемом в 20-40ч, необходимым только для общего понимания концепций.

Этап 5. Дополнительные технические навыки, необходимые в работе

Данные этап может занять 60-200ч, в зависимости от степени перфекционизма. Оптимальным кажется изучить всё на столько, чтобы понимать ключевые принципы и команды, но не обязательно тренироваться на большом количестве учебных примерах, т.к. если удастся устроиться на работу, то получение практики и оттачивание навыков можно делать уже в процессе работы

  • Conda, понимание проблем зависимостей версий библиотек, и как conda это может решить

  • основы bash

  • Python standard library, если не освоили ранее (необходимый минимум itertools, collections, contextlib), умение эффективно разбивать код на функции и модули, классы; умение применять context managers.

  • Основы git, также очень полезно умение работать с IDE: pycharm/vs code. Их использование облегчит работу с git, заменив графическим интерфейсом работу с командной строкой

  • Библиотеки визуализации (matplotlib+seaborn, plotnine, plotly), если не освоили их раньше.

С таким багажом знаний наверняка можно найти позицию джуниор дата сайентиста (может называться по-другому, но суть та же).

В принципе, на этом уровне знаний можно работать годами, практикуясь в применении разных из уже изученных моделей, библиотек и инструментов, осваивая вспомогательные методы (feature engineering), нюансы, и способы решения похожих же задач, с помощью разных библиотек (xgboost, cat-boost). Постепенно будет уровень рост ЗП. Но это не уровень Senior специалиста.

Изучаем по необходимости, этапы 2-5

Визуализация данных

В какой-то момент времени вам потребуется уметь визуализировать данные, с которыми вы работаете. Имеет смысл активно это изучать тогда, когда вы будуте готовы сразу примененять эти знаний на практике, потому что иначе они не запоминаются. В Питоне существует несколько библиотек (привожу рекомендуемый порядок изучения):

  • matplotlib на нём базируется следующие два варианта, и потенциально он может всё. Но тяжел и неэффективен для прямого использования, кроме построения уродливых графиков, для себя и коллег-технарей. Можно специально не учиться его применять, а понять только самые основы, которые будут "проступать" из-за других библиотек.

  • seaborn - очень популярная библиотеа, в одну строчку решающая многие стандартные задачи. Достаточно понимать принципы и уметь находить как сделать нужные вещи с помощью документации.

  • plotnine - позволяет создавать очень креативные графики. Супер-мощный инструмент, позволяющий в несколько строчек кода создать самые нетривиальные графики. В сравнении - seaborn не имеет подобной гибкости, а в matplotlib замучаешься разбираться чтобы сделать такой же график, если он не совсем примитивный. Однако, поначалу, plotnine требует определенного времени на освоение. Если бы не существовал plotly - это был бы самый мощный инструмент.

  • plotly - позволяет делать все графики интерактивными. Сложен в изучении и плохо документирован. Вероятно, не имеет смысл его изучать, пока вы не поймёте точно что вам это необходимо (интерактивность).

До начала применения в реальной практике, на обучение можно себя ограничить в 10-20ч на одну библиотеку.

Если вам нет нужды сначала применять питон для подготовки данных, или вы хотите создать визуальные дэшборды которыми смогут пользоваться другие люди - посмотрите в сторону PowerBI и Tableau, это крайне мощные и популярные инструменты визуализации данных. Изучить каждый из этих инструментов на минимальном рабочем уровне можно, примерно, за 60ч. Знание связки SQL+Excel+PowerBI/Tableau откроет вам позиции аналитиков и "BI-специалистов" c окладами в Москве от 100 тыс., коммуникабельные специалисты с хорошими знаниями этих инструментов находят позиции с ЗП от 150 тыс. Подобные вакансии в основном встречаются в корпорациях и системных интеграторах.

Средства работы с данными

Можно учить на разных этапах, в зависимости от задач, с которыми столкнётесь

  • Основы regular expressions, aka RegExp (10ч). Знания regexp необходимо для продвинутой фильтрации данных в разных инструментах для работы с данными.

  • PySpark (40ч на изучение основ, 100-200ч на достижение хорошего рабочего навыка) . Он необходим когда у вас данных очень много, и приходиться обрабатывать их сразу на целой группе серверов (кластере). Это уже Big data. Не имеет смысл разбираться с ним заранее, т.к. знания являются не фундаментальными и легко забываются. Эффективнее осваивать когда планируете начать использовать (или перед тем как подать резюме на позицию, требующую данных знаний).

    Внутри Spark устроен сильно не так, как обычные базы данных, но с точки зрения использования он оказывается сильно похожим, т.к. поддерживает почти стандартный SQL синтаксис или, как альтернативу, API отдалённо похожий на pandas. Определенные концептуальные отличия присутствуют, но больших сложностей в освоении это не вызывает. В последнее время продвигают библиотеку Koalas, которая будет использовать команды совсем как у pandas для работы с spark-кластером, но пока не советую делать это основным подходом по работе с Spark.

  • Основы html - необходимы, как минимум, для общения с коллегами и понимания их языка, если вы хоть немного сталкиваетесь с сайтами и необходимостюь их парсить или анализировать данные с них.

Этап 6

Углубление и развитие технических навыков

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

  • Python на хорошем уровне: декораторы, уверенное знание классов и наследования, изучение базовых классов, dunderscore __методы__ .

  • Уверенное пользование bash, понимание основ linux

  • Полезно изучить основы docker

Все эти вещи можно было бы учить и раньше. Но, как правило, раньше их знать просто не нужно. Т.к. вы больше будете страдать от нехватки других навыков, приведенных в предыдущих этапах.

Другие области машинного обучения

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

Нейронные сети

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

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

Другие статьи о самообразовании

Вводная статья о том, как понять, стоит ли вам вообще идти в data science и как сделать первые шаги

Принципы эффективного самообучения

Как минимум, планируется статья с рекомендациями книг и курсов, в соответствии с приведенными этапами

Готов стать ментором

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

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

Надеюсь, что когда вы почувствуете значительный результат от статей или рекомендаций, вы за него заплатите, сколько сочтёте нужным.

self.development.mentor в домене gmail.com, Олег

Подробнее..

Обзор платформ для изучения машинного обучения с нуля

31.01.2021 14:19:04 | Автор: admin

Один из главных вопросов у людей изучающих что-либо - выбор источников информации: курсов, книг, статей. В последнее время, и особенно в изучении data science, широта выбора вводит в ступор: курсов и книг просто море, особенно если рассматривать доступные на английском языке. В данной статье дам субъективный обзор платформ он-лайн обучения, показывая те, которые дают изначально более фундаментальные знания (спойлер: coursera.org и learning.oreilly.com мои фавориты).

Введение. Мотивация к данной статье

Когда я начал изучать машинное обучение и математику, то в какой-то момент заметил как легко я понимаю те вещи, которые в институте скорее заучивал, чем понял. Это было благодаря нескольким факторам:

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

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

т.к. вы можете выбрать абсолютно любой курс и преподавателя - можно найти того, кто объясняет наиболее понятно;

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

В итоге, у меня сложилось мнение, что эффективное изучение материала, в первую очередь, зависит от качества и формы его подачи, а не от талантов ученика. Поэтому, для себя я решил, что стоит тратить силы на нахождение лучших, в своём роде, книг и курсов. В итоге, пока изучал основы DS, я просматривал десятки разных источников, и заметил, что есть настоящие жемчужины, отлично объясняющие материал, и, наоборот, многие курсы и книги не дают принципиальное понимание предмета, а просто приводят отдельные примеры, призывая их повторять (набрать программный код), но не объясняя общих принципов так, чтобы вы смогли решить принципиально похожую, но отличающуюся задачу. Т.к. издание книг и курсов дело прибыльное, то курсов и книг второго типа намного больше: большая часть книг и курсов, которые я просматривал, не давали ничего полезного (запоминающегося).

Сначала я начал писать статью с рекомендациями по книгам и курсам, но т.к. новые книги и курсы выходят регулярно, то поменял что необходимо иметь представление об он-лайн платформах в целом. К тому же, обзор платформ получился длинный, и стоило его публиковать отдельно от списка конкретных курсов. Ниже привожу субъективное сравнение платформ, в основном на базе курсов, которые там были доступны в 2016-2018гг (в эти годы я просмотрел десятки вариантов).

Платформы

coursera.org

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

Данный портал был первопроходцем в он-лайн образовании, выводя в он-лайн разные курсы от топовых преподавателей американских университетов. Т.к. изначально это был вывод он-лайн лучших университетских курсов - они были ориентированы на преподавание базовых и фундаментных принципов. Именно это свойство качественно отличает курсы на данной платформе, от других платформ. Сейчас кроме университетских курсов там также есть курсы от ведущих организаций (Google, Яндекс, deeplearning.ai, т.п.)

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

Следите за курсами данных организаций

Возможно, лучшие курсы по самым основам машинного обучения и дата сайенс - изначально русскоязычные и доступны на этой платформе. Это хорошие курсы и специализации Высшей школы экономики, Яндекс (+МФТИ). Даже если вы прекрасно владеете английским - основы я рекомендую изучать по этим русскоязычным курсам. В целом, каждый курс от представленных выше организацией, был мне в чём-то полезен.

Англоязычный курс по нейронным сетям от Andrew Ng (deeplearning.ai), вероятно, самые известный из всех курсов по нейронным сетям. Другие курсы от "deeplearning.ai" по нейронным сетям также хороши.

На coursera.org очень много хороших курсов (хотя есть и плохие, или неактуальные). Но поиск на этом сайте - отвратительный. Рекомендую через страницу "Партнёры" открывать списки курсов всех упомянутых выше организаций, и смотреть что они предлагают, у них плохих курсов нет (пример https://www.coursera.org/hse).

В отдельной статье, дам шорт-лист из курсов данных партнеров.

Как бесплатно просматривать курсы на coursera.org

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

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

Другая возможность - написать в coursera.org и попросить дать вам бесплатный доступ, с мотивировкой почему вам следует его дать. Эта возможность явно указана у них на сайте. По опыту знакомых (высокооплачиваемая мать-одиночка из Германии) - они вполне идут на встречу.

edx.org

Платформа конкурирующая с coursera.org, также ориентированная на курсы с глубокой подачей материала. Я изначально мало пользовался этой платформой, т.к. coursera.org всегда была моим первым выбором. Но из тех курсов, которые я на ней просматривал, только парочка давала что-то, чего в этом момент не было на coursera.org. Кажется, тут сейчас идёт больший акцент на преподавание целых университетских программ, с соответствующими дипломами, и ценами.

stepik.org

Это полностью русскоязычная платформа. Многие курсы бесплатные/дешёвые и интерактивные (важно для отработки навыков). Среди всего, доступного на русском языке, некоторые курсы могут быть очень привлекательными (бесплатно и хороший материал). Но лучших, в своём роде, курсов встретилось мало. Сложилось впечатление, что многие (большинство?) курсов скорее вводные, недостаточные для глубокого погружения в тему. Ряд курсов были устаревшими или очень узкими по своей подаче материала, хотя материал и был дан хорошо и может оказаться полезным для понимания общей картины.

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

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

udemy.com

Несколько раз я рассматривал курсы на этой платформе, но каждый раз приходил к ощущению, что все курсы слишком обзорные. Дают практический навык, но не нацелены на концептуальное понимание. Например, я разочаровался в многообразии бесполезных курсов по Spark и PySpark (это было в 2018г).

Хотя как раз для отработки концептуально не сложных навыков (основы Питон), курсы на этой платформе могут быть эффективны. Например, с нуля по Python могут быть полезны курсы: 1, 2. Это курсы ориентированные на кого-либо без предыдущего опыта программирования.

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

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

datacamp.com

Я не брал ни один курс, т.к. они все были платными. Судя по бесплатно доступным первым урокам, их подходы хороши для того чтобы "набить руку" на использовании базовых библиотек. И, в таком качестве, их можно использовать (отработка навыков Python, Pandas, SQL, и разных инструментов и библиотек). В этом качестве, вероятно, они будет лучше альтернатив с udemy, т.к. datacamp изначально разрабатывалась как платформа обучения навыкам data science, с хорошей проработкой способов делать интерактивные упражениния.

Но, по моим ощущениям и отзывам тех, кто там учился - курсы данной платформы плохо подходят для формирования общего кругозора и изучения фундаментальных концепций. Поэтому, нельзя их брать за основу изучения такой сферы, в котой много фундаментальных знаний. Скорее как наборы для отработки практических навыков.

Способ сэкономить, если хотите учиться на этих курсах - следить за распродажами. В последнюю "черную пятницу" там были скидки до 50%.

Книги: learning.oreilly.com (также есть и курсы)

Это уникальная, в рамках данного обзора, платформа в том смысле, что она изначально ориентирована на предоставление подписки на книги. Покупаете годовой абонемент, и получаете доступ практически ко всем существующим книгам по ИТ на английском языке.

Эта платформа издательства O'Reilly, которое, кажется, является самым крупным издательством, специализирующемся на ИТ-литературе. И на их платформе не только их книги. Можно найти книги бОльшинства издательств, специализирующихся на ИТ-литературе.

Список рекомендуемых книг я приведу в отдельной статье. Но, в целом, хорошо работает подход предварительной фильтрации книг по рейтингу - все лучшие книги имеют >4 звёзд. Кажется, я не встретил ни одной книги с меньшим рейтингом, которую стал полностью читать. В лучше случаем, просматривал отдельные главные.

В последние годы они также развивают он-лайн курсы на своей платформе, которые доступны в рамках той же подписки. Я их пробовал только в 2019г, тогда им не хватало возможностей отработки практических навыков. Кажется, курсов, ориентированных фундаментальные знания, как на coursera.org, там было мало. Но курсов, посвященных отдельным ИТ-технологиям на этой платформе множество и самых разнообразных.

В бесплатном доступе ничего нет, и подписка достаточно дорогая (~400$ в год). Если подписаться на новости и рассылки на сайте oreilly.com - раз в год они устраивают 2 недели распродаж (в разное время! обычно - осенью). В этот период подписку можно купить со скидкой 50%

Книги: b-ok.org

Многие специализированные книги по machine learning и data science стоят очень дорого. Особенно в сравнении с уровнем доходов большинства русскоязычного населения, кто может читать эту статью. Поэтому позволю себе прорекламировать сомнительный ресурс. На данном сайте можно бесплатно скачать на английском языке многие книги, которые иначе стоят очень дорого.

Но, как я писал ранее, бОльшая часть книг и курсов по data science - не самые лучшие, и не на столько полезные, как хотелось бы. Поэтому, не имеет смысл с ликованием "О! Халява!" скачивать всё подряд.

Обычный способ отбора хороших книг: сначала ищем книгу на amazon.com, смотрим её рейтинг (число звёзд) и количество оценивших (должно идти на десятки). Я еще ни разу не видел чтобы хорошая книга имела рейтинг 4 звезды или ниж. Все хорошие книги будут иметь выше 4 звёзд, и, если они были изданы не в последний месяц, у них будут уже десятки отзывов. Заметьте, что эта эвристика по рейтингу является необходимой, но не достаточной: немало не самых идеальных книг имеет рейтинг 4.5+ и десятки оценивших, к тому же - конкретная книга может давать материал не идеально вам подходящий (писал об этом ранее). Как правило, на amazon можно посмотреть оглавление книги и пролистать несколько страниц. Далее отобранные книги я уже ищу на b-ok.org. Там есть не все книги, но их львиная часть.

khanacademy.org - математика

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

Однако, в последние годы, конкурирующие курсы на уровне школьной (high school) программы стали появляться и на coursera.org, и там, на мой взгляд, есть более качественные курсы. В том числе на coursera.org есть очень удачные курсы "математика для data science", которые неплохо подбирают самые важные темы для данной профессии. Единственным недостатком coursera.org является множество альтернативных курсов по одной и той же теме, между которыми придётся выбирать, и также плохо организованный каталог/поисковик курсов. Тем не менее, рекомендую инвестировать время в том, чтобы найти лучшее из доступного там.

Преимущества: khan academy - курсы составлены в учебную программу (как в школе) и нет их дублирования, бесплатность.

"Упакованные" программы: Яндекс.Практикум, skillfactory, geekbrains

К сожалению (к счастью?) я не учился на курсах ШАД, Яндекс.Практикум, skillfactory, geekbrains. Поэтому не могу дать о них полностью информированное мнение.

Но из изучения их учебных программ сложилось некоторые ощущения:

Теоретическая часть курсов (фундаментальные знания)

В теоретической части, отдельные курсы Яндекса и других платформ в значительной части пересекаются с теми, которые тот же Яндекс предоставляется на coursera.org, сам или через Высшую Школу Экономики (в ней факультет анализа данных сделан тем же Яндексом). Как писал выше, на coursera.org материалы этих курсов можно просмотреть бесплатно, и там можно скомбинировать, просмотрев каждую тему в том курсе, который её объясняет лучше всего. Риск такого подхода - может быть небольшая каша из кучи отдельных знаний. Но умение ориентироваться в разной информации о методах машинного обучения, и отделять актуальное от неакутального - тоже навык, полезный в дальнейшем саморазвитии. Поэтому, это не является большим минусом.

Субъективно, в ШАД будет больше математической подготовки, на coursera на таком уровне её будет сложно получить. Но, потенциально, частично эта подготовка может быть избыточной.

Яндекс.Практикум, skillfactory, geekbrains

Как указал выше - - теорию можно изучить по бесплатно доступным альтернативам (coursera.org) и книгам.

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

Второй огромный плюс данных программ - наличие бизнес-кейсов. В итоге, самой полезной, вероятно, будет программа с наибольшим разнообразием и их проработанностью (в т.ч. реалистичностью постановки). К сожалению, не могу сказать какая из указанных программ будет лучшей по этому критерию. У кого есть опыт - пожалуйста, напишите. Но, потратив определнные усилия, можно найти альтернативные способы потренироваться на практических задачах: найти релевантные бизнес-кейсы на kaggle и поучаствовать в соревнованиях, попробовать там же изучить как это делали другие, проделать практические задания из разных курсов, доступных на coursera.org.

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

Что я забыл?

Если есть еще какие-то популярные курсы/платформы - пожалуйста, напишите, вместе со своими отзывами. Планирую дополнять и обновлять данную статью, чтобы поддерживать её актуальность.

Мои другие статьи, по самообучению в дата сайенс

Самообучение в Data science, с нуля до Senior за два года

Принципы эффективного самообучения для желающих изучить машинное обучение

Изучение data science c нуля: этапы и вехи

Готов ответить на индивидуальные вопросы / стать ментором

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

Если у вас есть индивидуальные вопросы, на которые не отвечают данные статьи -пишите на почту self.development.mentor в gmail.com, Олег

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

Как отблагодарить автора

Отчасти, я пишу статьи и отвечаю в почте в надежде, что когда вы почувствуете результат - вы за него заплатите, сколько сочтёте нужным. Мне нравится делиться знаниями, но написание подобных статей занимает очень много времени. Поэтому дополнительная мотивация поможет продолжить делиться полезной информацией и идеями.
вариант: перевод на карту Тинькофф (укажите своё имя!): 5213 2477 4720 7719.
И/или напишите мне на почту, о том в чём именно я был полезен, чтобы я смог продолжать в том же духе.

Подробнее..

Курсы и книги для изучения data science c нуля

05.02.2021 20:16:55 | Автор: admin

В статье привожу курсы и книги, которые мне кажутся наиболее оптимальными для изучения машинного обучения/data science c нуля. Стараюсь привести список, который будет наиболее кратким и одновременно даст все знания, необходимые для начала работы на практике, без серьезных пробелов в знаниях.

Disclaimer

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

Предыдущие статьи

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

Рекомендации покрывают не все потенциально необходимые технические навыки. Чтобы составить представление обо всём, что скорее всего будет необходимо освоить - см. Изучение data science c нуля: этапы и вехи

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

Необходимые базовые навыки

Знание основ программирования: Python и SQL

Невозможно заниматься машинным обучением или data science не владея программированием в Python или R (Начинать лучше с Python). Также, подавляющее большинство вакансий в "классическом" машинном обучении (решение бизнес-задач, и работа с изначально числовыми/статистическими данными) потребует знание SQL. Базовые рекомендации по их изучению есть в статье Самообучение в Data science, с нуля до Senior за два года.

Математика

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

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

Основы теории вероятностей неплохо объяснены в специализации: Математика для анализа данных. Необходимый минимум теории вероятностей дан в последнем курсе специализации, который не требует знаний из 2 и 3 курсов. Курсы 2 и 3 дают знания, полезные для понимания градиентного спуска и для изучения нейронных сетей и некоторых других методов машинного обучения. По указанным темам мне очень нравится англоязычная специализация Math for machine learning, от London Imperial College.

Если у вас проблемы с пониманием производных и пределов (школьная программа, самые продвинутые её темы), то, если понимаете английский: крайне рекомендую все курсы от Robert Ghrist. Более интуитивное и наглядное объяснение математики я вообще не встречал. На русском поищите курсы на coursera.org, также неплохие бесплатные курсы по математике есть на stepik.org

Начальный уровень

Книги и статьи, рекомендуемый минимум

Datasmart (на русском) - отличный набор примеров применения популярных методов машинного обучения. Книга хороша тем, что даёт общее представление о сфере data science. По рекомендации друга, я начал изучение сферы машинного дата сайенс именно с этой книги, и считаю это лучшим вариантом для знакомства с областью и возможностями применения данных знаний. Для получения необходимого практического опыта, после знакомства с python, pandas, scikit-learn - полезно примеры из этой книги проделать с помощью этих инструментов (кроме примеров на базе линейного программирования, т.к. оно требует других инструментов и намного реже бывает необходимо).

Статьи на Хабре из курса от сообщества Open Data Science (ODS):

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

В этих статьях тему 8 можно смело пропустить, по теме 2 больше смотрите на seaborn и имейте в виде что синтаксис команд данных библиотек уже устарел (полезно научиться пользоваться официальной документацией, чтобы понять как такие вещи делать на практике).

Дополнительные источники

Data Science for Business: What You Need to Know about Data Mining and Data-Analytic Thinking, by Foster Provost (тут можно скачать) - возможно, лучший обзор всех базовых принципов применения машинного обучения, в виде книги. Отличо дополнит книгу Datasmart, в этом плане. В курсе Воронцова "Введение в машинное обучение" (ниже) также раскрывается большинство тем из этой книги. Я её читал отрывками, как дополнение к этому курсу..

Машинное обучение, Флах - мне показалось хорошим изложением всех методов и их деталей, удобным как дополнение/расширение материалов он-лайн курсов. Как самостоятельное учебное пособие наверное книга будет суховатой.

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

Курсы

Необходимый минимум

"Введение в машинное обучение" от Воронцова - покрывает все базовые методы машинного обучения, и необходимые базовые концепции. Знания и умения применять все представленные методы будет достаточно для выполнения львиной части бизнес-задач, связанных с машинным обучением. Другие курсы начального уровня по машинному обучению можно не смотреть, если вы полностью освоите данный курс. Но после прохождения данного курса явно возникнет потребность отточить навыки Python, Pandas, scikit-learn.

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

Помимо знакомства с теорией методов - необходимо будет научиться применять их на практике, с помощью Python. Для этого можно использовать курсы из специализации Applied DS with Python (эффективными мне кажутся курсы 1 и 3. По темам курсов 2, 4 мне попадались источники лучше)

Альтернативные курсы

Возможно, курс Воронцова потребует сразу слишком много базовых или дополнительных знаний (умения работать с jupyter, pandas). В этом случае, возможно, проще будет сначала пройти следующую комбинацию курсов. Также, в чём-то специализация от Яндекса будет подробнее.

https://stepik.org/course/4852/syllabus

Специализация от Яндекс Машинное обучение и анализ данных (Если записываться на отдельные курсы и в последней форме при записи выбрать вариант "только аудит" то все занятия можно просмотреть бесплатно). В 3 курсе специализации,на первом этапе, можно осваивать только 1 неделю, о кластеризации. Остальные темы сложнее, и могут не пригодиться в первое время; можно просмотреть наискосок. Весь 4 курс, по началу погружения в специалиность, рекомендую просмотреть, чтобы было общее представление, но не обязательно досконально разбираться.. Эти вещи легко забываются, и не всем встречаются на пратике.

Отработка базовых навыков

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

Обязательно следует ознакомиться с документацией

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

pandas, официальная документация - данная библиотека будет вашим основным рабочим инструментов, и документация к ней очень хорошо написана. Функционала в ней намного больше, чем даётся в вводных курсах. Поэтому, имеет смысл ознакомиться с ней по документации.

Python и python standard library - необходимо уметь пользоваться официальной онлайн документацией для нахождения нужных библиотек. функций и методов, необходимых при решении задач. Например, уже на самых ранних этапах вы вероятно встретитись с библиотеками collections и itertools

Следующий шаг - полировка и углубление знаний

В машинном обучении половина успеха заключается в правильной подготовке данных для алгоритом и правильном формулировании решаемой задачи (целевой функции). Также важно научиться проходить все шаги построения моделей машинного обучения в наиболее оптимальной последовательности. Все данные темы отлично раскрыты в курсе, записанными русскими ребятами, но на английском языке: https://www.coursera.org/learn/competitive-data-science. Не стоит обращать внимание на kaggle - приведенные методы актуальны для реальных задач. Пройдя этот курс вы сможете понять комикс ниже

В статьях сообщества ODS (см.выше) дано множество ссылок на дополнительные источники. Рекомендую с ними ознакомиться. Также, через сайт сообщества можно найти видеозаписи многих семинаров, в которых также иногда рассматриваются очень полезные и фундаментальные темы. Например, мне были полезны все выстпления от основателя сообщества, Алексея Натенкина (прогнозирование временных рядов, еще пример)

Разные смежные концепции, которые необходимо знать

Нужно четко понимать разницу между корреляцией и причино-следственной связью. Не понимая этого - нельзя работать дата-сайентистом.

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

Также, с точки зрения постановки целей - поведение людей часто оказывается искажено, о чём рассказывает Goodhart's law. Знание данного эффекта может подсказать направления анализа разных явлений.

Другие полезные книги/ материалы

Куча англоязычных статей по использованию разных библиотеке, в основном очень начального уровня, регулярно публикуется на сайте https://towardsdatascience.com; до 3 статей в месяц можно читать бесплатно.

Statistics Done Wrong .The woefully complete guide byAlex Reinhart - отличная иллюстрация того как не стоит применять математические методы проверки гипотез. Автор рассказывает как даже профессиональные учёные всё время ошибаются в их использовании.

Python Machine Learning, by Sebastian Raschka - хороший набор разных кусков кода, которые могут помочь на начальном этапе. Также у этого автора хорошие статьи по разным темам.

Как находить другие хорошие книги и курсы, отбирать лучшие и наиболее подходящие - писал в предыдущих статьях.

Необходимые технические знания

Git необходимо выучить чтобы работать над каким-либо кодом совместном с другими людьми. Замечательно простая и бесплатня книжка на английском - Ry's Git tutorial. Также много книг доступно бесплатно на официальном сайте git. Отличное визуальное объяснение разных концепций: http://ndpsoftware.com/git-cheatsheet.html

https://www.practicaldatascience.org/ - хороший набор материалов по разным библиотекам и дополнительным инструментам. Фактически, даётся исчерпывающий перечень тем, которые придётся освоить для работы в дата саенс, с вводными материалами по всем темам (секцию Cloud точо стоит читать наискосок, т.к. тут с большой вероятностью придется работать с подобными технологиями других вендоров, которые имеют отличия).


Что я упустил?

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

Готов ответить на индивидуальные вопросы / стать ментором

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

Если у вас есть индивидуальные вопросы, на которые не отвечают мои статьи -пишите на почту self.development.mentor в gmail.com, Олег

Некоторые поняли, что им лучше уйти в другую сферу (программирование, биг дата), некоторым смог скорректировать учебный/карьерный план под индивидуальные потребности, некоторым я посоветовал тех, кто им сможет лучше помочь, а кого-то спас (?) от неэффективной траты времени на тупикове проекты.

И если мои статьи для вас полезны - на будущие статьи меня также можно мотивировать материально, под этой статьей должна быть кнопка "задонатить" для этих целей.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru