Хабрахабр

[Перевод] Врываемся в 2018 год с очередным большим релизом: выпуск версии 11.3 языка Wolfram Language и Mathematica

3 of the Wolfram Language & Mathematica".
Перевод блог-поста Стивена Вольфрама (Stephen Wolfram) "Roaring into 2018 with Another Big Release: Launching Version 11.

Содержание

— Поток выпуска версий
— Что нового?
— Блокчейн
— Системное моделирование
— Новое в ноутбуках
— Документация рабочего процесса
— Инструменты для презентаций
— Wolfram Чат
— Удобства языка
— Обновления визуализации
— Чтение текста
— Вычисления по лицам
— Нейронные сети
— Асимптотический анализ
— «Элементарная» алгебра
— Доказательства
— Растущая база знаний
— Сообщения и почта
— Операции на системном уровне
— Что не упоминалось

Поток выпуска версий

2 языка Wolfram Language и Mathematica — с различным новым функционалом, включая более 100 совершенно новых функций. В сентябре прошлого года мы выпустили версию 11. 2 была большой версией. Версия 11. 3, которая, помимо прочего, включает почти 120 совершенно новых функций. Но сегодня у нас есть еще больший релиз: версия 11.

0, и я очень горжусь тем, что мы смогли поддерживать ускоряющиеся темпы инноваций и развития теперь не менее трех десятилетий. 23 июня будет 30 лет с момента выпуска версии 1. 3, возможны только потому, что мы используем огромный стек технологий, который мы систематически строим более 30 лет. Ключевым моментом в этом является тот факт, что мы используем язык Wolfram Language для разработки языка Wolfram Language — и действительно, большинство вещей, которые мы теперь можем добавить в версию 11.

