Category: литература

Category was added automatically. Read all entries about "литература".

Бритоголовый и С1-97

Mathematics for Machine Learning

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

https://mml-book.github.io/

Где-то треть книги – изложение стандартного курса линейной алгебры, еще немного – многомерный анализ (всякие там якобианы и тому подобные штуки), основы теории вероятностей и методов оптимизации. Оставшаяся треть – описание “классических” подходов к машинному обучению, заканчивающееся описанием метода опорных векторов (SVM). Впечатление – довольно странное. Для начала, предполагается, что читатель владеет понятиями вроде “производная” и “интеграл”, а “вектор” для него – это пара чисел, а не отрезок со стрелочкой на конце. Как утверждается в предисловии, это примерно программа high school – но у нас ВУЗы школам в изучении этих вещей не доверяют (и правильно делают!), поэтому вузовский курс математики начинается с основ анализа.

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

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

Вердикт – под видом датасаенса нам подсовывают замшелую линейную алгебру, протухший товар второго сорта! Заклеймить авторов позором за полное непонимание “практик будущего”! (Это я тут прочитал фейсбучную запись проректора ДВФУ Земцова и пытаюсь несмешно шутить)

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Про плесень и журналистов

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

Короче, поглядел я на творчество этого, так сказать, “журналиста” – это несложно:

http://digimedia.ru/author/admin/

Особо не смотрите на сайт с криво натянутым вордпрессовским шаблоном (55$, чтобы купить шаблон, нашли – а сумму чуть побольше, чтобы перевести на русский Read More… и Comments – нет) – лучше попробуйте отнести материалы сайта к какому-нибудь из жанров, перечисленных хотя бы в книжке Тертычного:

http://evartist.narod.ru/text2/01.htm

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Неновый интернет

Прочитал тут заметочку писателя Горчева про “Новый Интернет” (написано в 2004 году):

http://gorchev.lib.ru/txt/by1/newinternet.shtml

Довольно забавно, что описанное очень напоминает ФИДО или “немассовый” интернет (”у нас” это – где-то до 2000 года, “у них” – пожалуй, до середины 90-х). Беда того ФИДО или интернета, конечно, в том, что населен он был в основном “компьютерщиками” – но ровно поэтому и получалось, что “все всех знают”, как в большой деревне. Ну а как только в интернете заводятся и начинают что-то писать писатели – хана тому интернету.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Программирование: теоремы и задачи

Вот кстати, хочется рассказать о неплохой книжке по алгоритмам и структурам данных – “Программирование: теоремы и задачи” А. Х. Шеня (свободно распространяется в электронном виде, на бумаге несколько раз издавалась МЦНМО). Вот все знают книжки, скажем, Кнута (но мало кто их читал), Кормена (тут ситуация немного получше), Дасгупты или Скиены – а я хочу сказать, что эта брошюрка (320 страниц, на фоне среднего “айтишного” учебника в тысячу-полторы – это ни о чем) по глубине изложенного материала не уступает как минимум двум последним.

Особенность книжки – в изложении материала. Это не столько учебник/справочник, сколько задачник, построенный по логике “системы задач на листочках”. Эта система применяется, скажем, во многих московских матшколах и состоит примерно в следующем – на каждую тему выдается список задач (”листочек” – обычно они помещаются на лист формата A4), часть задач может иметь и самостоятельную ценность (как полноценные теоремы; иногда содержательные утверждения разбиваются на несколько подряд идущих задач). Сложность задач возрастает, для перехода к последующим листочкам надо либо решить текущий целиком, либо решить большую часть задач (в этом случае листочки могут содержать и нерешаемые задачи). Часть задач может разбираться “у доски” (прежде всего что-то основополагающее), остальные предназначены для самостоятельного решения.

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

PS Издание 90-х годов сопровождалось совершенно шикарным текстом – “Не покупайте эту книгу!” (кликабельно):

dont-buy-this-book

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Про наукообразие

Довелось посмотреть тут на немецкий университетский учебник по базам данных – “Datenbanksysteme: Eine Einführung” за авторством Prof. Dr. Alfons Kemper и Dr. André Eickler (раз уж авторы упомянуты на титульной странице со всеми своими регалиями – не буду их лишний раз обижать). Честно признаюсь – я это все изучал ровно один раз в жизни, по методичке М. В. Кумскова и одной из многочисленных книжек Мартина Грабера (этот товарищ необычайно плодовит, как автор – но секрет состоит в том, что все его “Введение в SQL”, “Понимание SQL”, “SQL для простых смертных” и так далее в основном повторяют друг друга – в некоторых версиях “обогащаясь”, скажем, описанием ER-модели), и особо с “систематическим” изложением теории реляционных баз данных никогда не сталкивался – но по-моему, это какой-то ужас:

