image

Сайт Летней школы Wolfram

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

В этом году Летнюю школу Wolfram посетил Андрей Кротких. Его рассказ об этом вы можете прочесть ниже.
_______________________________________________________________________________

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

В самой школе существует 3 направления (Tracks), каждое из которых нацелено на конкретную цель: Education Track — внедрение Wolfram Language (WL) в процесс обучения студентов/учеников, Science Track — использование WL в научных работах, Technology & Innovation Track — использование WL в каких-то практических целях, например, анализ BIG Data или Machine Learning. Подробнее вы можете посмотреть о проектах здесь: education.wolfram.com/summer/school/alumni

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

Для получения визы я запросил письмо подтверждения моего участия в школе. Значительно облегчило разговор с консулом США. Виза требуется B1/B2. Организационный комитет школы оперативно предоставит всю необходимую информацию о типе визы, что указывать в различных полях формы на получение визы. В самом начале необходимо заполнить форму DS160. Заплатить пошлину на получение визы (уплата пошлины не гарантирует её получение). Затем приехать в консульство в одном из 4 городов: Москва/Санкт-Петербург/Екатеринбург/Владивосток в назначенное время.

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

В Bentley атмосфера очень располагающая к работе. Есть возможности активного отдыха. График лекций/обеденных перерывов был очень хорошо составлен, не возникало перегрузки. Проживание и питание очень хорошее, никаких претензий не возникало. Лекции ведут инструктора школы. Ведут максимально понятно, отвечают на все вопросы. В ходе всей школы можно общаться со всеми инструкторами, что очень хорошо. Каждый инструктор специализируется на конкретной теме: Image Processing, Machine Learning, Neural Networks и т.д. Почти всегда инструкторы и студенты собирались в одной аудитории в Community Centre. Большой зал с большим числом маленьких комнат для индивидуальных занятий. Природа очень красивая в университете. Сам университет находится в пригороде Бостона, в мини городе Волтэме. Волтэм самый зелёный город рядом с Бостоном, поэтому в выходные можно отлично провести время сходив в местный парк на горе или просто прогуляться по магазинам.

К каждому студенту приписывался инструктор, который почти 24/7 готов был помогать, в моём случае это был Xavier Roy. За каждым инструктором закреплялось обычно 4-5 студентов. На первой неделе обучения необходимо было выбрать тему проекта. И в конкретный день первой недели вы с инструктором встречаетесь со Стивеном Вольфрамом для обсуждения вашего проекта. Впечатления от общения со Стивеном остаются неизгладимые, редко есть возможность поговорить с человеком такого масштаба. Советы максимально полезные и идеи потрясающие. Проект необходимо выполнить за 2.5 недели школы. Остальные 0.5 недели это подготовка к презентации проекта и постерная сессия. На постерной сессии Стивен с каждым студентом обсуждает будущее проекта, даёт советы. Затем происходит церемония выпуска. В моём случае Стивен не успел обойти всех студентов за первую постерную сессию, поэтому сделали дополнительную после церемонии. На следующий день прощальный обед и все разъезжаются.

Бостон:
Один из самых зелёных городов США. Я в нём был в сумме 4 дня. За эти дни успел познакомиться чуть чуть с американскими правилами и т.п. Успел купить переходник с европейской розетки в американскую. Обязательно стоит побывать в MIT и музее науки. Они находятся рядом друг с другом. Отличное времяпрепровождение для выходных дней, либо до или после школы. В самом Волтэме, где находится Бентли, стоит сходить посмотреть на офис Boston Dynamics и Hill Park. Находятся примерно в часе пешей ходьбы от университета. Местность очень тихая и спокойная.

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

Итоги: я приобрёл совершенно новый опыт, понял к чему нужно стремиться дальше. Школа очень хорошая, недостатки если и были, то настолько мелкие, что незаметны. Ехать можно с любым уровнем владения WL. Ссылка на проект в Wolfram Community:
community.wolfram.com/groups/-/m/t/1136114

Фотографии:

?Местная достопримечательность, очень большое число кроликов/бурундуков и прочей живности. Что очень необычно. Совершенно никого не боятся.



Зал постерной секции:



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



Эмблема Бентли?:



По вопросам о технологиях Wolfram пишите на info-russia@wolfram.com
Поделиться с друзьями
-->