1 заключается в том, чтобы использовать их для выпуска всего, что готово в определенный момент времени. Мы постоянно работаем над большим потоком R&D проектов, и наша стратегия для версий . 1, может не полностью заполнить новую область, а некоторые из функций могут быть помечены как «экспериментальные». Иногда то, что находится в версии . 1 заключается в том, чтобы как можно быстрее предоставить последние результаты наших исследований и разработок. Но наша цель с релизами версий . 0) — более систематичны и обеспечивают полный охват новых областей, завершая то, что было добавлено постепенно в версиях . Целочисленные версии (. 1.

3, в наш процесс вошел новый элемент. В дополнение ко всем новым функциям в 11. 3. Начиная пару месяцев назад, мы начали проводить живую трансляцию наших совещаний по просмотру дизайна, которые я начал проводить, когда мы работали над версией 11. 3. Поэтому для тех, кто интересуется «тем, как производится колбаса», в настоящее время собрано почти 122 часа записанных собраний, из которых вы можете точно узнать, как изначально были изобретены некоторые из вещей, которые вы теперь видите в версии 11. И в этом блог-посте я собираюсь делать ссылки к определенным записанным живым трансляциям, связанными с функциями, которые я обсуждаю.

Что нового?

3? ОК, так что нового в версии 11. И, кстати, версия 11. Ну, много чего. (И да, для достижения одновременных выпусков такого рода требуется крайне нетривиальная разработка программного обеспечения, управление и обеспечение качества.) 3 доступна сегодня как на рабочем столе (Mac, Windows, Linux), так и на Wolfram Cloud.

3 не только добавляет некоторые совершенно новые направления, но также расширяет и укрепляет то, что уже существует. В общем, версия 11. д. Усиливается основная функциональность: еще более автоматизированное машинное обучение, более надежный импорт данных, предварительная выборка базы знаний, дополнительные возможности визуализации и т. д. Существуют всевозможные новые удобства: более легкий доступ к внешним языкам, непосредственная вводная информация, прямое каррирование, и т. д. И мы также продолжаем агрессивно расширять горизонты во всех областях, где мы особенно активно развивались в последние годы: машинное обучение, нейронные сети, аудио, асимптотическое исчисление, вычисление внешнего языка и т.

3: Вот облако тегов новых функций, добавленных в версии 11.

Блокчейн

3 что трудно понять, с чего начать. Нужно рассказать так много вещей о 11. Как я буду объяснять в будущих блог-постах, язык Wolfram Language с его встроенной способностью говорить о реальном мире оказывается уникальным для определения и выполнения вычислительных умных контрактов. Но начнем с чего-то актуального: блокчейн. 3. Фактическое вычисление языка Wolfram Language для этих контрактов будет (на данный момент) происходить без блокчейн, но важно, чтобы язык мог подключаться к блокчейну, и это то, что добавляется в версии 11. [Живая трансляция обсуждения дизайна]

К примеру, здесь показан последний блок, добавленный в главную цепочку Ethereum: Первое, что мы можем сделать, это просто спросить о блокчейнах, которые есть в мире.

Теперь мы можем взять одну из транзакций в этом блоке и изучить ее:

Для первоначального выпуска версии 11. И тогда мы можем начать работать с данными или провести какой-либо анализ о структуре и содержании блокчейн. 3 мы поддерживаем Bitcoin и Ethereum, хотя вскоре будут добавлены другие открытые блокчейны.

3 мы поддерживаем частный (основанный на Bitcoin) Wolfram Blockchain, который размещен в нашем Wolfram Cloud. Но уже в версии 11. И также можно будет запускать его версии в частных облаках Wolfram Cloud. Мы будем периодически публиковать хэши из этого блокчейна в мир (возможно, в таких вещах, как физические газеты).

Очень легко написать что-то в Wolfram Blockchain (и, да, он взимает небольшое количество Cloud Credits):

Результатом является хеш транзакции, который затем можно найти в блокчейне:

Вот круг назад из блокчейна:

3, чтобы немедленно поддерживать виды хэшей (к примеру «RIPEMD160SHA256»), которые используются в блокчейнах криптовалюты. Кстати, функция Hash в языке Wolfram Language была расширена в 11. И, используя Encrypt и связанные с ним функции, можно начать создавать некоторые сложные вещи в блокчейне — и вскоре их будет еще больше.

Системное моделирование

3. Хорошо, теперь давайте поговорим о чем-то действительно большом и новом — по крайней мере, в экспериментальной форме в версии 11. И в версии 11. Одна из наших долгосрочных целей в языке Wolfram Language — это возможность вычислить что угодно в мире. [Живая трансляция наших совещаний по просмотру дизайна 1 и 2] 3 мы добавляем новый класс вещей, которые мы можем вычислить: сложные инженерные (и другие) системы.

SystemModeler позволяет запускать симуляции моделей и разрабатывать модели с использованием комплексного графического интерфейса. Еще в 2012 году мы выпустили Wolfram SystemModeler: среду моделирования промышленного применения, которая использовалась для моделирования таких вещей, как реактивные двигатели с десятками тысяч компонентов.

3, является встроенной возможностью для языка Wolfram Language для запуска моделей из SystemModeler — или фактически любой модели, описанной на языке Modelica. То, что мы добавляем (экспериментально) в версии 11.

Это извлекает определенную модель из нашего встроенного репозитория моделей: Начнем с простого примера.

Если вы нажмете [+], вы увидите более подробную информацию:

SystemModelPlot создает график «стандартной симуляции» модели: Но место, где это становится действительно интересным — то, что вы действительно можете запустить эту модель.

Это набор уравнений, описывающих динамику поведения компонентов системы. Какова на самом деле модель внутри? И для такой простой системы эти уравнения уже довольно сложны:

SystemModeler настроен таким образом, чтобы люди проектировали произвольно сложные системы графически, иерархически соединяя вместе компоненты, представляющие физические или другие объекты. Часть работы моделирования реальных систем состоит, как правило, из работы со множеством компонентов и сложных взаимодействий. 3 вы сможете сразу работать с ней на языке Wolfram Language. Но большая новость заключается в том, что как только у вас будет модель, то в версии 11.

Каждая модель имеет множество свойств:

И да, даже в очень простой системе, подобной этой, их уже много: Одно из этих свойств дает переменные, которые характеризуют систему.

Вот пример того, как одна из этих переменных ведет себя в симуляции:

Это производит симуляцию системы с измененным параметром, затем создает график: Типичная вещь, которую нужно сделать, это исследовать как система ведет себя при изменении параметров.


Версия 11. Мы могли бы перейти отсюда к выборке множества различных возможных вводов или значений параметров и делать такие вещи, как изучение устойчивости системы к изменениям. 3 обеспечивает очень богатую среду для выполнения всех этих задач как интегрированной части языка Wolfram Language.

3 уже включено более 1000 готовых моделей — электрических, механических, тепловых, гидравлических, биологических и других систем. В 11. Вот более сложный пример — основная часть автомобиля:

Если вы разворачиваете значок, вы можете навести указатель мыши на части, чтобы узнать, что они собой представляют:

Это дает краткий обзор модели, показывающей, что она включает в себя 1110 переменных:

3, из которых могут быть построены модели. В дополнение к готовым к работе моделям также имеется более 6000 компонентов, включенных в 11. Но это также можно сделать исключительно с помощью кода языка Wolfram Language, используя такие функции, как ConnectSystemModelComponents (которые в основном определяют график подключения соединителей разных компонентов): SystemModeler предоставляет полную графическую среду для сборки этих компонентов.



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

3. Потребовалось много времени, чтобы построить все возможности моделирования систем, которые мы представляем в 11. Но теперь, когда системное моделирование интегрировано в язык Wolfram Language, оно открывает всевозможные важные новые возможности — не только в области разработки, но и во всех областях, которые могут быть легко смоделированы многокомпонентными системами реального мира. И они опираются на множество сложных особенностей языка Wolfram Language, в том числе на крупномасштабные символические манипуляции, умение эффективно решать системы дифференциально-алгебраических уравнений, обработку величин и единиц и многое другое.

Новое в ноутбуках

0 еще в 1988 году, поэтому к настоящему времени мы отлаживаем их работу не менее 30 лет. Мы впервые представили ноутбуки в версии 1. 3 представлен ряд новых функций. В версии 11. Простым примером являются закрытые группы ячеек, которые теперь по умолчанию имеют «открывающую кнопку», а также их можно открывать с помощью скобок их ячеек:

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

В ноутбуке, подключённом к работающему ядру, последовательные ячейки помечены как In [1], Out [1] и т. Другим небольшим, но полезным изменением является введение «неопределенных меток In / Out». Но если вы больше не подключены к одному и тому же ядру (скажем, потому что вы сохранили и снова открыли ноутбук), In/Out нумерация больше не имеет смысла. д. Но с версии 11. Таким образом, в прошлом не было показано никаких меток In, Out. 3 все еще есть метки, но они неактивны, и в них нет явных цифр:

3 — Iconize. Еще одна новая функция в версии 11. Допустим, у вас есть большой объем данных или другой ввод, который вы хотите сохранить в ноутбуке, но вы не хотите, чтобы он визуально заполнял ноутбук. Вот основная проблема, которую она решает. Но тогда для использования данных вам нужно сделать что-то вроде создания переменной и так далее. Одна вещь, которую вы можете сделать, это поместить ее в закрытые ячейки. Iconize обеспечивает простой встроенный способ сохранения данных в ноутбуке.

Вот как вы делаете свернутую версию выражения:

Теперь вы можете использовать эту свернутую форму вместо всего выражения; он сразу же выдает результат полного выражения:

Например, рассмотрим что-то вроде этого: Еще одно удобное использование Iconize — сделать код более удобным для чтения, но при этом все еще выполнимым.

Вы можете выбрать здесь варианты, затем перейти в контекстное меню и свернуть их:

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

2 мы представили ExternalEvaluate для выполнения кода на внешних языках (первоначально Python и JavaScript) непосредственно из языка Wolfram Language. В версии 11. (Это поддерживается на десктопе и в частных облаках, по соображениям безопасности и выделения ресурсов открытого Wolfram Cloud работает только с чистым кодом языка Wolfram Language.)

3 теперь стало еще проще вводить внешний код в ноутбуки. В версии 11. Просто запустите ячейку ввода с помощью >, и вы получите внешнюю ячейку кода (вы можете легко выбрать нужный язык):

И да, то, что возвращается, является выражением языка Wolfram Language, которое вы можете вычислить:

Документация рабочего процесса

С версии 11. Мы уделяем большое внимание документированию языка Wolfram Language — и традиционно у нас в нашей документации было три вида компонентов: «справочные страницы», которые охватывают одну функцию, «страницы-руководство», в которых содержится сводка с ссылками на многие функции, и «учебные пособия», которые предоставляют повествовательные введения в области функциональности. 3 есть четвертый вид компонента: (рабочий процесс) workflows — это куда вас ведут новые опции на сером фоне в нижней части «корневой справочной страницы».

Но если вы щелкаете мышью или, что еще хуже, используете внешние программы, этого недостаточно. Когда все, что вы делаете, представлено явным кодом языка Wolfram Language, парадигма In/Out ноутбуков — отличный способ показать, что происходит. И вот где подойдут workflows, потому что они используют всевозможные графические устройства для представления последовательности действий, которые не просто вводят в язык Wolfram Language.

И, кстати, вы найдете ссылки на соответствующие workflows со справочных страниц для функций. Поэтому, если вы получаете координаты графика или развертываете сложную форму в интернете или добавляете баннер в ноутбук, то ожидается следование нашей новой документации workflow.

Инструменты для презентаций

3, — это Presenter Tools — полная среда для создания и запуска презентаций, которые включают интерактивную интерактивность. Еще одна важная вещь, связанная с интерфейсом в версии 11. Но то, что они помогают делать, это добавить все функции, которые нужны для удобного создания и запуска презентаций. Что делает Presenter Tools возможными — это богатая система ноутбуков, которую мы создали за последние 30 лет.

Но это никогда не было полным решением. Люди используют наш предыдущий формат SlideShow, для презентаций с ноутбуками Wolfram в течении 20 лет. Справедливости ради отметим, что мы ожидали, что операционные системы будут просто решать проблемы, такие как масштабирование контента. Да, это давало нам удобные функции ноутбука, такие как живое вычисление в среде слайд-шоу, но не использовало такие вещи как «в PowerPoint», такие как автоматическое масштабирование контента до разрешения экрана. Итак, теперь мы создали новые Presenter Tools, которые решают такие проблемы, и добавляют целый ряд возможностей для создания отличных презентаций с ноутбуками как можно проще. Но прошло уже 20 лет, и этого все еще нет.

Затем выберите свой шаблон и тему, и начинайте работу: Для начала просто выберите File > New > Presenter Notebook.

Вот как это выглядит, когда вы редактируете презентацию (и вы можете менять темы, когда захотите):

Все идет в полноэкранном режиме и автоматически масштабируется до разрешения экрана, который вы используете. Когда вы будете готовы, просто нажмите «Начать презентацию». Например, вы можете иметь Manipulate прямо внутри слайда, и вы можете немедленно взаимодействовать с ним. Но вот большое отличие от PowerPoint-подобных систем: все живое, интерактивное, редактируемое и прокручиваемое. И вы можете редактировать то, что находится на слайде, и, например, делать livecoding, запуская свой код на ходу. (О, и все может быть динамичным, скажем, воссоздать графику на основе данных, которые импортируются в реальном времени.) Вы также можете использовать такие вещи, как группы ячеек для организации контента в слайдах.

По умолчанию эта клавиша Page Down (поэтому вы можете использовать клавиши со стрелками при редактировании), но вы можете установить другой ключ, если хотите. Когда вы будете готовы перейти на новый слайд, просто нажмите клавишу (или ваш пульт сделает это за вас). Когда вы делаете слайды, вы можете включить SideNotes и SideCode. Вы можете заставить Presenter Tools показывать слайды на одном дисплее, а затем отображать заметки и элементы управления на другом дисплее. Но SideCode — это нечто другое. SideNotes — текстовые заметки, похожие на PowerPoint. Это код, который вы заранее подготовили, и можете «волшебством» вставить в слайд в режиме реального времени во время презентации, и если желаете, с моментальным выводом результата. На самом деле это основано на том, что я делал на своих собственных презентациях годами.

Несколько раз я использовал формат SlideShow, но в основном я делал все в обычном ноутбуке, часто записывая заметки на отдельном устройстве. На протяжении многих лет я дал огромное количество презентаций с помощью ноутбуков Wolfram. 3 у меня есть именно те инструменты, которые мне нужны для подготовки и проведения презентаций. Но теперь я очень рад, что в версии 11. Я могу предварительно определить часть контента и структуры, но живая презентация может быть очень динамичной и спонтанной — с живым редактированием, живым кодированием и всеми видами интерактивности.

Wolfram Чат

Когда люди интерактивно работают над чем-то, обычно слышно, что кто-то говорит «позвольте мне просто отправить вам часть кода» или «позвольте мне отправить вам Manipulate». Пока мы обсуждаем возможности интерфейса, вот еще одна: Wolfram Chat. 3 теперь есть очень удобный способ сделать это, и это встроено непосредственно в систему ноутбуков Wolfram, что и называется Wolfram Chat. Теперь, в версии 11. [Живая трансляция совещания]

Просто выберите File > New > Chat; вас спросят, с кем вы хотите «пообщаться», и это может быть кто угодно и где угодно с Wolfram ID (хотя, конечно, они должны принять ваше приглашение):

Затем вы можете начать сеанс чата и, например, поставить его рядом с обычным ноутбуком:

Д. Здорово то, что вы можете отправлять все, что может появиться в ноутбуке, включая изображения, код, динамические объекты и т. (Хотя это «песочница», так что люди не могут отправлять «кодовые бомбы» друг другу).

И есть и другие приложения. Существует много очевидных приложений Wolfram Chat не только в сотрудничестве, но и в таких вещах, как учебные аудитории и техническая поддержка. И на самом деле одним из способов, которым мы проводили нагрузочные испытания Wolfram Chat во время его разработки, это используя его для участия в livecoding соревновании на конференции Wolfram технологий прошлой осенью. Например, для livecoding соревнований.

Но на самом деле это удивительно сложно, с поражающим количеством различных ситуаций и случаев для рассмотрения. Можно подумать, что чат — это нечто простое и ясное. 0. Под капотом Wolfram Chat использует как Wolfram Cloud, так и новую структуру pub-sub channel, которую мы ввели в версии 11. 3 Wolfram Chat поддерживается только для настольных ноутбуков Wolfram, но скоро они появятся в ноутбуках в интернете и на мобильных устройствах. В версии 11.

Удобства языка

И один из способов сделать это — это добавить новые «удобные функции» в каждой версии языка. Мы всегда совершенствуем язык Wolfram Language, чтобы сделать его более удобным и продуктивным в использовании. (Вы можете увидеть довольно много обсуждений новых удобных функций в версии 11. Зачастую эти функции делают простые вещи; задача (которая часто занимает много лет) заключается в том, чтобы придумать для них красивый и простой дизайн. 3 в недавних живых трансляциях.)

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

Ну, это может сохранить явное построение чистых функций с Function или &, например, в таком случае: Чем это полезно?

Curry (названный в честь «currying», который, в свою очередь, назван в честь Ха́скелл Брукс Ка́рри) по существу делает операторные формы, а Curry [f, n] «currying in» n аргументов: Другая функция, которая на каком-то уровне очень проста (но выбор имени этой функции был мучительным), является Curry.

Однопараметрическая форма самого Curry такова:

Ну, некоторые функции (например, Select) имеют встроенные «операторные формы», в которых вы даете один аргумент, затем вы «curry in» другие: Почему это полезно?

Ну, вы всегда можете явно построить его с помощью Function или &. Но что, если вы хотите создать оператор самостоятельно? Например, это операторная форма D, в которой второй аргумент задан как x: Но с Curry вам не нужно это делать.

Теперь мы можем применить эту операторную форму для дифференцирования по x:

Но это приятное удобство, если вы это понимаете, и понимание этого — хорошее упражнение в понимании символической структуры языка Wolfram Language. Да, Curry на каком-то уровне довольно абстрактна.

Кстати, говоря об операторных формах, NearestTo является аналогом операторной формы Nearest (однопараметрическая форма самого Nearest генерирует NearestFunction):

Это находит 5 химических элементов, плотность которых близка к 10 г / см3: Вот пример того, почему это полезно.

1 в 2015 году мы представили множество функций, которые работают с последовательностями в списках. В версии 10. 3 добавляет еще пару таких функций. Версия 11. Это похоже на StringSplit для списков: он разбивает списки в позициях определенных последовательностей: Одна из них — SequenceSplit.

Также новым в «Sequence family» является функция SequenceReplace:

Обновления визуализации

Так же, как мы всегда совершенствуем основные функциональные возможности программирования в языке Wolfram Language, мы также всегда совершенствуем такие вещи, как визуализация.

0 мы добавили GeoHistogram, здесь показана «плотность вулканов» в США: В версии 11.

3 мы добавили GeoSmoothHistogram: В версии 11.

3 являются выноски (callouts) в 3D-графиках, здесь случайные слова отмечают случайные точки (но обратите внимание как расположены слова чтобы не перекрывать друг друга): Также новым в версии 11.

Мы можем сделать несколько более значимый график слов в 3D, используя новый FeatureSpacePlot3D на основе машинного обучения (обратите внимание, например, что «vocalizing» и «crooking» (означающие примерно одно и тоже — переводчик) соответственно заканчиваются вместе):

Чтение текста

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

Здесь мы используем статью Википедии о «носороге», спрашивая, сколько весит носорог: Интересным примером новой функции является FindTextualAnswer, который берет фрагмент текста и пытается найти ответы на текстовые вопросы.

Конечно, это не всегда работает и может делать то, что мы, люди, будем считать довольно глупым. Это похоже на волшебство. Мы можем видеть немного больше того, что это делает, если мы спросим не только о первом ответе о весе носорогов, но о 5: Но это использует самую современную методологию машинного обучения, а также множество уникальных данных для обучения, основанных на Wolfram|Alpha.

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

Или в тоннах:

Но это может быть полезным как способ быстро получить первое предположение об ответе, даже из полностью неструктурированного текста. FindTextualAnswer не заменяет всю нашу обработку данных и стратегию по вычисляемым данным. И, да эта функция должна хорошо справляться с критическими упражнениями по чтению и, вероятно, может быть сделан для того, чтобы преуспеть в Jeopardy!

Вычисления по лицам

3 мы добавили для этого систематические функции. Мы много реагируем на человеческие лица, и с современным машинным обучением можно делать всевозможные вычисления, связанные с лицом, и в версии 11. Здесь FindFaces находит лица (известных физиков) с фотографии:

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

Эти функции можно, например, использовать в качестве критериев в FindFaces, здесь выделяют физиков, которые выглядят моложе 40 лет:

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

Но в течение нескольких лет мы также энергично строили целую подсистему на языке Wolfram Language, чтобы люди могли работать напрямую с нейронными сетями. В языке Wolfram Language существуют всевозможные функции, которые основаны на нейронных сетях (например, FacialFeatures). Но наша цель — создать символический слой высокого уровня, который позволяет максимально упростить вычисления нейронной сети. Мы строим сверх низкоуровневых библиотек (в частности, MXNet, для которых мы были большими вкладчиками), поэтому мы можем использовать все новейшие графические процессоры и другие оптимизации. [Живая трансляция совещания 1, 2 и 3]

Настройка автоматического кодирования и декодирования на стандартные конструкции языка Wolfram Language для текста, изображений, аудио и т. Это состоит из многих частей. Быть в состоянии автоматически объединить отдельные операции нейронной сети, особенно те, которые касаются таких вещей как последовательность. д. Возможность максимально автоматизировать обучение, включая автоматическую оптимизацию гиперпараметров.

И для этого мы создали наш репозиторий Neural Net Repository: Но есть что-то еще более важное: наличие большой библиотеки существующих, обученных (и необученных) нейронных сетей, которые могут использоваться как непосредственно для вычислений, так для передачи обучения или как экстракторы признаков.

И мы добавляем новые сети каждую неделю. Здесь есть сети, которые делают всевозможные замечательные вещи. Сети хранятся в облаке. Каждая сеть имеет свою собственную страницу, которая включает примеры и подробную информацию. Но все, что вам нужно сделать чтобы вывести их в свои вычисления — это использовать NetModel:

Вот сеть, которую использует FindTextualAnswer:

3 — это графическое представление, которое мы используем для сетей. Одна из новинок в версии 11. И когда вы тренируете нейронную сеть, появляющиеся интерактивные панели имеют несколько новых возможностей — и с NetTrainResultsObject мы теперь сделали сам процесс обучения вычисляемым. Мы оптимизировали его, чтобы дать вам хороший общий обзор структуры сетевых графиков, но затем разрешить интерактивное развёртывание до любого уровня детализации.

3 есть некоторые новые типы слоев, такие как CTCLossLayer (особенно для поддержки аудио), а также множество обновлений и улучшений для существующих типов слоев (10-кратное ускорение LSTM на графических процессорах, автоматические свертки переменной длины, расширения многих слоев для поддержки произвольно-размерных вводов и т. В версии 11. В версии 11. д.). И чтобы поддержать это, мы внедрили такие вещи, как NetStateObject, что в основном позволяет сети иметь персистентное состояние, которое обновляется в результате ввода данных, которые получает сеть. 3 мы уделяли особое внимание рекуррентным сетям и генерации последовательности.

Во-первых, мы делаем все более автоматизированным, чтобы можно было проще и проще настроить системы нейронных сетей. При разработке нашей символической структуры нейронной сети мы на самом деле идем в двух направлениях. И в версии 11. Но во-вторых — иметь возможность легко обрабатывать все больше нейронных сетевых структур. Конечно, наша система спроектирована так, что даже если вы это сделаете, вся наша автоматизированная система — с обучением и т. 3 мы добавляем целую коллекцию функций «сетевой хирургии», таких как NetTake, NetJoin и NetFlatten, чтобы вы могли входить, настраивать и взламывать нейронные сети, как пожелаете. — продолжит отлично работать. д.

Асимптотический анализ

И в версии 11. Более 30 лет наша миссия состоит в том, чтобы сделать как много больше математики вычислительной. 3 мы наконец-то раскусили важную, давно ожидаемую область: асимптотический анализ.

Вот простой пример: найти приближенное решение дифференциального уравнения вблизи x = 0:

Но будьте внимательнее: присутствует e (1 / x) фактор, который просто даст бесконечность в каждом порядке как степенной ряд по x. Сначала это может выглядеть как решение в виде степенного ряда. 3 мы теперь получили функции асимптотического анализа, которые обрабатывают всевозможные масштабы роста и колебаний, а не только порядка. Но с версией 11.

Были регулярные возмущения и сингулярные возмущения. В прошлом, когда я зарабатывал на жизнь будучи физиком, всегда казалось, что все самые темные силы сосредотачивались на методах возмущения. Суть всегда заключалась в том, чтобы вычислить разложение по некоторому небольшому параметру, но для достижения этой цели в различных случаях всегда требовались различные хитрости. Были такие вещи, как метод WKB, и метод пограничного слоя. 3 у нас имеется систематический способ решения этих проблем. Но теперь, после нескольких десятилетий работы, наконец в версии 11. Вот дифференциальное уравнение, где мы ищем решение для малого ε:

2, мы добавили множество вариантов для решения более сложных ограничений. Еще в версии 11. Но с помощью наших методов асимптотического анализа мы также можем сделать и другие вещи, важные для различных проблем в таких областях, как теория чисел и теория сложности вычислений, которая заключается в сравнении асимптотических темпов роста.

при n-> ∞? Это задание: 2^n^k асимптотически меньше (n^m)! Результат: да, при определенных условиях:

«Элементарная» алгебра

Но каковы на самом деле шаги, скажем, в результате действия Show Steps для алгебры? Одной из особенностей Wolfram|Alpha, популярной среди учеников является ее функциональность «Show Steps», в которой она синтезирует «на лету» объяснения, показывающие как получить ответы, которые она дает. И в версии 11. Они — «элементарные операции», такие как «добавить соответствующие стороны двух уравнений». 3 мы включаем функции, чтобы просто делать такие вещи:

И это на самом деле то, что я думал, когда я сказал, что мы должны их реализовать. И, ОК, похоже, что это действительно тривиальные функции, которые в основном просто работают над структурой уравнений. То есть то, где студенты часто ошибаются, но что со всей алгоритмической инфраструктурой в Wolfram Language нам легко получить правильно: Но, как быстро указала команда R&D по алгебре, есть всяческие ловушки («что, если b отрицательно?» и т.д.).

Доказательства

Но, получая результат, можно также спросить, почему это правильно: можно попросить какое-то доказательство, демонстрирующее то, что ответ верен. Язык Wolfram Language в основном связан с результатами вычислений. И я очень рад, что, наконец, в версии 11. И вот уже более 20 лет я думал о том, как найти и представить общие доказательства полезным и вычислимым образом на языке Wolfram Language. [Живая трансляция совещания] 3 функция FindEquationalProof дает пример, который мы будем обобщать и брать за основу в будущих версиях.

Это всего лишь одна аксиома с одним оператором, которую можно представить как соответствующей операции Nand. Моей любимой историей успеха в автоматическом доказательстве теорем является крошечная (и на самом деле простейшая) система аксиом для булевой алгебры, которую я нашел в 2000 году. Итак, здесь он начинается с моей аксиомы для булевой алгебры, а затем вычисляет, что Nand является коммутативным: В течении 11 лет, FullSimplify фактически смог использовать автоматические методы проверки теорем внутри, чтобы иметь возможность вычислять вещи.

Что ж, в версии 11. Но это просто говорит нам результат; он не дает никаких доказательств. 3 мы можем теперь получить доказательство:

Из краткого сведения видно, что доказательство имеет 102 шага. Что такое объект доказательства? Зеленая стрелка наверху представляет собой начальную аксиому; красный квадрат внизу представляет доказанную вещь. Тогда мы можем попросить «граф доказательства». Все узлы в середине являются промежуточными леммами, доказанными друг другом в соответствии с показанными соединениями.

Ну что ж, это сложно. Что на самом деле в доказательстве? Но вот набор данных, который дает все детали:

Вы можете получить несколько более повествовательную форму в виде ноутбука:

И тогда вы также можете получить «функцию доказательства», которая является частью кода и может быть выполнена для проверки результата:

Неудивительно, и неинтересно, это выдает True после запуска:

Но, учитывая, что FindEquationalProof работает с произвольными «уравнительными» символическими отношениями, она может быть применена ко многим вещам — например, к проверке протоколов и стратегий, например, в таких популярных областях, как блокчейн. Теперь, когда мы можем создавать структуры символических доказательств в языке Wolfram Language, у нас есть много эмпирической метаматематики для продолжения работы, которую я буду обсуждать в будущем блог-пост.

Растущая база знаний

Если кто-то спросит, добавилось между версиями 11. База знаний Wolfram (Wolfram Knowledgebase) растет каждый день — частично через систематические каналы передачи данных, и частично через новые курированные данные и явно добавляющиеся домены. 3, это немного странная коллекция вещей. 2 и 11. Также теперь есть более 900 новых характеристик для Плутона и Меркурия. Появилось более 150 параметров об открытых компаниях. Есть около 500 новых «значительных графиков». Есть 16 000 новых анатомических структур, таких как нервные пути. Существует множество новых свойств продуктов и новых связей с болезнями. Есть тысячи новых гор, островов, примечательных зданий и других географических особенностей. И многое другое.

3 является система предварительной выборки объектов. Но с точки зрения обычного повседневного использования базы знаний Wolfram наиболее важной новой функцией в версии 11. Но если вы используете настольную систему она «по волшебному» загружается вам. База знаний, естественно, большая, и она хранится в облаке.

3, магия стала значительно сильнее. Что ж, в версии 11. (Если вы хотите сделать предварительную выборку «вручную», для этого нужно использовать функцию EntityPrefetch. Поскольку теперь, когда вы запрашиваете один конкретный элемент, система будет пытаться выяснить что вы, возможно, попросите в следующий раз и она автоматически начнет асинхронно пре-загружать это, и поэтому, когда вы действительно попросите об этом, он уже будет на вашем компьютере — и вам не придется ждать его загрузки из облака. Обратите внимание: если вы используете язык Wolfram Language в облаке, база знаний уже «прямо там», поэтому нет необходимости для загрузки или предварительной выборки.)

Например, если вы используете Interpreter для интерпретации некоторого ввода (например, сокращений штата США), информация о том, как делать интерпретации, также получит предварительную выборку, поэтому, если вы используете десктоп, интерпретации могут выполняться локально без общения с облаком. Весь механизм предварительной выборки применяется вполне обобщенно.

Сообщения и почта

Но начиная с версии 11. Вы можете отправлять электронные письма с языком Wolfram Language (используя SendMail) уже десятилетиями. д. 3, он может использовать полное форматирование HTML, и вы можете вставлять в него множество вещей — не только графику и изображения, но также облачные объекты, наборы данных, аудио и т. [Живая трансляция совещания]

3 также предоставляет возможность отправлять текстовые сообщения (SMS и MMS) с помощью SendMessage. Версия 11. Однако из соображений безопасности вы можете отправлять только на свой номер мобильного телефона, заданный значением $MobilePhone (и, да, безусловно, номер подтверждается).

Но в версии 11. Язык Wolfram Language уже давно позволяет импортировать электронную почту и почтовые ящики, и с функцией MailReceiverFunction также может отвечать на входящую почту. 3 добавлено что-то новое, это возможность иметь дело с живыми почтовыми ящиками.

Сначала подключитесь к почтовому серверу (IMAP, на данный момент) (я не показываю диалоговое окно проверки подлинности):

Это дает вам набор текущих непрочитанных сообщений в вашем почтовом ящике: Затем вы можете в основном использовать язык Wolfram Language как программируемый почтовый клиент.

Теперь мы можем выбрать одно из этих сообщений, и мы получим символический объект MailItem, который, например, мы можем удалить:

Операции на системном уровне

3 поддерживает множество новых операций на системном уровне. Версия 11. Функция RemoteRun в основном похожа на Unix rsh: вы даете ей имя хоста (или IP-адрес), и команда выполняется там. Начнем с простого, но полезного: удаленное выполнение программы. Если вы хотите удаленно запускать постоянную программу, вы можете сделать это с помощью RemoteRunProcess, который является удаленным аналогом локального RunProcess. Параметр Authentication позволяет указать имя пользователя и пароль.

В версии 11. При работе с удаленными компьютерными системами аутентификация всегда является проблемой, и в течение нескольких лет мы постепенно строим улучшенную символическую систему аутентификации на языке Wolfram Language. Затем есть GenerateSecuredAuthenticationKey, который генерирует объекты OAuth SecuredAuthenticationKey, которые пользователи могут использовать для аутентификации вызовов в Wolfram Cloud извне. 3 есть новая функция AuthenticationDialog, в которой появляется целый ряд правильно настроенных диалоговых окон проверки подлинности.

Существуют также форматы HTTPResponse и HTTPRequest, которые (среди многих других) можно использовать для написания веб-сервера на языке Wolfram Language несколькими строками кода. Также на системном уровне есть несколько новых форматов импорта/экспорта, таких как формат BSON (формат JSON-двоичной сериализации) и WARC (формат веб-архива).

В версии 11. Прошло уже несколько лет как мы представили объекты ByteArray в язык Wolfram Language, и мы постоянно поддерживаем их развитие. Версия 11. 3 существуют BaseEncode и BaseDecode для преобразования между байтовыми массивами и строками Base64. 3 также расширяет Hash (что, помимо всего прочего, работает на байт-массивах), добавляя различные типы хэширования (например, двойные SHA-256 и RIPEMD), которые используются для современных нужд как блокчейн и криптовалюты.

3 одним дополнением являются данные системных процессов, такие, как вы можете получить из команды Unix ps: Мы всегда добавляем больше видов данных, которые мы можем сделать вычислимыми на языке Wolfram Language, а в версии 11.

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

Конечно, потому что все вычислимо, легко сделать такие вещи, как делать графики начала процессов, выполняющихся на вашем компьютере (и, да, я последний раз перезагружался несколько дней назад):

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

Вот только 0,1 секунды пакетов, которые входят и выходят из моего компьютера, когда я здесь спокойно сижу и пишу этот блог-пост:

Вы можете просмотреть каждый пакет; вот первый, который был записан:

Ну, я ожидаю, что вы будете использовать его для отладки достаточно регулярно — и это также полезно для изучения компьютерной безопасности, и не в последнюю очередь потому, что вы можете сразу же перевести все в стандартную визуализацию языка Wolfram Language, машинное обучение и другие функции. Почему это интересно?

Что не упоминалось

3 есть много других вещей, о которых я даже не упоминал. Это уже длинный блог-пост, но в 11. Как намного более эффективный и надежный импорт XLS, CSV и TSV. Например, появились всевозможные обновления для импорта и экспорта. Или поддержка метаданных в звуковых форматах, таких как MP3 и WAV. Или экспорт анимационных PNG. д. Или более сложное квантование цвета в GIF, TIFF и т. [Живая трансляция совещания 1 и 2.]

0, и с тех пор мы развиваем функциональность аудио быстрыми темпами. Мы представили символические Audio объекты в 11. 3 сделала цифровую звукозапись более надежной (и впервые поддерживаем ее в Linux). Версия 11. Мы также ввели функции AudioPlay, AudioPause и AudioStop, которые управляют открытыми объектами AudioStream.

Между тем AudioIntervals теперь может автоматически разбивать аудио на отрезки, разделенные молчанием. Также новым является AudioDistance, который поддерживает различные измерения расстояния для звука. И в несколько иной области $VoiceStyles дает список возможных голосов, доступных для SpeechSynthesize.

Вот небольшая новая математическая функция, которая в этом случае дает последовательность из 0 и 1, в которой каждый блок длины-4 появляется ровно один раз:

Но как только вы находитесь внутри, делая что-то вроде решения уравнения, вы обычно хотите «исключить единицы измерения». Язык Wolfram Language теперь имеет сложную поддержку величин и единиц — как явных величин (например, 2,5 кг), так и символических «количественных переменных» («р, которые имеют единицы давления»). 3 теперь есть функция, которая систематически делает это: NondimensionalizationTransform. И в 11. 3 для введения новых видов величин, используя IndependentPhysicalQuantity. Существует также новый механизм в 11.

В версии 11. Большая часть встроенной базы знаний Wolfram Knowledgebase в конечном итоге представлена в терминах хранилищ объектов, а в версии 11 мы ввели явную конструкцию EntityStore для определения новых хранилищ сущностей. 3 вводится функция EntityRegister, которая позволяет вам регистрировать хранилище сущностей, чтобы вы могли ссылаться на типы сущностей, которые она содержит, так же как вы ссылались бы на встроенные типы объектов (например, города или химические вещества).

3, — это пакет MongoLink, который поддерживает подключение к внешним базам данных MongoDB. Еще одна вещь, которая введена в качестве экспериментальной функции в версии 11. И на самом деле то, что MongoLink является частью наших полномасштабных усилий в области развития, результаты которых будут видны в будущих версиях, способствует беспрепятственной поддержке чрезвычайно больших объемов данных, хранимых во внешнем виде. Мы сами используем MongoLink для управления наборами данных размерами в терабайты и больше для таких вещей, как машинное обучение.

2 мы ввели ExternalEvaluate для запуска кода на внешних языках, таких как Python. В версии 11. 3 мы экспериментируем с обобщением ExternalEvaluate для управления веб-браузерами, создавая структуру WebDriver. В версии 11. Вы можете давать всевозможные команды, имеющие тот же эффект, как и кликанье по странице веб-браузера, так и те, которые извлекают все, что вы можете видеть на странице.

Вот как вы можете использовать Chrome (мы поддерживаем его и Firefox), чтобы открыть веб-страницу, а затем захватить ее:

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

1, и это появилось всего за несколько месяцев со времени последней версии . Но для меня это удивительно, сколько есть в выпуске Wolfram Language . Это благополучное указание на объем исследований и разработок, которые нам удается завершить, надстраивая над стэком технологий Wolfram Language, который мы создали. 1. 3 существует множество новых уголков для изучения. И, да, даже в 11. И я надеюсь, что многие люди сделают это, и будут использовать новейшие инструменты, которые мы создали для открытия и изобретения всевозможных новых и важных миру вещей.

С вопросами обращайтесь info-russia@wolfram.com

Бесплатная триал версия Mathematica
Бесплатный триал Wolfram|One

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть