Последний день оффлайна, лыжи и размышления о профессионализме

Запись сделана 8 января

Вот и все, подошел к концу последний день жизни в полуоффлайновом режиме. Это вызывает у меня очень противоречивые чувства, которые во многом напоминают те, которые я испытывал при окончании каникул в студенческие времена: вроде бы с одной стороны, впереди много интересного, с другой — будет немало рутины или ненужного и неприятного, а возможность жить легко и непринужденно, без мыслей о всяких «надо» или возможных неприятностях заканчивается.
Сегодняшний день прошел куда-то мимо. Я проснулся около 13:30. Отец в это время собирался идти на лыжах, и предложил мне с ним. Я согласился, и мы пошли. Съездили на этот раз к Ольнянному пруду (на современных картах он стал обозначаться как Олений), оттуда — выехали на поле возле Серебрянки и сделали круг по нему, затем углубились в лес, выехали к мосту в самом центре парка, и оттуда отправились домой. Проехали больше обычного — почти 9 км. В результате когда пришли домой, я чувствовал себя таким уставшим, что снова заснул, а когда проснулся, обнаружил, что уже почти 19 часов.
Остаток дня я потратил на то, что проходил последнюю часть курса по анализу данных на Cuorsera. Там как раз речь шла про нейросети, но в основном очень бегло рассказывались основы и общие понятия. Пожалуй, единственное, что было стоящего — это примеры работы с TensorFlow и Keras. Я хотя бы начал понимать, что вообще собой TensorFlow представляет, и как с ним работать. Вообще, конечно же, хотелось бы курс, где берется какой-то достаточно сложный проект, а не обычный аналог "Hello World" на цифрах MINST с готовым набором данных, и на его примере рассказывается, как применять тот же TensorFlow.
Еще высказывание одного из ведущих курса заставило задуматься о той же проблеме, которую я поднимал где-то около года назад: а что есть твердое знание и профессионализм. Суть высказывания была примерно такая: «метод error backpropagation есть в любом frameworkе, поэтому тут мы его разбирать не будем». Для тех, кто не в теме, поясню, что этот метод — один из основных при обучении нейронных сетей, но тут предполагается, что мы не будем вникать в его суть. В принципе, с использованием frameworks действительно вполне можно сделать что-то работающее без понимания этого метода, так как он применяется где-то внутри их функций. С другой, в мои студенческие времена учили еще по старой системе, где предполагалось, что для того, чтобы реально вникнуть во что-то, нужно обязательно попробовать это самостоятельно. Так, например, изучая методы оптимизации, мы сами, без всяких готовых frameworkов, их реализовывали с нуля, чтобы лучше проникнуться, усвоить их суть. И вообще, настоящий инженер всегда должен видеть как минимум на пару уровней абстракции выше и ниже решаемой задачи, а лучше — вообще всю систему целостно. Тогда как сейчас учат смотреть только на том уровне, который нужен для ее решения, и все, не заглядывая вглубь. Кстати, ирония судьбы: метод градиентного спуска, который сейчас является базой для большинства методов ML, был в том самом злополучном курсовом, при сдаче которго произошла Декабрьская Трагедия 2001 года, и я лишился Красного Диплома. С третьей стороны, очевидно, что вряд ли я с наскока реализую тот же error backpropagation лучше, чем это сделано в каком-нибудь SKLearn или Keras. В общем, вопрос по-прежнему остается без ответа.