Комментарии (6)


  1. ilyaplot
    19.07.2017 17:53
    +3

    выдаёт $Failed

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

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


    1. AndreyKrotkih
      19.07.2017 18:42
      +2

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


  1. Arastas
    19.07.2017 18:10
    +1

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


    1. AndreyKrotkih
      19.07.2017 18:46
      +3

      Добрый день.
      По поводу описания проекта, я согласен, нам предоставили информацию о том, как их оформить и где, за 4-5 часов до церемонии выпуска. Поэтому действительно очень сумбурно получилось.
      По поводу небольшого обзора проектов, проблема в том, что я не считаю себя специалистом во всех областях, которые были представлены, поэтому я могу просто быть некомпетентным в обзоре. В основном работы были посвящены машинному обучению и созданию нейронных сетей. Были работы посвящённые обработке и анализу музыки, была работа связанная с нахождением минимума Гамильтониана, восстановление структуры графов по их изображению и т.д. Но если вам интересно, вы можете найти все проекты здесь: ссылка на WCommunity


  1. Reeze
    19.07.2017 19:58
    +3

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

    Сейчас получилось так:

    Привет, Хабр! Я получил визу в США для своего проекта! Я уже в США, люди замечательные! Школа очень хорошая здесь много кроликов! Ой, уже пора домой. Я приобрёл совершенно новый опыт, понял к чему нужно стремиться дальше, а книжки, очень жалко, почему-то не пропустила таможня.


    1. AndreyKrotkih
      19.07.2017 21:25
      +2

      Добрый день. Спасибо за обоснованную критику.

      Подробно не получилось, признаю, если бы была возможность редактировать исходный пост, я бы добавил всю информацию, которая необходима. Писал в первый раз, поэтому заранее не знал, что точно нужно подчеркнуть и добавить. Но вкратце расскажу:
      Первичная идея проекта заключалась в создании чего-то вроде парсера, который по конструкции входного текста его корректирует. Этот вариант я прорабатывал около недели. Основная проблема заключалась в том, что каждый раз я мог придумать новые входные данные, которые этот парсер не мог обработать. Поэтому я отказался от этой идеи и начал прорабатывать второй вариант: разработать более общий алгоритм, который не привязан к самому входному тексту, а анализирует результат его интерпретации. Что имеется ввиду:
      В Wolfram Language (WL) есть функция ToExpression[...], которая переводит текст в выражение на WL и вычисляет его. Например: ToExpression[«2+2»] выдаст нам 4. Сначала проводится анализ на элементарные ошибки: отсутствие открывающих и закрывающих видов скобок и отсутствие кавычек. Если же ошибка заключается в том, что отсутствующий символ отличен от скобки или кавычки, то мы пытаемся найти ему место и посмотреть результат вычисления. В WL неудачные вычисления или выражения, которые не были вычислены выдают нам либо $Failed, либо само выражение. Если мы попытаемся вычислить Net[f,x,4] мы получим Net[f,x,4], если вычислим Nest[f,x,4], то получим следующее: f[f[f[f[x]]]]. На сравнении исправленного и результата исправленного мы осуществляем выбор «корректных» результатов. Это было реализовано с помощью нескольких «фильтров». Например, результат при вычислении скорректированного выражения не должен содержать Null, не знаю как точно выразиться, дальность изменения строки входных данных должна быть больше 1 в сравнении с результатом вычисления (В WL функция EditDistance), результат не должен вызывать $Failed при вычислении. Было еще несколько фильтров, но они связаны со спецификой обработки текста. В результате такой фильтрации мы получаем некоторый набор возможных корректировок. По сравнению с первым вариантом, это обеспечивает более надёжную работу и быстродействие. Вообще, когда я «почти» реализовал систему парсера на основе строковых паттернов, мне сказали, что она получилась бы абсолютно неприменимой к реалиям. Почему, потому что чем сложнее структура паттерна, тем больше по времени занимает поиск этого паттерна в этой строке. Если обработка текста паттерном заняла бы около минуты, то второй вариант обрабатывает за доли секунд.
      Был ещё третий вариант. Придумали структуру нейросети и создали тренировочный сет для неё с помощью встроенных в WL инструментов. Было введено в Wolfram Mathematica V11. Столкнулись с проблемой, что сеть училась не шаблону структур кода, а, по сути, просто запоминала правильные ответы, поэтому решили перестроить тренировочный сет. Для тренировки использовались встроенные примеры из документации. Но на это буквально не хватило времени, поэтому я предоставил только прототип этой сети.

      Итог: остановились на втором варианте реализации. Он был опробован на достаточно объемном коде, как пример брали код случайного приложения из CDF Demonstrations. Удаляли случайный символ, который обращал вычисление кода в ошибку или вообще не работал. И прогоняли алгоритм на нём. Работает очень быстро. Проблема возникла в другом, чем больше код, тем больше возможных путей исправления этого кода, только если исправление не однозначное, как например квадратная скобка или фигурная скобка. Алгоритм правильно обрабатывает операторные формы записи функций в WL, чему я был лично удивлён.

      Минусы: алгоритм не может отследить отсутствие закрывающего символа чистой функции & и пропавшую запятую в списках аргументов. Это связано с тем, что мы заранее не знаем, что хотел ввести пользователь программы. На вышеприведённом примере с Nest. Если мы введём следующую строку: «Nest[fx,4]» мы получим ошибку и уведомление о том, что какой-то символ пропущен, но вариантов коррекции предложено не будет. Как это реализовать, я знаю, но инструктор посоветовал на этом пока что не заострять внимание.

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