1 of 31

"Подготовка научной публикации: рекомендации преподавателей

и советы выпускников курса"

2 of 31

Трансформация

курсовой работы в статью:

на что обратить внимание

3 of 31

Что мы обсудим сегодня?

1. Вопросы, которые непосредственно касаются публикации

2. Оформление кодовой части, воспроизводимость

3. Визуальное оформление графиков и таблиц

4 of 31

Вопросы, которые

непосредственно касаются

публикации

5 of 31

1. Определитесь с журналом / конференцией

Как выбрать?

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

Что это дает?

  • понимание сроков и объемов
  • оценка своих возможностей (сможете ли вы уложиться в сроки)
  • узнаете требования по оформлению текста, возможно, появится шаблон форматирования – можно будет сразу делать в нем

6 of 31

2. Определитесь, в чем новизна вашей работы

Это может быть:

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

Постарайтесь, чтобы в статье четко и ясно доносилась основная мысль:

“Что было сделано и как был достигнут данный результат”

7 of 31

3. Определитесь со структурой работы

Обычно это:

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

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

8 of 31

4. Задумайтесь об интерпретации предсказаний

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

Более глубокое понимание работы модели может повысить шансы на публикацию

  • SHAP / LIME
  • Grad-CAM
  • Анализ карт внимания в трансформерах

9 of 31

5. Делайте статью компактной

Перенесите в appendix / supplementary

  • дополнительные выкладки формул
  • дополнительные графики, позволяющие глубже оценить результаты
  • результаты исследования интерпретируемости

10 of 31

6. Не забудьте указать благодарности

Если вы являлись стипендиатом, укажите:

"Исследование выполнено при финансовой поддержке Некоммерческого Фонда развития науки и образования "Интеллект"

(Non-commercial Foundation for the Advancement of Science and Education INTELLECT)

Если есть конфликт интересов (грант другого фонда и пр.) или вы не являлись стипендиатом, следует указать:

"Исследование выполнено при поддержке Некоммерческого Фонда развития науки

и образования "Интеллект"

(Non-commercial Foundation for the Advancement of Science and Education INTELLECT).

11 of 31

Оформление кодовой части,

воспроизводимость

12 of 31

1. Позаботьтесь о воспроизводимости

Создайте открытый репозиторий на GitHub, который будет сопровождать вашу работу.

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

Воспроизводимость:

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

свои эксперименты и писать чистый код

13 of 31

2. Тонкости работы с Jupyter-блокнотами

Jupyter-блокноты – отличный инструмент для проведения экспериментов. Они позволяют интерактивно запускать код и тут же выводить результаты.

Однако есть некоторые моменты, на которые стоит обратить внимание:

  • код функций и классов, когда он будет отлажен, лучше вынести в .py-скрипт, а в блокноте импортировать нужные классы и функции – так блокнот не будет перегруженным
  • старайтесь в итоге делать так, чтобы блокнот запускался в режиме “Run All”, и не приходилось перескакивать по ячейкам вверх-вниз
  • эксперименты с разными моделями / разными наборами данных – лучше разнести в разные блокноты, а общий код оформить как функции / классы и вынести в .py-скрипт

14 of 31

2. Тонкости работы с Jupyter-блокнотами

Моменты, на которые стоит обратить внимание:

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

15 of 31

3. Для отслеживания diff в Jupyter-блокнотах на GitHub

пользуйтесь ReviewNB

16 of 31

4. Google Colab тоже можно синхронизировать с GitHub

Блокноты с GitHub можно открывать в Colab, и делать оттуда commit-ы, даже в приватный репозиторий

Инструкции:

Как открыть блокнот с GitHub в Colab и как оттуда делать коммиты

Как выгрузить файлы из Colab в GitHub

17 of 31

5. Общие рекомендации по работе с кодом

  • При запуске долгих расчетов – делайте промежуточные “чекпоинты” моделей и результатов расчета
  • Комментируйте свой код!
  • Перед опубликованием, воспользуйтесь средствами для приведения кода к стандарту PEP8:

