Диплом. Часть 1. Два года подготовки
Этот пост будет началом серии, где я буду документировать процесс написания диплома. Начнем с описания того, чем я был занят два последних года, а закончим (надюесь!) моей довольной фотографией с дипломом в руках. Для того, чтобы начать, надо понять, где я нахожусь сейчас, что уже сделано и что еще предстоит сделать. Я заканчиваю 6 курс МГТУ имени Баумана этим летом, то есть примерно через 4-5 месяцев. Где-то в июне будет происходить защита диплома. Тема моего диплома - разработка системы управления знаниями в области технической защиты информации. На удивление она не состоит из 10 предложений и не занимает 5 строчек, а раньше я думал, что темы диплома выглядят именно так! Сейчас расскажу, как я пришел именно к такой теме и вообще работе в этом направлении.
4 курс
На нашей кафедре существуют научно-исследовательские работы студента - каждый семестр, начиная с восьмого (сейчас идёт последний - двенадцатый) необходимо проводить какое-либо научное исследование, которое затем надо будет защитить - своеобразная подготовка к диплому, во время которой, по идее, можно как раз разработать большую его часть. Именно поэтому первый раз о теме диплома у нас обычно задумываются на 4 курсе, то есть для меня - два с половиной года назад. Однако к началу 4 курса, когда мне впервые пришлось думать о будущем дипломе и об областях моего интереса, чтобы выбрать руководителя и тему исследований, сначала я свернул "не туда" - моей первой темой научного исследования была попытка обмануть один из самых популярных механизмов распознавания лиц с помощью анализа его реакции на различные маски, грим, одежду, макияж и аксессуары. Биометрия тогда показалась мне перспективной областью в которой мне хотелось разобраться. Тема была интересной, но вот навыков по работе с алгоритмами распознавания мне критически не хватало - первые 9 месяцев "научных исследований" ушли у меня на то, чтобы подобрать материал и просто запустить программу - там требовалась установка нескольких пакетов для работы подобных алгоритмов, которые никак не могли обосноваться на моём компьютере. В итоге во время курса лабораторных работ по машинному обучению я узнал про существование Google Colab и смог запустить программу внутри него, что было для меня большим счастьем. На удивление оказалось, что просто запустить программу недостаточно для того, чтобы найти в ней уязвимые места, которые позволят её обмануть (кто бы мог подумать!). Тогда я начал пробовать различные способы заставить алгоритм ошибиться при распознавании лица - то есть я должен был загрузить картинку с фотографией лица, а он не должен был его на ней обнаружить. В итоге в какой-то момент я пришел к загрузке вот этой фотографии, найденной по запросу "мужчина в белой рубашке":

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

Пожалуй, это меня и подкосило. Я понял, что алгоритм явно умнее меня, и ни о каком использовании одежды для обмана распознавания лица речи не идет - он распознает лицо даже там, где его большей части в принципе нет! Не знаю, почему это произошло, может быть эта фотография была в базе, на которой обучался алгоритм, может быть при распознавании он учитывал всю голову, а не только лицо, может быть я в принципе не понимал как всё это работает, но к тому времени я уже охладел к этой теме и мотивации продолжать исследования не было, потому что я уже увлекся базами знаний. Я очень долго боялся признаться научному руководителю что у меня практически ничего не получается и что я больше не хочу этим заниматься, однако он отнесся с большим спокойствием и пониманием и сказал, что ничего страшного в этом нет.
5-6 курс
Два последующих семестра были посвящены оформлению идеи формирования базы знаний. Я увидел проблему в том, что многие научные исследования, проводимые студентами, никак не сохранялись на кафедре после их ухода - по сути нам приходилось заново изучать все с нуля, проводя измерения и исследования, которые точно были проведены до нас. Базы знаний и управление знаниями в 2015 году получили серию ГОСТов, но несмотря на это тема не сильно популярная, хотя по-моему очень интересная и перспективная. Как я писал в посте "Как связанные заметки могут изменить мир", мне кажется что очень интересным было бы использовать современный подход к персональному управлению знаниями применительно к управлению знаниями корпоративными. В принципе, этот пост - как раз и есть часть моих идей, которые я описывал в ходе своих работ по управлению знаниями. Я в это время как раз изучал работу со связанными заметками, Notion и Obsidian и подумал, что с помощью таких инструментов можно было бы создать как минимум базу результатов измерений, а как максимум - базу актуальных исследований, в которой видны результаты проведенных исследований и пробелы, которые можно заполнить с помощью будущих работ, вместо того чтобы повторять уже пройденное. Для решения что и как делать я построил майндкарту, кусок которой можно посмотреть ниже:

В результате, как можно заметить по майндкарте, я пришел к тому, чтобы использовать git репозиторий. Параллельно с этим я выбрал Obsidian как программу для обработки файлов, так как мне нравились графы и простота создания прямых и обратных ссылок. Я понемногу начал собирать информацию в демонстрационную базу знаний, чтобы показать, как в результате может выглядеть работающая база. Тогда я еще никаким образом не использовал git, но понимал, что придётся. Ближе к началу этого года я добавил еще немного информации в демонстрационную базу, вот например как выглядит попытка увязать множество существующих определений слова "Информация":

А вот так выглядит общий граф демонстрационной базы:

Для того чтобы обеспечить доступ к этой базе онлайн я использовал инструмент от разработчиков Obsidian - Obsidian Publish. Это позволило одновременно продемонстрировать весь функционал работы Obsidian и не требовать установки для этого какого-либо дополнительного ПО. Базу я выложил на домене Obsidian Publish (тут) , хотя после последней презентации не стал продлять публикацию - стоимость Obsidian Publish 10 долларов в месяц, а база всё равно еще находится в разработке, так что этот сайт вполне может быть недоступен. Тем не менее, я считаю, что информация, которая использована в базе знаний должна быть доступна, и иметь возможность редактирования в свободном доступе, поэтому она была выгружена на GitHub (тут). Получается на данный момент процесс редактирования выглядит так:
Кто угодно может пользоваться сайтом на Obsidian Publish и получить информацию из базы
Кто угодно может скачать все файлы базы для работы с GitHub, а затем внести изменения и предложить их для добавления в базу
После принятия изменений в репозиторий данные выгружаются через Obsidian Publish на сайт - информация добавлена
Итог
Я написал этот пост и вообще начал серию потому что мне самому, будучи на 4 курсе, хотелось бы прочитать что-то подобное. Хотелось бы узнать насколько важно определиться с конкретной темой и хватит ли мне времени на продумывание чего-то необычного. Если это ваш случай, то, как видите, я менял за время работы не только темы, но и полностью области работы, а дорабатывать то, что выбрал для диплома, продолжаю до сих пор, так что ничего страшного в этом нет!
Что дальше
Очевидно, что дальше можно и нужно работать над наполнением базы, чтобы она лучше демонстрировала все свои возможности и преимущества, а также чтобы выявить недостатки и неточности в её организации, которые вскроются только спустя какое-то количество записей. Еще можно продолжить думать над другими вариантами представления базы и даже над другими программами - например, можно подружить базу с open-source обработчиком Markdown-файлов Zettlr. Тем не менее конкретное направление я и сам пока не определил, так что заранее сказать не могу!
Вот пожалуй и всё сжатое описание работы, предшествовавшей моему диплому. Остается еще около 4 месяцев, посмотрим, что из этого выйдет!