2nf-deutch

Я специально решил посмотреть, как определяется вторая нормальная форма, скажем, в книжке Дейта (признаюсь, до сегодняшнего дня даже не открывал ее) – и тоже не нашел там вот всей этой “псевдоматематики”.

Возникает вопрос – зачем? Или несолидно писать перед именем и фамилией Prof. Dr., не употребляя на каждой странице книги по два десятка значков “принадлежит”, “для любого” и всего прочего “из высшей математики”?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Про новую книгу Харари

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Game Engine Black Books

С удовольствием прочитал две книжки с подробными описаниями процесса разработки и технических решений Wolfenstein 3D и Doom:

http://fabiensanglard.net/gebb/index.html

Сочетание PC-шного и не очень (в частности, довольно подробно описывается NeXT, на котором разрабатывался Doom) “железа”, разнообразных хитрых приемов для рендеринга графики, оригинальных алгоритмических решений и просто программистских трюков – это очень круто, рекомендую. Для полного удовольствия от книжек крайне желательно знать Си и иметь представление о том, что рассказывается в стандартном курсе по “алгоритмам” – иначе такие штуки, как BSP, просто пройдут мимо.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Адитья Бхаргава, Грокаем алгоритмы

Мельком просмотрел тут одну детскую книжку по “алгоритмам”.

bhargava-algorithms

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

Возможно, это и неплохо для детской книги – даже очень талантливый и старательный семи-восьмиклассник вряд ли будет настолько усидчив, чтобы самостоятельно разрисовать что-то вроде диаграммы стековых вызовов для несложной рекурсивной функции, а здесь она приведена в готовом виде – но есть несколько “сюжетов”, которые при таком подходе очень сильно “повисают в воздухе”. Особенно почему-то досталось O-нотации, которая здесь изложена в виде “как ее понимает средний программист” (а уж подсчет сложности тривиальной сортировки – O(n2) – во второй главе – это просто песня!).

Кратенькое резюме такое – неплохо для семиклассника, читающего под одеялом с фонариком журнал Ксакеп, для взрослого человека скорее бесполезно, в качестве справочника заменяется любым cheatsheet-ом вроде такого:

https://algs4.cs.princeton.edu/cheatsheet/

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

А вот посоветуйте, что почитать

В одном девайсе на микроконтроллере с ядром Cortex-M4 (без F) понадобилось сделать цифровой фильтр для сигнала с АЦП. Фигня вопрос! – подумал я – ведь под рукой есть библиотека CMSIS-DSP, в которой присутствует все необходимое для БИХ-фильтров, работающих с числами с фиксированной запятой. Быстренько закинул параметры фильтра в Iowa Hills IIR Filter Designer, пересчитал коэффициенты получившегося фильтра Баттерворта в q31, погонял это вот все на тестовых сигналах – а вот с реальными вышел неприятный конфуз – даже “почти стабильный” сигнал на выходе фильтра непристойно колбасило.

raskolbas

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

Признаюсь сразу – я лошара, и первым же делом стоило проверить, что действительно приходит с АЦП – но по опыту использования фильтров из CMSIS-DSP мне казалось, что такой фигни быть не должно. Начал искать проблемы в “железе”, и мог бы зайти по этому пути далеко, пока случайно не отключил один из фильтров (ФВЧ с частотой среза 1 Гц при частоте дискретизации около килогерца). И что бы вы думали? Сигнал волшебным образом пришел в норму!

Оказывается, что фильтры с переменными формата q31 при таких соотношениях между частотой среза и частотой дискретизации численно неустойчивы, и надо использовать q63 – в документации CMSIS-DSP это отражено примерно такими словами:

These filters are particularly useful when implementing filters in which the singularities are close to the unit circle. This is common for low pass or high pass filters with very low cutoff frequencies.

Но что значит “close”, что значит “very low”? Как понять, когда 16- или 32-битных коэффициентов не хватает? К сожалению, я как-то не припомню литературы по всяким там численным методам, где подробно разбирались бы вот такие вопросы, связанные с вычислительной устойчивостью. Может, кто-нибудь что-то подскажет?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Контекстная реклама

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).