black

autopep8

yapf

18 of 31

6. Фиксируйте случайные состояния

Один из самых важных аспектов воспроизводимости, это фиксация случайного зерна (random seed)

В идеале, ваш код должен выдавать ровно те же результаты (числа, графики), что и в статье,

от запуска к запуску

О воспроизводимости в PyTorch

О воспроизводимости в Sklearn

19 of 31

7. Пишите лог происходящих операций

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

Также хорошим правилом будет писать лог не только в консоль

(на экран), а также в файл

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

и времени)

20 of 31

8. Напишите, как пользоваться вашим кодом

  • Не заставляйте людей догадываться, как запустить ваш код. Дайте им шанс воспроизвести ваши результаты
  • Напишите README, в котором опишите, в каком файле что лежит, как запустить код, какого ожидать результата, каких ожидать проблем
  • Позаботьтесь об окружении. Выведите в requirements.txt список библиотек, используемых в вашем проекте с версиями.

Тут в помощь pipreqs – позволяет сгенерировать requirements.txt на основе библиотек, использованных в конкретном проекте

21 of 31

9. У меня долгий расчет и много данных. Что делать?

Часто результатом работы является обученная и сохраненная модель, но:

  • она может учиться очень долго
  • обучающие данные нельзя выложить на GitHub (они закрытые или они много весят)

Выход: обеспечьте воспроизводимость инференса

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

Пример: Colab-блокнот AlphaFold

22 of 31

Визуальное оформление

графиков и таблиц

23 of 31

1. Общие соображения

  • Форматирование рисунков и таблиц часто регламентируется шаблоном статьи
  • Если такого нет, можно придерживаться гайдлайнов Springer, APA
  • При необходимости, выделяйте акцентные места в таблицах и на графиках
  • Графики, генерируемые кодом, сохраняйте скриншотом кодом с указанием достаточного DPI

24 of 31

2. Внимание к деталям

  • Следует подписывать оси, добавлять легенду, при необходимости – сетку
  • Используйте цветовые палитры, разработанные с учетом людей с ограничениями зрения (colorblind friendly)
  • Содержимое графика должно иметь хорошую контрастность по отношению к фону, не сливаться с ним
  • Если предполагается печать, которая может оказываться черно-белой, цветовую дифференциацию следует заменить на штриховую (hatch)

25 of 31

3. Добавьте рисунок с архитектурой модели / пайплайном

Вместо тысячи слов

26 of 31

3. Добавьте рисунок с архитектурой модели / пайплайном

27 of 31

После написания черновика (preprint)

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

Получите рецензию “на берегу”.

  • Вы можете опубликовать препринт на ResearchGate или arXiv

28 of 31

Примеры

от победителей

конкурса публикаций

29 of 31

A. M. Romashkina, V. B. Novikov, T. V. Murzina;

Collective lattice and plasmonic resonances

in the enhancement of circular dichroism

in disk–rod metasurface.

Journal of Applied Physics 28 January 2023;

133 (4): 043103. https://doi.org/10.1063/5.0124798

https://github.com/anromashkina/FC-NN_NanoDesign

30 of 31

Asif Khan, Alexander I. Cowen-Rivers, Antoine Grosnit, Derrick-Goh-Xin Deik, Philippe A. Robert, Victor Greiff, Eva Smorodina, Puneet Rawat, Rahmad Akbar, Kamil Dreczkowski, Rasul Tutunov, Dany Bou-Ammar, Jun Wang, Amos Storkey, Haitham Bou-Ammar,

Toward real-world automated antibody design with combinatorial Bayesian optimization, Cell Reports Methods, Volume 3, Issue 1, 2023, 100374, ISSN 2667-2375, https://doi.org/10.1016/j.crmeth.2022.100374.

https://github.com/huawei-noah/HEBO/tree/master/AntBO

31 of 31

Спасибо!