...

суббота, 11 июля 2020 г.

Какие кабели соединят Африку, Азию и Австралию

Рассказываем о подводной инфраструктуре, которая должна заработать в ближайшие три года. Это — кабель 2Africa, опоясывающий африканский континент, трансатлантические Dunant и JGA North, который впервые за 20 лет соединит Японию и Австралию. Обсуждение — под катом.


Фото — Cameron Venti — Unsplash

Кабель, опоясывающий Африку


В середине мая несколько ИТ-компаний и операторов связи — среди которых Facebook, Orange, China Mobile и Internet Society — объявили о планах проложить подводный кабель 2Africa протяженностью 37 тыс. километров. Он объединит Европу, Ближний Восток и еще шестнадцать стран Африки, где около миллиарда человека сталкиваются с отсутствием доступа в интернет.

Пропускная способность 2Africa составит 180 Тбит/с. Это — в четыре раза больше, чем у всех кабелей, идущих к африканскому континенту на текущий момент. Проект станет первым среди сопоставимых по масштабу, где используют алюминиевый проводник вместо медного. Он сокращает перепады напряжения, что позволяет увеличить число волоконных пар в кабеле.

Новый кабель будет построен на основе технологии пространственного мультиплексирования с разделением (Spatial Division Multiplexing, SDM), которая оптимизирует спектральную эффективность. В этом случае оптические компоненты промежуточных усилителей работают не с одной парой волокон, а сразу с несколькими, что в некоторых случаях увеличивает пропускную способность на 70%.

Точная стоимость реализации проекта 2Africa пока неизвестна, однако эксперты Bloomberg оценили его в миллиард долларов. Ввести кабельную систему в эксплуатацию планируют в 2023–2024 годах.

Но до этого момента начнут работать еще несколько подводных кабелей.

Кто еще развивает подводную инфраструктуру


В 2018 году Google объявили о планах проложить трансатлантический кабель длиной в 6,6 тыс. километров, соединяющий побережье США с Францией. Система получила название Dunant. Здесь, как и в случае с 2Africa, будет использована технология SDM. Она поможет обеспечить пропускную способность в 250 Тбит/с и расширить возможности одного из самых загруженных направлений. По кабелям Атлантики передают на 55% больше данных, чем по кабелям Тихого океана.
Запустить Dunant в эксплуатацию планируют до конца этого года. В марте французская телекоммуникационная компания Orange уже подключила свою часть кабеля к терминальному оборудованию в коммуне Сент-Илер-де-Рье.


Фото — Hunter Nolan — Unsplash

На этой неделе в эксплуатацию ввели систему JGA North. Её протяженность составляет 2,7 тыс. километров, а пропускная способность — 24 Тбит/с, но в ближайший год её увеличат до 30 Тбит/с. JGA North соединяет Японию и Гуам и подключен к JGA South, который пролегает между Гуамом и Сиднеем. Эта система JGA стала первым подводным кабелем за 20 лет, соединившим Японию и Австралию.

В 2021 году в азиатском регионе должен заработать еще один подводный кабель на 128 Тбит/с — SJC2. Он соединит Китай, Японию, Сингапур, Южную Корею и Тайвань. Стоимость проекта оценивают в 439 млн долларов. Дополнительный кабель должен будет укрепить инфраструктуру и стать резервом в случае непредвиденных разрывов, которые происходят на этом участке достаточно регулярно.



О чем мы пишем в блоге 1cloud.ru:

Компьютер, который отказывается умирать


Краткая история Fidonet — проекта, которому «нет дела» до победы над интернетом
Как развивалась система доменных имен: эра ARPANET
Как автоматизировать управление ИТ-инфраструктурой — обсуждаем три тренда

Let's block ads! (Why?)

Линус Торвальдс одобрил замену части терминов в коде Linux на нейтральные названия

10 июля 2020 года Линус Торвальдс (Linus Torvalds) одобрил необходимость замены части терминов в коде Linux на нейтральные названия. Вдобавок несколькими днями ранее согласие на такую процедуру по введению новой инклюзивной терминологии было получено от большей части разработчиков ядра Linux.
Согласованные альтернативные варианты терминов для замены пары master / slave в зависимости от контекста на пары:

  • primary / secondary;
  • main / replica или subordinate;
  • initiator / target;
  • requester / responder;
  • controller / device;
  • host / worker или proxy;
  • leader / follower;
  • director / performer.

Согласованные альтернативные варианты терминов для замены пары whitelist / blacklist в зависимости от контекста на пары:
  • denylist / allowlist;
  • blocklist / passlist.

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

Ранее в начале июля 2020 года в списке рассылки разработчиков ядра Linux началось активное обсуждение вопроса необходимости замены в коде некоторых устоявшихся терминов на нейтральные, чтобы соответствовать текущим глобальным веяниям и изменениям, которые разработчики других проектов уже вводят или также планируют сделать. Тогда за этот процесс уже были несколько разработчиков ядра Linux, включая участников технического совета некоммерческого консорциума Linux Foundation. Против этой процедуры переименования тогда были только два разработчика — Джеймс Боттомли (James Bottomley) и Стивен Ротвелл (Stephen Rothwell). Они предлагали игнорировать эту тему и считали, что все эти действия по замене тех или иных терминов в коде являются бессмысленными по сути, так как выходят за рамки разработки и касаются в основном исторических событий, которые принимаются и нагнетаются сейчас в обществе только с одной стороны.

См. также:

Let's block ads! (Why?)

Пересказ грамматики Ложбана или что мне удалось усвоить

Ложбан — искусственный человеческий язык, созданный на основе Логланга в 1987 году Группой логического языка (The Logical Language Group). Лицензионно-открыт и свободен. Основан на логике предикатов. Имеет описание в формате YACC и EBNF.


Алфавит

a, b, d, f, g, i, k, l, m, n, o, p, r, t, v, z — читается как в английском
h, w, q — нет в алфавите
e — читается как русская Э
c — читается как русская Ш. Но ci — произносится как «щи».
х — читается как русская Х (!)
j — читается как русская Ж
tc — читается как русская Ч
y — это шва и произноситься как безударная Ы. Например cy — произноситься как «шы».
' — просто разделитель наподобие наших Ь, Ъ знаков (в транскрипции заменяется на h).
. — пауза в произношении.


Числительные

0 — no, 1 — pa, 2 — re, 3 — ci, 4 — vo, 5 — mu, 6 — ха, 7 — ze, 8 — bi, 9 — so
pi — десятичная точка

Например:
pa re ci pi vo mu — 123,45
pa no no — 100

или слитно:
panonopimunono — 100,500


Местоимения (самые простые)

mi — я, мне, моё…
do — ты, твоё…
ti — это


Терминаторы, завершители (ключевое понятие Ложбана/Логлана)

Обозначают границу, конец элемента. Почти всегда опускаются, не указываются. Но иногда их нельзя опускать (и это отдельное искусство).

Самые популярные:
ku — закрывает la,lo,le
vau — терминирует сумти
kei — закрывает абстракторы (nu, bu'u…)

Gizmu — предикат, корневое слово (ключевое понятие Ложбана/Логлана). Имеет несколько аргументов от 1го до 5ти. При этом первый аргумент ставиться перед gizmu, остальные после (в предложении).

Всегда из 5ти букв. При этом 1ая всегда согласная. И последнии (4ая и 5ая) всегда согласная и гласная соответственно. Серединные 2е буквы (2ая и 3ья) — это гласная и согласная. Но могут меняться. Т.е. gizmu существуют в двух вариантах: СГССГ и ССГСГ (например: klama, sutra…).


Конверсия

Se, te, ve, xe — ставятся перед gizmu и меняют порядок аргументов (делают рокировку аргументов). T.e. первым аргументом становится при se — 2ой, te — 3ий, ve — 4ий и хе — 5ый, а первый переносится на место 2ого, 3его, 4ого или 5ого аргумента соответственно.

Можно также заполнить место ничего не обозначающей заглушкой — zo'e

Примеры gizmu:


  1. х1 klama x2 x3 x4 х5 — x1 идёт/едет/направляется/перемещается в х2 из х3 через х4 используя х5.
  2. x1 kumfa x2 x3 — x1 комната/помещение/зал/камера в сооружении х2 окружённая х3.

Sumti — (словечки, ключевое понятие Ложбана/Логлана) чаще всего используются как аргументы gizmu и предлогов. Делаются из чего угодно с помощью артиклей le/lo и др.


Артикли

Ставятся перед чем-то. Начинают sumti. Закрываются терминатором ku.
la — используются для имён.
le — недостоверный артикль.
lo — достоверный артикль.
li — выделяет число.
В Логланге вместо li используется lio, а la, le, lo такие-же насколько я помны.

Работают как скобки: la … ku, le … ku, lo … ku, li … ku. Например: la .moskov. ku, le klama ku…
То, что заключено в эти скобки становиться sumti. Заключить в эти скобки можно почти всё что угодно. В случаи с gizmu берут смысл его первого аргумента.

Простейшие примеры sumti (с использованием конверсии):

le kumfa ku — комната.
le se kumfa ku — сооружение в котором комната(?)
le te kumfa ku — окружение комнаты (стены?)
le klama ku — идущий/едущий/перемещающейся.
le se klama ku — место куда перемещаются/едут/идут.
le te klama ku — место откуда едут/идут.
le ve klama ku — через что проезжают.
le xe klama ku — на чём едут.


Образование новых слов (производных)

Многие gizmu имеют корень из 3ёх букв. А некоторые по 2а корня, по выбору.
Из корней gizmu можно создавать новые слова — lujvo.

Например:
balvi — будущее, имеет корень «bav».
lamji — смежный, имеет корень «lam».
djedi — день, имеет корень «dei».
bav + lam + dei = bavlamdei — завтра.

Selbri — сказуемое в предложении. Обычно gizmu или tanru (несколько gizmu подряд). Частенько ставится перед selbri частичка «cu» — индикатор начала selbri.

Bridi — предложение. Простая базовая формула: sumti + selbri + sumti + sumti…
Разделитель между предложениями «.i ».

Простейшее bridi:

mi klama le kumfa — Я иду в комнату.

Можно даже:

mi klama le kumfa le kumfa le kumfa — Я иду в комнату из комнаты через комнату.

Можно ещё добавить:


  1. x1 sutra x2 — x1 быстрый/скорый/поспешный в действии/осуществлении x2.

И будет:

mi sutra klama le kumfa — Я быстро иду в комнату.

На Логланге будет примерно также: mi kukra kamla le spasi

sutra klama — это tanru. При этом klama главнее т. к. последнее. И места аргументов берутся от него.

А ещё можно добавить например:


  1. x1 barda х2 x3 — x1 большой/крупный по свойству/измерению х2 по сравнению/нормой х3

Но так просто barda добавить к sutra klama нельзя. Т.к. tanru объеденяет/групирует только 2а gizmu. Надо использовать частичку «ke» в этом случаи:
mi barda ke sutra klama le barda kumfa — Я много и быстро иду в большую комнату.

Для неосновного gizmu в tanru можно заполнить места аргументов используя цепочку из be … bei … be'o. Они ставятся сразу после неосновного gizmu.


Метки мест

Можно пометить sumti метками мест и передвинуть их в предложении в другие места.
Метка ставиться всегда перед sumti.
Метки:
fa — x1
fe — x2
fi — x3
fo — x4
fu — x5


Предлоги

Fi'o … fe'o либо уже есть заготовленные сокращённые варианты.
Захватывают/группируются с sumti идущим после них.
Могут быть в любом месте предложения.
Например:
zu'a — слева от х1
ca'u — спереди от x1
ri'u — справа от x1
bu'u — в том же самом месте, что и х1

Предлоги времени и расстояния могут быть без sumti.


Время

pu — прошлое
ca — настоящее
ba — будущее


Длительность

zi — малая.
za — средняя.
zu — большая.
Например:
pu za — далеко в прошлом


Расстояние

vi — здесь, va — там, vu — далеко там.


Союзы (самые простые)

для sumti:
.е — и
.a — или

для tanru:
.je — и
.ja — или
Точку перед союзом начинающемся с согласной можно опустить.

для bridi:
.ije — и
.ija — или

nai — не (например «не и»: .enai, jenai, .ijenai…)


Хвостовое присоединение bridi

Это когда ставят в конце bridi .i gi'e/gi'a и дальше идёт предложение (bridi) но без первого аргумента (sumti). Первый аргумент берётся из предыдущего предложения (bridi).
.gi’e — и
.gi’a — или


Придаточные

poi … ku’o — ограничивающее придаточное
noi … ku’o — обстоятельственное придаточное
Прикрепляются к sumti (и selbri?) справа.


Абстракторы (ууу страшные штуки!)

Могут содержать в себе целые bridi.
nu … kei — событие, состояние.
bu’u … kei — абстракция факта.
du’u … kei — истина, идея или мысль
ka … kei — свойство, аспект
ni … kei — количество
… и много ещё других.


Вопросительные местоимения

ma — вместо sumti.
mo — вместо selbri.
Например:
ma klama la .moskov. — Кто едет в Москву?
mi mo la .moskov. — Я что(?) Москва.


Повелительное предложение

ko — повелительный императив.
Пример:
ko klama la .moskov. — Езжай в Москву!


Междометия для выражения эмоций

Могут быть в любом месте предложения не разрушая конструкцию (как «привидения»).
.ui — счастье
.uinai — несчастье
.iu — любовь
.iunai — ненависть (нелюбовь)
.ei — обязательство
.einai — свобода (не обязанность)
… и много других


Ссылки

The Lojban Reference Grammar (эталонная грамматика)
РФБН-языка, для создания парсера
Хороший учебник для начинающих
http://mw.lojban.org/papri/обзор_грамматики_Ложбана
Онлайн-словарь
Рассказ «Как Враг пришел в Тлунрану» на Ложбане, упрощённом Ложбане, Русском и оригинальном Английском (как пример).
Группа ВКонтакте
join-ссылка на канал в Телеграм

Let's block ads! (Why?)

[Перевод] Учимся читать научные статьи у Эндрю Ына из Стэнфорда

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

Альберт Эйнштейн

Каждому, кто серьёзно занимается машинным обучением, необходимо научиться понимать то, что публикуется в научных статьях. Подобные публикации делают учёные, находящиеся на переднем крае исследований в соответствующих областях. Это — искусственный интеллект (AI, Artificial Intelligence), машинное обучение (ML, Machine Learning), глубокое обучение (DL, Deep Learning) и многие другие сферы.

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

Здесь вы найдёте руководство по эффективной работе с научными статьями. В частности, мы остановимся на следующих темах:

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

Кто такой Эндрю Ын?


Эта статья основана на лекциях, которые читал Эндрю Ын. Я, кроме того, добавил сюда некоторые собственные рекомендации и полезные сведения, найденные в интернете.

Для начала хочу в двух словах рассказать о том, кто такой Эндрю Ын (Andrew Ng).

Эндрю Ын является доцентом Стэнфордского университета. Он, вероятно, самый известный (и обладающий самой большой зрительской аудиторией) преподаватель, читающий лекции в сфере машинного обучения. Эндрю, кроме того, является сооснователем Deeplearning.ai и Coursera.

Как люди приобретают полезные навыки?


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

Но мы — не студенты, хотя кто-то из вас, возможно, является студентом. Поэтому перед нами встаёт вопрос о том, как обычному человеку обзавестись навыками, необходимыми для чтения и глубокого понимания научных публикаций.

Методика подбора материалов для чтения


Талантливому человеку, который хочет трудиться в сфере машинного обучения, лучше всего на чём-то специализироваться. Например, достойно одобрения обладание общими сведениями из сферы машинного зрения (Computer Vision). Но тот, у кого есть специализированные знания и опыт использования основных методов решения задачи оценки положения объекта в пространстве (Pose Estimation, PE) будет выглядеть гораздо привлекательнее с точки зрения потенциального работодателя, которому нужен специалист соответствующего профиля.

Давайте, на примере задачи PE, разберём методику работы с научными публикациями по интересующей нас теме.

▍1. Подбор материалов


На первом шаге работы мы сформируем подборку ресурсов, относящихся к предмету нашего интереса. В понятие «ресурсы» входят научные публикации, статьи с Medium, материалы из блогов, видеозаписи, GitHub-репозитории и так далее.

Если поискать в Google по фразе pose estimation, в нашем распоряжении окажется набор ссылок на основные ресурсы, имеющие отношение к интересующему нас вопросу. На этом шаге работы нашей целью является сбор всего того, что нам может подойти. Это и видео с YouTube, и документация, касающаяся практической реализации интересующих нас механизмов машинного зрения, и, конечно, научные статьи. Тут, в идеале, не нужно ограничиваться каким-то определённым количеством ресурсов, которые вы считаете важными. Главное — составить итоговый список материалов, которые могут принести вам пользу.

▍2. Анализ материалов и оценка уровня их понимания


Здесь мы проведём анализ ресурсов, признанных ранее потенциально полезными и относящимися к интересующему нас вопросу. Очень важно учитывать то, что существует метод оценки уровня понимания материалов, включённых на предыдущем шаге работы в итоговый список. Эндрю Ын советует сделать таблицу, в которой можно указывать уровень понимания каждого из материалов. Выглядеть эта таблица может примерно так, как показано ниже.

Таблица ресурсов, используемая для оценки уровня их понимания

Рекомендуется постараться прочесть как минимум 10-20% содержимого каждого документа, добавленного в подобную таблицу. Это позволит ознакомиться с таким объёмом материала, которого хватит для того чтобы достаточно точно проверить то, насколько материал соответствует нашим нуждам.

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

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

У меня нет ответа на этот вопрос, а вот у Эндрю ответ есть.

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

Если речь идёт о понимании 50-100 материалов, это значит, что вы очень хорошо разбираетесь в вопросе.

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


Обновлённая таблица для оценки уровня понимания ресурсов

▍3. Краткое описание материалов


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

Теперь, после того, как мы нашли материалы, которые стоит прочесть, мы переходим к их чтению.

Чтение научной статьи


Когда что-то читают ради того, чтобы понять, одного прочтения материала недостаточно. Эндрю говорит, что чтение всей статьи за один присест, возможно, не лучший способ работы, позволяющий сформировать понимание материала.

Будьте готовы к тому, что вам, чтобы как следует освоить статью, придётся прочитать её как минимум три раза.

▍4. Первое прочтение


При первом прочтении статьи сосредоточьтесь на заголовке, аннотации и рисунках.

▍5. Второе прочтение


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

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

▍6. Третье прочтение


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

▍7. Следующие прочтения статьи


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

Тот, кто обычно читает научные статьи в информационных целях, и ради того, чтобы быстро ознакомиться с предлагаемыми ими методиками работы, может столкнуться с тем, что глубокое изучение статей отнимает у него очень много времени. Особенно — если речь идёт о нескольких десятках статей, которые нужно проработать.

Вот пример того, что я называю здесь «глубоким исследованием». Я прочитал эту статью по представленной здесь методике, разобрался в ней, а потом, на её основе, написал 4 собственные статьи (1, 2, 3, 4).

Вопросы, которые стоит задать самому себе при чтении статьи


Эндрю даёт нам список вопросов, которые следует задавать самому себе при чтении статьи. Эти вопросы, в целом, направлены на то, чтобы выявить понимание того, о чём вы читаете. Я использую следующие вопросы в качестве ориентиров, позволяющих мне не отклоняться от моей основной цели — понимания сути статьи.

Вот эти вопросы:

  1. Опишите то, чего пытается достичь автор статьи, или, возможно, то, чего он уже достиг.
  2. Если вы встречаетесь с новым подходом к решению задачи, с новой техникой или методикой, опишите их ключевые элементы.
  3. Что именно в статье вы считаете самым полезным для себя?
  4. Какие материалы, упомянутые в статье, вам хочется прочитать?

Дополнительные ресурсы, которые могут помочь в исследованиях


Мне, в поисках информации, очень помогли некоторые ресурсы, список которых я привожу ниже.
Вы вполне можете составить подобный список самостоятельно.

Итоги


Долговременные результаты даёт постоянная стабильная учёба, а не изучение чего-либо «набегами».

Эндрю Ын

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

Я, пользуясь методикой работы с научными статьями, предложенной Эндрю Ыном, планирую читать как минимум четыре научных статьи в месяц. Читать их до тех пор, пока не пойму. Если говорить честно, на то, чтобы прочесть и понять вышеупомянутую статью про LeNet, у меня ушло полторы недели. Но, чем больше я буду читать, тем быстрее и лучше это у меня будет получаться. Это относится не только ко мне.

Эндрю говорит, что постоянно носит с собой пачку статей, которые запланировал прочитать. Эндрю — известная личность в сфере машинного обучения. Я думаю, что тот, кто переймёт его привычки и методы изучения нового, может оказаться в большом плюсе.

Как вы читаете научные статьи?

Let's block ads! (Why?)

Разработчик из России стал соавтором стандартов безопасности для эпохи квантовых компьютеров

Специалист одной из российских IT-компаний стал одним из авторов стандарта информационной безопасности, который будет актуален тогда, когда злоумышленники будут активно использовать квантовые компьютеры для осуществления атак.

Как сообщает издание CNews, россиянин Валерий Смыслов, который работает в компании «Элвис-плюс», поучаствовал в создании стандарта безопасности в составе Инженерного совета интернета (Internet Engineering Task Force, IETF) —общественной организации, которая занимается разработкой стандартов, или «рабочих предложений» (Request for Comments, RFC) для интернет-среды.

IETF опубликовал стандарт безопасности, касающийся квантовых атак (RFC 8784), 1 июля. Помимо Валерия Смыслова, в его разработке также приняли участие специалисты компании. Как пишет CNews со ссылкой на представителей компании «Элвис-плюс», хотя механизм противодействия атакам с использованием квантовых компьютеров, описанный в новом стандарте, уже используется в ряде их продуктов, его массовое внедрение ожидается в будущем.

«Как известно, квантовые компьютеры способны взламывать криптографические алгоритмы с открытым ключом. Единственной причиной, почему это не происходит уже сейчас, является “игрушечная” размерность существующих на сегодняшний день квантовых компьютеров. Можно ли создать полноразмерный квантовый компьютер и, если да, то в какие сроки — исследователям пока непонятно, но если он будет создан, то все криптографические протоколы, использующие криптографию с открытым ключом (такие как цифровая подпись или выработка общего ключа по Диффи-Хеллману) окажутся под угрозой», — пояснили представители компании в комментарии изданию.

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

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

Let's block ads! (Why?)

Tsunami — масштабируемый сканер безопасности от Google

image

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


Идеология Tsunami

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

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

Кроме того, важно, чтобы качество обнаружения всегда было очень высоким. Чтобы решить эти проблемы, был создан Tsunami — расширяемый механизм сетевого сканирования для обнаружения уязвимостей высокой степени опасности с высокой степенью достоверности без проверки подлинности.


Принцип работы

"Под капотом" у сканера находятся две довольно известные утилиты — nmap и ncrack, которые позволяют разбить этапы работы на два этапа:

Первый и основной этап работы Tsunami — сканирование. Производится разведка периметра, включающая в себя поиск открытых портов и последующую проверку, для точного определения протоколов и служб, работающих на них (чтобы предотвратить false-positive срабатывания). Этот модуль основан на nmap, но также использует и дополнительный код.

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

Также, Tsunami оснащен расширяемым механизмом поддержки плагинов. Текущая версия сканера оснащена плагинами для проверки открытых UI (WordPress, Jenkins, Jupyter, Hadoop Yarn и так далее), а также слабых учетных данных. Для проверки "слабых" учетных записей используется утилита ncrack, которая помогает обнаружить слабые пароли, используемые различными протоколами и сервисами, включая SSH, FTP, RDP и MySQL.


Быстрый старт

Установить необходимые зависимости:

nmap >= 7.80
ncrack >= 0.7

Установить для проверки уязвимое веб-приложение, например unauthenticated Jupyter Notebook server. Самый простой вариант через образ docker:

docker run --name unauthenticated-jupyter-notebook -p 8888:8888 -d jupyter/base-notebook start-notebook.sh --NotebookApp.token=''

Запустить следующую команду:

bash -c "$(curl -sfL https://raw.githubusercontent.com/google/tsunami-security-scanner/master/quick_start.sh)"

The quick_start.sh содержит следующие этапы:


  • Клонирование репозиториев google/tsunami-security-scanner и google/tsunami-security-scanner-plugins в $HOME/tsunami/repos.
  • Компиляция и перемещение плагинов и jar файлов в $HOME/tsunami/plugins.
  • Компиляция и перемещение the Tsunami scanner Fat Jar в $HOME/tsunami.
  • Перемещение tsunami.yaml — примера конфига в $HOME/tsunami.
  • Пробуйте команды Tsunami для сканирования 127.0.0.1 с использованием ранее созданных настроек.

Контрибьюция

Несмотря на прямую связь с корпорацией, Tsunami не будет считаться принадлежащим Google брендом. Сообщество разработчиков будет совместно работать над сканером и совершенствовать его, результаты будут доступны всем желающим.


Страницы проекта

Репозиторий на github.
Репозиторий плагинов.

Let's block ads! (Why?)

Любовь, смерть, роботы и Пелевин

image

В прошлом году, вернувшись с тренировки, я засел перед компьютером, чтоб посмотреть пару забавных мемов про котиков. И, обнаружив новость о выходе нового сериала Любовь, смерть и роботы– «Love, Death & Robots», я лениво потрогал её мышкой — глянуть одним глазком.

Пришел в себя я под утро. С красными глазами, затекшим, от сидения в кресле телом — но совершенно счастливым.

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

При пересмотре сериала, мои впечатления, впрочем, были уже не столь радужны — во мне проснулась писательская зависть. «Почему такое не снимают в России — возмущенно бормотал я, — я бы подобрал рассказы для сериала ничуть не хуже!»

«Я сниму свой сериал! — сказал я, чтоб справиться с завистью, — точнее, соберу 18 рассказов, ничуть не уступающих подборке сериала».

И немедленно собрал. И тут же столкнулся с трудностями. Я собирался выложить рассказы со ссылками — чтоб читатели могли сразу их скачать. И обнаружил, что рассказы отсутствуют в продаже. Как класс. Несмотря на то, что все они были опубликованы на русском, купить их не представляется возможным.

Мы люди взрослые, и я понимаю, что читатели без труда найдут эти рассказы САМИ ЗНАЕТЕ ГДЕ. Но, это будет несправедливо, по отношению к коллегам писателям и переводчикам. Поэтому я предлагаю, если вы уж взялись читать, купить пару повестей из списка на амазоне — чтоб поддержать авторов.

Встречайте: Сериал Асты Зангасты: «Любовь, смерть, роботы и Пелевин!»

И Андрей закричал: «Я покину причал, если ты мне откроешь секрет!»
А Пелевин ответил: «Спокойно, Андрей — никакого Андрея здесь нет...»

  • Полёт на космическом корабле Уильям Бартон (Off on a Starship by William Barton) Шестнадцатилетний юноша случайно набредает на приземлившуюся летающую тарелку. Последствия — полёт в космос и знакомство с очень необычным роботом.
  • Немезида Артур Кларк Потерпевший крах диктатор пытается скрыться — и это получается неожиданно хорошо.
  • Оседлав крокодила Грег Иган (Riding the Crocodile by Gregory Mark Egan) Пара поспоспостпостлюдей исследуют загадочное космическое явление.
  • Очень холодная война Чарлз Стросс Советский Союз нарушает Дрезденское соглашение, запрещающее использование оружия Древних.
  • Вертячки, помадки, чушики, или Почтальон сингулярности Антон Иванович Первушин Попавший в руки российских спецслужб парень явно русский, явно из будущего и очевидно, страдает синдром Дауна.
  • Одиноко растущая женщина Ясутака Цуцуи Тоталитарный режим будущего очень буквально трактует слово «посадить».
  • Спячка Аластер Рейнольдс Привычный нам физический мир — не более чем ширма над настоящей реальностью.
  • Рой Брюс Стерлинг Повесть можно счесть продолжением фильма «Чужой» — она отвечает на ряд поставленных в фильме вопросов.
  • Микки Маус – олимпиец Томас Салливэн Современные допинговые скандалы — еще цветочки. То ли еще будет!
  • Либертарианская Россия Майкл Суэнвик Если я усну и проснусь через сто лет и меня спросят, что сейчас происходит в России, то я перескажу этот рассказ. Искать в авторском сборнике: «Ничего особенного», – сказал кот
  • Город Мёртвых Пол Дж. Макоули Странные формы жизни на другой планете не то чем кажутся!
  • Надежда на спасение Эдуардо Дельгадо Саино Очнувшийся на космическом корабле человек испытывает острое чувство дежавю.
  • Чоза грибы Леонид Каганов Принято считать, что автор не может придумать персонажа умнее, чем он сам. Рассказ успешно опровергает это правило.
  • Мера всех вещей Ричард Чведик В нашем мире вместе с нами живут крохотные, размером с кота, живые динозавры. Их вывели как игрушки — но они оказались неожиданно разумными, что привело к многим трагедиям.
  • Судовые крысы Родриго Гарсия-и-Робертсон Девушка подросток попадает в ужасную переделку.
  • Во дворце марсианских царей Джон Варли Вынужденные робинзонить на Марсе астронавты не выращивают картошку — у них есть занятия поинтересней!
  • Мариана Фриц Лейбер Идеальный рассказ для финала сериала! Вот и всё, дорогие мои! Вообще всё!

При написании текста использовались фрагменты аннотаций с сайта fantlab. На КПВД кадр из сериала.
Сцена после титров
Ну, а у меня новая повесть:

Первый огонёк зажегся на пустыре около МКАДа четыре года назад. Огромный, выше Останкинской телебашни столб голубого, призрачного пламени был виден из любой точки города, вызвав панику даже у привыкших ко всему москвичей.

Вскоре стало известно, что это артефакт инопланетной цивилизации, способный обеспечить перемещение между мирами. .

image

Прыжки через огонь

Let's block ads! (Why?)

Почему я не стала конвертироваться в фултайм в Google и пошла в Mckinsey в Лондон: расшифровка эфира

30 июня в 20:00 в нашем инстаграм-аккаунте выступила Влада Рау — Senior Digital Analyst в лондонском офисе McKinsey Digital Labs.
Она рассказала, почему она не пошла на фултайм в Google, как устроена работа в McKinsey и про свой путь в IT.
Делимся записью и расшифровкой эфира.

Меня зовут Влада, я работаю в Лондоне, в консалтинге McKinsey, занимают project/data engineering. Не знаю, многие ли слышали про такое понятие, но наша компания — часть «большой тройки»: McKinsey, Boston Consulting Group и Bain.

У нас есть несколько крупных отделов. Первый – это McKinsey Strategy. McKinsey Digital –тоже стратегия, только более digital-oriented; и внутри этот отдела есть Digital Ops – там я нахожусь. У нас работают ребята, у которых есть hands-on experience и skillset в определенных областях – product engineering, data engineering, дизайн, просто product/agile. У нас есть 2 основных типа проектов. Проектные работы – это когда к нам приходят компании-клиенты, чтобы мы решили их вопросы, и на это уходит от нескольких недель до месяцев, в зависимости от проекта.

Я занимаюсь именно data/product engineering, и это тоже бывает по-разному; сейчас я занимаюсь больше data analytics, то есть проекты — аналитические. В предыдущем году я занималась типом проектов, который называется digital business building – это когда внутри корпоративной структуры хотят создать новый digital asset – по сути, новую «дочку», чтобы быть более digital-innovative, digital transformation и так далее. Мы помогаем делать это с нуля, и это довольно интересный опыт для тех, кто, например, хочет в будущем сделать стартап, потому что это, по сути, и есть стартап, только в safe environment. Этот опыт действительно помогает вам в дальнейшем – то есть, вы не просто работаете fulltime в большой корпорации.

Работаю уже почти 2 года. До этого я два раза стажировалась в Google в дублинском офисе, официально была бизнес-интерном. У меня довольно интересный путь в IT, сейчас мы как раз об этом поговорим.

IT – это достаточно разношерстное понятие. Не обязательно уметь программировать или иметь какие-то необычные скиллы, чтобы работать в этих направлениях. Наверно, это одно из самых больших заблуждений – люди часто говорят: «это не мое, я не программист, я недостаточно технический человек». Кроме программистов, есть и project/product менеджеры, большие отделы маркетинга и другие интересные направления.

Изначально я хотела пойти в бизнес-менеджмент; когда все определялись с университетами в школе, я хотела получить business degree. Первое мое образование – это Высшая школа менеджмента СПБГУ по направлению «информационный менеджмент». Первые два года там – это general track, потом вы определяетесь с профилем. Можно пойти на финансы, маркетинг, логистику, HR, информационный менеджмент, международный менеджмент. Я поняла, что хочу уйти в IT-направление – чтобы было бизнес-направление, но в технической сфере. Это очень интересный сетап, потому что в какой-то момент карьеры уже не так важно, как хорошо ты кодишь, и более важными становятся softskills, навыки общения, стратегическое мышление, бизнес-логика и так далее.

Во время обучения в бакалавриате я поняла, что хочу иметь и технические навыки, потому что хотела идти как product manager. Я поступила в питерское отделение Школы анализа данных Яндекса, но не закончила его – было очень сложно совмещать разнопрофильное образование. Часто бывало так, что на занятиях говорили – «мы не будем это объяснять, это в универе проходят» — у меня было, по сути, две очень разных degree одновременно.

Я отучилась там два года и ушла в академ; формально, я могу сейчас восстановиться, но пока нет такой потребности. Конечно, необходимо было в какой-то момент пойти на стажировку, и я решила идти в большую IT-компанию; Facebook, Apple, Amazon, Netflix и Google – что-то из этого ряда.

Я решила пойти в Google; меня взяли не сразу – было два reject. После этого я подала еще одну заявку просто так («ну, что такое еще один reject»), и меня неожиданно позвали на интервью. Я была официальным бизнес-интерном; к моему удивлению, оказалось, что в бизнес-стажировках есть не только направление sales/marketing. Есть и другие: например, я формально была в people operations – это не HR как рекрутмент, а тот процесс, который начинается уже после того, как человек приходит в компанию и длится до того, как он ее покидает. Я занималась внутренними автоматизациями процессов. Это был довольно интересный опыт: у меня было очень много credibility от команды, я могла делать what I want. Команда мне доверяла, и мне было очень приятно уже после того, как я ушла со стажировки, видеть, что вещи, над которыми я работала, до сих пор существуют. Бывает же так, что на следующий день branch интерна удаляют. То есть, технически, я была бизнес-интерном, но немного писала код. Это был JavaScript и немного LaTeX – в первой стажировке, а во второй – больше JavaScript.

Но, в основном, было больше коммуникаций – то есть, как я уже говорила, для того, чтобы работать в IT, не нужно обладать супер-скиллами и быть богом C++. Важнее понимать, чего ты конкретно хочешь. IT – это очень разношерстная сфера, каждый может найти то, что ему по душе. Если кто-то говорить «IT – не мое», я думаю, что этот человек просто не инвестирует достаточно времени в research.

Как учить английский язык, чтобы быть способной обучаться? Какой должен быть минимальный уровень? Знаю, что B2, но одно дело – писать тест, а другое – усваивать инфу и обучаться.


Мне на этот вопрос сложно ответить, потому что я достаточно рано поняла, что без него – никуда. Когда я поступала в университет, я уже сдавала ЕГЭ по английскому, в школе был достаточно хороший уровень. Я еще занималась сама. В университете тоже — 3-4 курс, все на английском, то есть – очень хорошие инвестиции в язык. Единственное, что я точно могу посоветовать – делайте как можно больше всего на языке. Читайте книги, смотрите сериалы, как можно больше коммуницируйте на английском, разговаривайте с людьми на разные темы.

Даже если вы будете делать ошибки – от того, что вы стараетесь и улучшаете свой уровень, собеседникам будет приятно. Смотрите многоязычный YouTube – интервью, разные вещи. Я для себя отмечала фразы, которыми говорят native speakers, и пыталась их встраивать в свой язык. В общем, тут – только практика. Я знаю, что для стажера, в принципе, B1 достаточно – чтобы жить в стране полноценно и общаться с нативами. Я, например, единственная русскоязычная в отделе, вокруг меня – только нативы и люди с хорошим английским.

Иногда бывает так, что в high-tech командах – например, в лондонском офисе Facebook – каждый третий говорит по-русски, это уже inside-шутка у нас, и это сильно мешает интегрироваться в культуру и правильно ставить язык. Нужно постоянно заставлять себя, поддерживать мотивацию учиться и разговаривать на языке. Но, как уже сказано, B1 хватает для стажера. Первый screening-call от рекрутера – это тест на понимание и владение языком: способность отвечать на стандартные фразы и разруливать стандартные ситуации: может быть, здесь даже уровень C1.

Это еще одна вещь, которая отталкивает многих людей от карьеры за рубежом и вообще от карьеры в больших компаниях. Они всегда считают, что надо «еще подучиться», прежде чем начинать. У меня просто такое кредо по жизни: худшее, что может случиться – это всего лишь еще один reject, надо попытаться, чтобы потом не жалеть об упущенной возможности. Если вы хотите чего-то добиться – обязательно инвестируйте в это время и пробуйте.

С чего начать продвижение в IT, не имея computer science-образования?


Нужно сначала понять, что вам нравится. Я бы начала с research – что бывает в IT, что такое хайтех-индустрия, какие навыки нужны, чем вы хотите заниматься. Потом уже, если вы останавливаетесь на каких-либо кодинговых историях и хотите научиться писать на каком-то языке программирования – я бы выбрала себе side project.

То есть, если вы хотите разрабатывать приложения, придумайте себе use case и сделайте приложение под него. Сейчас на YouTube и в других местах есть огромное количество разных бесплатных материалов, и даже платных тоже. Возможности существуют, надо только понять, чего вы хотите, и двигаться в этом направлении. На YouTube точно есть Product Management School из Сан-Франциско, там очень хорошие лекции про product. Многие конференции сейчас делаются в видео-формате и являются бесплатными. Можно прямо сейчас загуглить, какие конференции проводятся в онлайне, какие есть митапы, и походить туда. Определите, что вам нравится, какие вам нужны навыки и знания, и набирайте их. То есть, необязательно получать computer science degree – у меня её нет, но я все равно пишу код на работе. Необязательно заканчивать computer science-центр или ШАД Яндекса, очень много всего – необязательно. Главное – иметь желание и вкладывать достаточное количество усилий и времени.

Какие особенности бизнес-стажировок в Google?


Они очень разные, и вам должно очень повезти с командой. Есть стандартные sales/marketing team – они тоже прекрасные, но далеко не всем это нравится. Есть очень большая cloud-команда, есть People ops-команда, есть GTech – разные внутренние решения для самого Google. Я очень рада, что попала именно в People ops. Моя первая стажировка заключалась в том, что мы автоматизировали процесс генерации offers – то есть, контрактов, которые вы потом подписываете. Получилось так, что я сэкономила компании много бизнес-дней – допустим, процесс раньше занимал 40 минут, а после моей стажировки – 5 минут.

То есть, бизнес-стажировки в Google больше связаны с бизнес-логикой и softskills. Другие виды стажировок (SRE, SWE) предполагают развитие технических навыков, но я не заметила большой сегрегации между бизнес-интернами и тех-интернами. Я могла посещать самые различные тренинги; я ходила на большинство in-person технических сессий в Дублине, пока была на стажировке, кроме, например, SRE Bootcamp. Еще одна особенность: если вы пытаетесь писать код, например, будучи бизнес-интерном, то иногда возникают траблы с доступом, потому что формально вы не software engineer; хотя эти вещи довольно легко решаются, и в этом нет особенной проблемы.

Следующая особенность – это процесс отбора. На бизнес-стажировке нет стандартных интервью, как cracking the coding interview. Понятно, что это не значит, что, если вы прошли его, то стажировка получена и больше ничего не надо делать. Если на SWE-стажировке есть 2-3 собеседования, то там это будет дополнительный разговор, может быть – про дизайн, но, скорее всего – нет; это скорее для того, чтобы определить, понимаете ли вы, о чем разговор, и какие-то поведенческие вопросы о том, «насколько вы в Google». Если переводить на русский, я бы сказала, что этот критерий определяет, насколько ты хочешь, чтобы этот человек был частью команды, насколько у него collaborative mindset. Потом уже можно будет смотреть дальше.

У меня на бизнес-стажировках было 3 или 2 интервью, если не считать звонок рекрутера. Они были больше кейсовые; кто проходил отборы в стандартный стратегический консалтинг, должен понимать, о чем я говорю. То есть, у меня есть какая-то ситуация, и в тот момент ребятам было уже примерно понятно, чем я буду заниматься. Это довольно интересная особенность Facebook и Google. То есть, в Facebook есть headcount: когда вы получаете оффер, на стажировку или в фуллтайм, вы уже понимаете, в какую команду вы идете. Из-за того, что есть этот headcount, многие ребята не могут найти себе команду и получить оффер на фуллтайм или стажировку в Google, когда в Facebook, если ты «smart enough», тебе дают оффер, и ты уже на месте разбираешься с командой, проектом и так далее. И стажеру, точно так же, 2-3 недели это говорят.

Ты программист?


Да, я программист. Сейчас я больше всего пишу на Python, сейчас это очень распространённый язык. В прошлом году я почти весь год писала на React Native, до этого – немного на Java.

В этом плане консалтинг интересен тем, что вы не можете предсказать, чем вы будете заниматься, есть элемент неопределенности. В первом месяце работы меня это сильно выбивало из колеи, потому что я не могла понять, какой skillset мне нужно развивать; я пошла на фуллтайм сразу после университета, и мне нужно было развиваться дальше в скиллах. В нашей команде я самая маленькая в плане industry experience, все остальные – это как минимум 6-7 лет работы в индустрии.

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

Зачем идти в McKinsey программистом?


Тут надо сказать, что я не считаю себя 100% SWE, тут где-то 50/50 Мне очень нравится заниматься продуктом, и, в то же время, мне очень хочется быть частью технической команды, писать код, и это тоже мне очень нравится. Когда я была в Google, я тоже не была 100% SWE, и тоже была 50/50: и писала код, и делать разные product-like вещи. В McKinsey мне очень понравилось, в том числе, потому, что здесь ты можешь поработать за короткий промежуток времени на разных проектах, в разных индустриях, с разными техстеками, с разными командами. То есть, ты не просто работаешь над одной задачей в лимитированной команде безумное количество времени – ты постоянно меняешь свой бэкграунд и, в принципе, начинаешь лучше понимать, что происходит в индустрии в целом. Ты не просто пишешь на одном фреймворке и языке, при этом зная только о том, что происходит конкретно в Google/Facebook, но не о том, как живет весь остальной мир.

Это был один из главных моих concerns, почему я захотела пойти в консалтинг: я хотела получить это industry diversity. Еще я очень хотела получить большой буст по softskills. Это тоже очень зависит от команды; я не хочу говорить ни за весь Facebook/Google, ни за остальные компании, но у меня сложилось впечатление, что там слишком safe environment, что все слишком “google-y”, что все слишком supportive и collaborative, и это не способствует прокачке softskills. Мне хотелось понять, как работают самые разные сетапы в плане команд, как общаться с самыми разными людьми. Когда ты меняешь команду каждые 2-3 месяца, это идеальная среда для прокачки таких навыков.

Как происходит смена стека? Никого не смущало отсутствие опыта в Python?


На Python я писала еще в универе, немного, и в ШАДе. В магистратуре я училась в Испании, там я писала на Python и на Arrow, у меня был год applied data science – business analytics и big data, мне не хотелось идти на pure computer science degree. Мне хотелось получить реальные скиллы, применимые в индустрии, и понимать, как это делать. У меня выбор пал на одну из программ магистратуры в AI Business School, и с Python у меня было все хорошо.

Другое дело, что, когда у нас начинался проект на React native, я бы не сказала, что у меня был офигенно большой опыт разработки; собственно, я бы сказала, что его было недостаточно, чтобы нормально перформить, но у меня был очень хороший support от команды и от leadership нашего лондонского офиса. Они сделали все, чтобы мне было комфортно быстро научиться и быстро pick up skills. У меня был support в начале проекта, чтобы я очень быстро набрала нужное количество навыков на нужном уровне. Понятно, что от тебя не ждут, чтобы ты, никогда не работав ранее на языке, сразу будешь писать на нем так, как будто писал всю жизнь. Но, мне кажется, в какой-то момент появляется такая степень экспертности, что тебе уже без разницы, какой язык. Конечно, есть оговорки: если ты всегда писал на Python или JS, ты не будешь сразу писать на production plus – хотя ты и сможешь довольно быстро разобраться и начинать перформить.

Понятно, что особенность моей работы – в том, что нужно постоянно учиться, you never know что будет дальше. В этом плане у меня довольно diverse должен быть техстек и вообще все, чем я занимаюсь, и мне нужно инвестировать огромное количество времени, в том числе и свободного (раньше это было и на выходных), когда я просто учусь чему-то новому.

Какие есть программы стажировки твоего отдела в McKinsey?


Это хороший вопрос, потому что именно с этого года мы начинаем SWE-стажировки. Мы это наконец-то продвинули. В этому году это будет только для лондонского офиса, мы еще не можем спонсировать визы, как это делает Google и Facebook через программу TR5. У них это настроенный процесс, а мы пока ищем больше locals. У меня в этом году будет интерн, и, может быть, в этом году мы, ближе к концу года, еще раз проведем что-нибудь такое. Я могла бы рассказать, как выглядят стажировки именно в McKinsey и чем они отличаются от SWE-стажировок в “FANG”, потому что это будет довольно интересно.

Когда я собеседовала, мы тоже делали небольшой алгоритмический check того, что люди умеют писать и люди шарят в алгоритмах, но, в то же время, мы даже больше смотрели на их mindset и на то, как они умеют разговаривать, run-ить проекты, чем они интересуются, в какую сторону они хотят идти, потому что у нас не 100% SWE.

Как там относятся к людям с PhD, не считают ли overqualified?


Отлично относятся к людям с PhD, мне кажется, для таких в McKinsey есть много всего. Есть более технические роли – если смотреть на аналитику, это будет Quantum Black. Эти ребята раньше были в стартапе, в какой-то момент McKinsey их купила – года 3-4 назад – и они занимаются heavy data analytics. Там все по классике: deep learning, нейросети, много всего. PhD – только плюс.

У нас есть ребята, которые скорее не digital hands-on, как я, а просто Сorporate Strategy; есть ребята, которые работают больше с healthcare industry и run-ят стратегии именно для public sector – для больниц. Сейчас у нас период пандемии, и несколько наших коллег вернулись обратно к практике, ушли работать в местную healthcare-систему (NHS) – они раньше несколько лет работали докторами, получили PhD в каких-то медицинских вещах.

У нас super-diverse в этом плане компании, люди с разными backgrounds находят здесь место. Потому, что мы работаем в самых разных индустриях на самых разных проектах, зачастую именно опыт в индустрии решает, что ты будешь полезен и сможешь привнести свой value и impact, нежели простое завершение бизнес-школы и знание необходимых фреймворков. Все фреймворки можно выучить, но industry experience очень сложно получить вместе с какими-то более специфичными знаниями для таких индустрий, как медицина.

Какое отношение к россиянам?


За эти два года все было отлично. У нас есть довольно большое комьюнити в Telegram, довольно много чатиков на самые разные темы, мы постоянно все встречаемся. Более технические ребята группируются вместе, другие просто общаются обо всем на свете, но в общем здесь довольно welcoming community. Никогда не было какой-то неадекватной реакции на то, что я из России, ни от коллег в McKinsey, ни в других компаниях. Мне кажется, тут большое проблема не в том, из какой ты страны, а в том, как ты разговариваешь и как ты себя позиционируешь, насколько ты пытаешься уважать чужую культуру и пытаешься интегрироваться в это общество.

Что спрашивали на стажировке в Google?


Это был определенный unique case, не SWE и не sales/marketing, который в основном бывает. У меня было case-oriented interview: то есть, мне говорили сразу про тот проект, в котором я буду участвовать.

Меня спрашивали специфичные вещи: так как я занимаюсь автоматизацией процессов, меня могли спросить, например, как с моей точки зрения выглядит весь отдел People Ops; говорили о том, какие есть отделы и команды, процессы – у меня этой информации не было, конечно, я рассказывала так, как видела. А потом говорят: на самом деле, устроено вот так, поехали дальше. И дальше спрашивали, например: смотрите, у нас есть процесс Х, он не слишком эффективен – как бы ты проводила автоматизацию, распределяла ресурсы, общалась со своими коллегами, собирала requirement? То есть, они изначально спрашивали, как я собираюсь устраивать свою работу. Это были кейсовые вещи. После этого меня спрашивали по многим behavioral вещам, потому что это бизнес-интервью; мне кажется, там именно behavioral-вопросам было отдельное целое интервью. Мне кажется, уже пора делать какой-то гайд по тому, как отвечать на такие вопросы, как делать свою историю. Потому что тут уже важнее не то, насколько у тебя много опыта, и какой ты эксперт, а то, как ты себя позиционируешь и как хорошо ты сможешь рассказать свою историю, чтобы люди поняли, насколько ты классный.

Когда у меня несколько раз было такое, что я была ментором у текущих студентов, и человек мне говорил, что он not smart enough, я говорила – подожди, давай все сейчас с тобой посмотрим, и мы писали красивый cover letter, и люди получали оффер. Тут, наверно, больше проблема в том, что мы не до конца верим в себя, и почему-то занижаем свои успехи и не можем грамотно все упаковать.

Расскажи про процесс отбора в McKinsey, как получить offer?


Процессы отбора в McKinsey очень разные, в зависимости от того, куда вы хотите попасть. Если мы говорим про corporate strategy – стандартный консалтинг, то там нужно подавать CV, и после этого вы делаете тест. Сейчас в московском офисе его заменили на digital assessment, в некоторых офисах — тоже; то есть, следующая ступенька – либо тест, либо digital assessment. После этого проходят два раунда интервью, по три в каждом. То есть, первый раунд – обычно проводится коллегами middle-уровня; есть кейсовая часть и behavioral-часть. Второй раунд – это leadership-level, и там тоже три интервью, и тоже кейсовая и behavioral-часть, но больше behavioral. Наверно, лучше всего посмотреть, как проходит отбор McKinsey, в официальных источниках: сейчас очень много проходит воркшопов от разных офисов. Например, в московском офисе они довольно активно ведутся, проходят постоянные тренинги, интервью и так далее; то есть, если есть желание, собрать эту информацию можно.

У меня тоже было 6 интервью, хотя это не было в формате раундов – они были размазаны во времени, так как у меня довольно специфичная area of expertise в инжиниринге. Кейсовые интервью были с техническим акцентом – то есть, меня могли и спросить какую-то часть бизнес-логики, и попросить написать часть кода. Писала я в основном на Python плюс немного SQL. Так как я больше собеседовалась на data, меня могли спрашивать и про некие Hadoop/Spark-специфичные вещи, и просто про Python, и про базы данных и так далее. Могли задать, например, такой вопрос: у нас есть клиент с определенной базой данных, которую нужно мигрировать в другую – как бы ты объясняла этот процесс, как бы ты делала трансфер, что бы ты делала с обучением и интеграцией этого в компанию? Какие бы use-case ты делала для других баз данных, как бы ты это обосновывала? То есть, это такой фулл-кейс, а не «напиши, пожалуйста, код».

Как интервьюеры относились к неоконченному курсу в ШАД, это не воспринималось как неумение доводить начатое до конца?


Нормально относились. Я говорила, что я получала это как minor degree, и что мне было физически сложно закончить его. У меня была довольно насыщенная жизнь в университете, я еще помогала организовывать конференции – например, в Школе менеджмента есть конференции «Менеджмент будущего», и еще были ивенты вроде TedEx. Потом я параллельно учила несколько иностранных языков – я еще говорю на французском, немецком и испанском. Не C1, но достаточно нормальный уровень. Сейчас я больше подтягиваю французский и испанский, чтобы через год-полтора работать на них. То есть, у меня CV говорило также и о том, что я проходила другие курсы, участвовала в чемпионатах и так далее.

Было понятно, что я ничего не бросила, просто не смогла совместить. Но вопросов о том, почему я не закончила курс, никогда не было – это все-таки просто дополнительно образование, а не университет. Я считаю, что те два года, которая я проучилась, многое мне дали и были большим толчком в моем развитии как программиста.

Зачем уходить в консалтинг, а не оставаться в Google?


Я уже упоминала: в основном это было industry diversity. Если я в дальнейшем хочу уйти в более product-oriented вещи, надо понимать, что происходит outside of Google. И техническое развитие, и softskills – это было очень важно, и на старте карьеры я бы сказала, что это хорошие starting point, и всегда, если я захочу, наверно, меня возьмут обратно – я не уверена, но что-то мне подсказывает, что да, потому что у меня были хорошие feedbackи.

Как поступить в зарубежную магистратуру?


Тоже очень сильно зависит от того, куда вы хотите. Не могу говорить за все магистратуры и страны, естественно. Есть много открытых ресурсов и сообществ, которые помогают с этим. То есть, overall вы выбираете магистратуры: есть там система грантов или нет; подаетесь на грант, если он есть (или стипендия), потом сдаете все необходимые экзамены. Обычно это базовое знание английского, и потом, в зависимости от магистратуры, либо GRE, или GMAT. GRE сдается на зарубежную магистратуру плюс зарубежное PhD, а GMAT – больше на бизнес-школы. То есть, если вы когда-нибудь захотите пойти на MBA, то GMAT – это тот экзамен, к которому вы будете долго готовиться (ну, или недолго – в зависимости от того, как напишете первый пробный).

В моем случае я понимала, что хочу взять еще один дополнительный год на обучение, я не хотела идти сразу на fulltime после бакалавриата. Я могла остаться в магистратуре в Питере, но это было less preferable – я хотела еще получить новый experience, хотела что-то более техническое, но не pure computer science, при этом – за рубежом. Я хотела получить multi-cultural experience, поучиться не только с русскими студентами и преподавателями.

У нас в магистратуре было два потока, в каждом – примерно по 50 человек, и в моем было 55 человек и 40 национальностей. То есть, из всех топовых стран ребята, и ты с ними общаешься, понимаешь, кто как реагирует, как выстраивать collaborative mindset в нормальном понимании. Это была очень хорошая практика. Еще вы сдаете дополнительно IELTS/ TOEFL на знание английского языка, если вы не учились и не работали в странах, где живут native speakers (UK, Канада, США, Австралия, Ирландия). То есть, я сдала этот экзамен, потом GMAT, потом подала в магистратуру все документы и ждала решения. После этого я подавала на стипендию. В зависимости от университета, иногда покрывается абсолютно все, или покрывается часть. В моем случае покрывалось только 20% обучения, и после этого я нашла еще один дополнительный women-in-tech-грант, подала в этой магистратуре на него и получила еще 20%. В итоге, моя стипендия покрывала 40% обучения, и все остальные расходы были на мне. Также, в зависимости от университета, общежитие может предоставляться или не предоставляться. У меня этого не было, и я снимала жилье в Испании.

Моя магистратура была 10 месяцев. Есть разные другие варианты: full-time магистратура, когда учитесь в кампусе, part-time магистратура, когда 3-4 месяца обучение проходит online, а потом – 2-3 недели in person в какой-нибудь стране. Есть такие, когда чуть ли не каждые полгода — в другой стране, и всего – полтора года; то есть, три больших модуля in person, в которых вы несколько недель учитесь, например, в Испании или Дубае.

Все очень зависит от того, куда вы хотите, какие у вас есть потребности, насколько вы хотите в это все инвестировать – в том числе, финансово. Сначала я думала, хочу ли я оплачивать магистратуру или нет, но потом посчитала, что, если бы я пошла просто на full-time в Google, например, после бакалавриата, то за два года магистратуры плюс потом full-time мое обучение бы отбилось. Я поняла, что это хорошая инвестиция денег и времени и приняла решение. Мне кажется, что это хороший опыт, даже если вы не хотите ехать за рубеж в магистратуру: во многих университетах есть возможность exchange-семестра в университетах-партнерах.

Сейчас основные российские университеты стараются делать такие опции, и это интересно хотя бы попробовать и подать. Как я уже говорила, основная вещь, почему я достигла довольно многих вещей в своей жизни – это то, что я не боялась пробовать подавать. Худшее, что могло бы случиться – это всего лишь reject. Пробуйте, старайтесь, делайте работу над ошибками, понимайте, почему вас не взяли, просите feedback.

Diversity in tech, самая больная тема – особенно сейчас, в век толерантности, когда боишься сказать что-нибудь. Как создавать комьюнити?


На данный момент мы уже 3 года ведем с еще двумя девушками комьюнити. Сейчас это сообщество в VK, иногда у нас возникают идеи создать полноценное комьюнити в оффлайне, но пока, из-за того, что мы работаем фуллтайм в разных странах, это остается в онлайне. Мне хотелось бы в какой-то момент сделать некое safe place для людей, которые могут черпать вдохновение из какого-либо источника, понимать, какие возможности существуют, и чтобы у тебя были ролевые модели, на которые можно было бы ориентироваться. Чтобы, когда что-то не получается, ты бы мог сказать: у них же получилось, значит, у меня тоже получится, я справлюсь. Наверно, из-за этого мы и создали комьюнити несколько лет назад. Пока у нас все получается, мы потихоньку двигаемся, много планов на июль-август.

Мне кажется, карантин на меня хорошо повлиял, я смогла многое переосмыслить за время самоизоляции – чего я хочу от жизни, от блогов, которые я веду, от проектов, которые я помогаю вести. То есть, сейчас мы планируем сделать что-то наподобие менторской программы, чтобы были люди, которые тебе помогают и ведут тебя за руку или хотя бы саппортят. Но пока это просто онлайн-проект. Если у вас есть идеи, или вы хотите стать частью или contribute, то any time welcome. Вы можете написать мне в личку в любой из социальных сетей, в которых меня можно найти, и мы сможем все обсудить. Я стараюсь отвечать в течение нескольких дней (правда, в Telegram response rate будет медленнее, чем в Facebook или VK); меня найти просто, Влада Рау – довольно unique combination.

На самом деле, мне кажется, что сейчас – оглядываясь на то время, когда я училась в бакалавриате и только-только начинала, лет 7 назад – стало гораздо больше возможностей, гораздо больше саппорта, гораздо больше open-minded людей, которые могут рассказать про свой путь, научить чему-то, поделиться полезными ссылками. Я бы сказала, что сейчас именно то время, когда эти возможности нужно использовать по максимуму. Не бойтесь спрашивать, не бойтесь писать людям. Очень многие могут ответить: да, конечно, я с радостью с тобой поговорю, с радостью сделаю refer, с радостью еще что-то расскажу или познакомлю со своим знакомым, который занимается именно вот этим.

В июле мы хотим сделать серию встреч и спикеров. Сейчас мы находимся в формате scheduling everything, у всех разные таймзоны и все нужно синхронизировать, но скоро пойдут анонсы. У меня еще есть Telegram-канал, иногда там бывает что-то полезное; правда, сейчас я чаще пишу какие-то свои day-to-day вещи.

Расскажи про salary negotiation


Очень интересный вопрос. Я, честно говоря, не знаю, как на него отвечать. Я, в принципе, всегда знала, куда иду – например, когда я собеседовалась на первую стажировку, у меня не было других офферов. Точнее, были, но это были российские компании. Не было competing offer, например, из Facebook – я не могла сказать: «ох, вы знаете, меня хочет весь FANG, хотите ли вы мне поднять зарплату стажера?» А когда я собеседовалась на фуллтайм в McKinsey, одновременно я собеседовалась и в другую компанию, где меня готовы были взять, но я сделала выбор в пользу McKinsey.

У нас отсутствует pay gap, стандартная зарплата для позиции, разница – только в бонусе в зависимости от performance. McKinsey – довольно топовая компания, и многие люди туда хотят. Я поняла, что, если я начну пытаться делать salary negotiation, мне скажут – у нас стандартный процесс, вот такие цифры, are you in or not?

Кроме того, изначально я собеседовалась на позицию выше, и в job description упоминалось 8 лет опыта – при том, что я new grad. Они были готовы перевести меня в Лондон, минуя московский офис, заняться моей визой – это супер-нестандартный кейс для McKinsey, обычно они не переводят в Европу людей без industry experience. Они сделали downgrade позиции, сделали под меня headcount и перевод в Лондон – после такого как-то не ощущаешь себя в позиции для salary negotiation. Я знаю людей, которые собирали веера из офферов – может быть, с ними потом получится сделать сессию, и они расскажут свои tips and tricks.

А какой длительности контракт у тебя?


У меня сейчас рабочая виза на 3 года, потом ее продлят. Я уже permanent, не contractor – я получила нормальную fulltime-позицию.

Я считала, что была не в том положении, чтобы делать salary negotiation, но есть ребята, которые очень хорошо это делают. Рассказывают такие cool story – я заслушиваюсь. Наверно, это такой отдельный скилл, и над ним нужно работать – я не могу посоветовать ничего, кроме того, что точно не нужно врать о том, что у вас есть гора offers. Рекрутеры имеют свойство дружить между собой и переходить между компаниями, и можно заработать бан.

Если у вас есть другие офферы – можно сказать об это, если нет – значит, нет. Быть transparent as much as possible, особенно, если у вас есть competitive offers – следует. Если вы спокойно и прозрачно расскажете про ситуацию и скажете, какие у вас критерии и почему вы предпочтете одну компанию другой – могут появиться интересные предложения, которые изначально не озвучивались, но являются как раз тем, чего вы хотели.

How often do you travel?


Очень зависит от проекта. Work-life balance тоже сильно зависит от проекта. В лондонском офисе у нас очень хорошо с mental health. Long hours — это не значит, что ты работаешь эффективно: можно работать с 9 до 19, и это будет гораздо результативнее, чем с 9 до 23, потому что тогда ты можешь успевать что-то еще, и enjoy your life.

В этом плане мне нравится европейский менталитет тем, что работа – это не самое главное в жизни. То же самое касается traveling – когда ты выбираешь проект, ты изначально понимаешь, насколько это будет travel, и что за location. Когда я приходила сюда, я считала, что, когда у тебя появляется семья, когда у тебя появляются дети – это совсем не sustainable, и в какой-то момент придется выбирать, но сейчас я общаюсь с людьми старше меня, и они говорят, что все обсуждаемо. Тебе идут навстречу, если у тебя есть дети и семья. Особенно сейчас, когда все поняли, что, вообще-то можно работать из дома. Если тебе так хочется, то можно работать remotely; всегда есть какие-то решения проблем. Мне очень нравится, что McKinsey слушают сотрудников – они заинтересованы в том, чтобы был комфортный сетап для работы. Но если очень хочется travelling – можно найти проект, в ходе которого ты будешь постоянно это делать.

Какая градация в компании?


У нас есть digital analyst, senior digital analyst, specialist, expert, associated partner, partner, senior partner; в corporate-треке это будет business analyst и так далее. В паблике в VK это расписывается. Лучше посмотреть в официальных источниках – все зависит от позиции.

А что дальше?


Следующий прямой эфир пройдет в ближайший вторник, 14 июля в 20:00.
Отвечать на ваши вопросы в прямом эфире, в этот раз будет Александр Ловягин, Senior Product Designer в Arrival Mobility, который работает над производством электротранспорта: автомобилей, автобусов, вэнов нового типа. Эфир пройдет в нашем инстаграм-аккаунте.

Задать ему вопрос можно в комментариях к этому посту.



Что было ранее


  1. Илона Папава, Senior Software Engineer в Facebook — как попасть на стажировку, получить оффер и все о работе в компании
  2. Борис Янгель, ML-инженер Яндекса — как не пополнить ряды стремных специалистов, если ты Data Scientist
  3. Александр Калошин, СEO LastBackend — как запустить стартап, выйти на рынок Китая и получить 15 млн инвестиций.
  4. Наталья Теплухина, Vue.js core team member, GoogleDevExpret — как пройти собеседование в GitLab, попасть в команду разработчиков Vue и стать Staff-engineer.
  5. Ашот Оганесян, основатель и технический директор компании DeviceLock — кто ворует и зарабатывает на ваших персональных данных.
  6. Илья Кашлаков, руководитель фронтенд-отдела Яндекс.Денег — как стать тимлидом фронтендеров и как жить после этого.
  7. Сания Галимова, маркетолог RUVDS — как жить и работать с психиатрическим диагнозом. Часть 1. Часть 2.

Let's block ads! (Why?)

[Из песочницы] Байесовские сети при помощи Питона — что и зачем?

Дисклеймер: данная статья является адаптированным переводом. Оригинал можно прочесть здесь.

Байесовские сети при помощи Питона — объяснение с примерами


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

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

Структура статьи


  • Что такое Байесовская сеть?
  • Что такое направленные ациклические графы?
  • Какая математика лежит в Байесовских сетях
  • Пример, отражающий идею Байесовской сети
  • Суть Байесовской сети
  • Байесовская сеть в Питоне
  • Применение Байесовских сетей

Погнали.

Что такое Байесовская сеть?


Байесовские сети входят в категорию вероятностных графических моделей (ВГМ). ВГМ используются для вычисления изменчивости для применения в концепциях вероятности.
Общепринятое название Байесовских сетей — Глубокие сети. С их помощью моделируются направленные ациклические графы.

Что такое направленные ациклические графы?


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

Ациклический == не имеющих направленных циклов. В контексте графов это прилагательное означает, что начиная путь от одной точки, мы пройдем не полностью всю схему графа, а только её часть. (То есть, например если мы начнем с узла 2 на картинке, мы точно не попадем в узел 1).

Что же моделируют эти графики и какое выходящее значение дают?

Модели неопределенных направленных графов в том числе базируются на изменении вероятностного происхождения события для каждого из рандомных значений. Для представления и интерпретации каждого значения применима таблица условной вероятности и, таким образом мы можем смоделировать разветвление вероятности последовательно-происходящих событий.

Всё ок. Я тоже сначала запуталась. Для пущего понимания разберем математическую составляющую Байесовских сетей.

Математика Байесовских сетей


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

Что такое условная вероятность?

Что такое совместное среднее распределение вероятностей?

Условная вероятность

Условная вероятность некоторого Х события — это численное значение вероятности того, что событие Х произойдет при условии, что некоторое событие У уже произошло.

Стандартная формула вероятности для одного значения (не приводится в статье): P(X) = n(x) / N, где n — исследуемые события, а N — все возможные события.

Для двух значений применимы следующие формулы:

Если Х и У зависимые события:
P (X или Y) = P (X ⋂ Y) / P (Y), пересечение вероятность X и У / на вероятность У. (Знак “⋂” в числителе означает пересечение вероятностей)

Если события Х и У независимы:
P(X или Y) = P (X), то есть наступление исследуемых событий равновероятно друг другу.

Совместная вероятность

Совместная вероятность — определение статистической меры для двух или более событий, происходящих единовременно. То есть события Х, У и, допустим С происходят вместе и мы отражаем их совокупную вероятность, используя значение P(X ⋂ У ⋂ С).

Как же это работает в Байесовских сетях? Разберемся на примере.

Пример, отражающий суть Байесовской сети


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

Оценка складывается из:

  • Уровня сложности экзамена (е): дискретная переменная с двумя градациями (тяжелый, лёгкий)
  • IQ студента: дискретная переменная с двумя градациями (низкий, высокий)

Полученное значение оценки будет использоваться в качестве предиктора (предсказательного значения) вероятности поступления студента или студентки в университет.

При этом на допуск к поступлению также будет влиять переменная IQ.

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

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

Совокупная вероятность: $inline$p(a, m, i, e, s) = p(i)*p(e)*p(s|i)*p(a|m)*p(m| i,e)p(a, m, i, e, s) = p(i)*p(e)*p(s|i)*p(a|m)*p(m| i,e)$inline$

На иллюстрации:

p(e) — распределение вероятностей для градаций переменной экзамен (влияет на оценку p(m|i,e)))

p(i) — распределение вероятностей для градаций переменной IQ (влияет на оценку p(m|i,e)))

p(m |i, e) — распределение вероятности для градаций оценок, базирующаяся на уровне IQ и сложности экзамена (зависит от p(i) и p(e))

p(s| i) — коэффициенты вероятности для способностей студента, базирующиеся на уровне его IQ (зависит от переменной IQ p(i))

p(a | m) — вероятность зачисления студента в университет, базирующаяся на его оценках p(m|i,e)

Здесь напомню, что свойство ациклического графа — отражение взаимосвязи. На рисунке мы четко видим, как родительские узлы влияют на дочерние и как дочерние зависят от родительских.

Отсюда вырисовывается формулировка множества значений, генерируемых при помощи Байесовских сетей.

Суть Байесовской Сети


Где вероятность X_i зависит от вероятности соответствующего родительского узла и может быть представлена любым рандомным значением.

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

Байесовская Сеть в Питоне


Давайте рассмотрим применение Байесовской сети к задаче, именуемой “парадокс Монти Холла”.

Суть: представьте, что вы участник апдейт-формата игры “поле Чудес”. Барабан больше не крутиться — теперь вы должны не прилагать свою F, а играть с p.

Перед вами три двери, за которыми равновероятно может расположиться один автомобиль. Двери же, за которыми нет автомобиля приведут вас к козам.
После выбора, ведущий из оставшихся открывает ту, что ведет к козе (например, вы выбрали дверь 1, значит ведущий открывает либо 2, либо 3 дверь) и предлагает вам сменить выбор.

Вопрос: шо делать?

Решение: изначально вероятность выбрать дверь с автомобилем = 33%, а с козой = 66%.

  1. Если вы попали в 33%, смена двери ведет к проигрышу => вероятность выиграть == 33%
  2. Если попали в 66% смена ведет к выигрышу => вероятность выиграть == 66%

С точки зрения математической логики, смена двери совокупно в 66% процентах ведет к выигрышу, а в 33% — к проигрышу. Следовательно верная стратегия — менять дверь.
Но мы тут о сети говорим, да и дверей может быть очень много, поэтому переложим решение в модель.

Построим направленный ациклический граф с тремя узлами:

  • Дверь с призом (всегда с авто)
  • Выбираемая дверь (либо с авто, либо с козой)
  • Открываемая дверь в событии 1 (всегда с козой)

Чтение графа:

На дверь, которую откроет Монти строго влияют две переменные:

  • Дверь, выбираемая гостем (вами) тк Монти 100% НЕ откроет ваш выбор
  • Дверь с призом, тк Монти всегда открывает непризовую дверь.

По математическим условиям классического примера приз равновероято может быть расположен за любой из дверей, ровно как и вы равновероятно можете выбрать любую дверь.
#Импорт пакетов для работы
import math
from pomegranate import *
 
# Отражаем вероятность события "Гость выбирает дверь" (равновероятно одну из 3х)
guest =DiscreteDistribution( { 'A': 1./3, 'B': 1./3, 'C': 1./3 } )
 
# Отражаем вероятность события "За дверью есть приз" (равновероятно за одной из трёх)
prize =DiscreteDistribution( { 'A': 1./3, 'B': 1./3, 'C': 1./3 } )
 
# Поскольку дверь, которую выберет Монти зависит от двух други,  для данной переменной 
# строим таблицу распределния вероятностей
monty =ConditionalProbabilityTable(
[[ 'A', 'A', 'A', 0.0 ],
[ 'A', 'A', 'B', 0.5 ],
[ 'A', 'A', 'C', 0.5 ],
[ 'A', 'B', 'A', 0.0 ],
[ 'A', 'B', 'B', 0.0 ],
[ 'A', 'B', 'C', 1.0 ],
[ 'A', 'C', 'A', 0.0 ],
[ 'A', 'C', 'B', 1.0 ],
[ 'A', 'C', 'C', 0.0 ],
[ 'B', 'A', 'A', 0.0 ],
[ 'B', 'A', 'B', 0.0 ],
[ 'B', 'A', 'C', 1.0 ],
[ 'B', 'B', 'A', 0.5 ],
[ 'B', 'B', 'B', 0.0 ],
[ 'B', 'B', 'C', 0.5 ],
[ 'B', 'C', 'A', 1.0 ],
[ 'B', 'C', 'B', 0.0 ],
[ 'B', 'C', 'C', 0.0 ],
[ 'C', 'A', 'A', 0.0 ],
[ 'C', 'A', 'B', 1.0 ],
[ 'C', 'A', 'C', 0.0 ],
[ 'C', 'B', 'A', 1.0 ],
[ 'C', 'B', 'B', 0.0 ],
[ 'C', 'B', 'C', 0.0 ],
[ 'C', 'C', 'A', 0.5 ],
[ 'C', 'C', 'B', 0.5 ],
[ 'C', 'C', 'C', 0.0 ]], [guest, prize] )
 
d1 = State( guest, name="guest" )
d2 = State( prize, name="prize" )
d3 = State( monty, name="monty" )
 
#Создаём Байесовскую сеть
network = BayesianNetwork( "Solving the Monty Hall Problem With Bayesian Networks" )
network.add_states(d1, d2, d3)
network.add_edge(d1, d3)
network.add_edge(d2, d3)
network.bake()

Во фрагменте значения:
  • А — дверь, выбранная гостем
  • B — призовая дверь
  • С — дверь, выбранная Монти

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

Подготовив данные, создаём Байесовскую сеть.

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

Приступаем к предсказаниям.

beliefs = network.predict_proba({ 'guest' : 'A' })
beliefs = map(str, beliefs)
print("n".join( "{}t{}".format( state.name, belief ) for state, belief in zip( network.states, beliefs ) ))
 
guest A
prize {
"class" :"Distribution",
"dtype" :"str",
"name" :"DiscreteDistribution",
"parameters" :[
{
"A" :0.3333333333333333,
"B" :0.3333333333333333,
"C" :0.3333333333333333
}
],
}
 
monty {
"class" :"Distribution",
"dtype" :"str",
"name" :"DiscreteDistribution",
"parameters" :[
{
"C" :0.49999999999999983,
"A" :0.0,
"B" :0.49999999999999983
}
],
}

Разберем фрагмент на примере переменной А.

Допустим, гость выбрал её (А).
Событие “за дверью есть приз” на этапе выбора двери гостем имеет распределение вероятностей == ⅓ (тк каждая дверь равновероятно можем быть призовой).

Далее добавим значение вероятностей двери быть призовой на этапе, когда дверь выбирает Монти. Поскольку мы не знаем, призовую ли дверь исключили собственным (гостевым) выбором на шаге 1, вероятность двери быть призовой на данном этапе распределиться 50/50

beliefs = network.predict_proba({'guest' : 'A', 'monty' : 'B'})
print("n".join( "{}t{}".format( state.name, str(belief) ) for state, belief in zip( network.states, beliefs )))
 
guest A
prize {
"class" :"Distribution",
"dtype" :"str",
"name" :"DiscreteDistribution",
"parameters" :[
{
"A" :0.3333333333333334,
"B" :0.0,
"C" :0.6666666666666664
}
],
}
monty B

На этом этапе мы модифицируем входные значения для нашей сети. Теперь она работает с распределением вероятностей, полученным на шагах 1 и 2, где
  • шансы быть призовой у двери, выбранной нами, не изменились (33%)
  • шансы быть призовой у двери, которую открыл Монти (В) аннулировались
  • шансы быть призовой у двери, которая осталась без внимания приняли значение 66%

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

В примере с тремя узлами, несомненно, хватает расчетов вручную, но при увеличении числа переменных, узлов и факторов влияния — Байесовская сеть способна решить задачу прогностического значения.

Применение Байесовских сетей


1. Диагностика:
  • предсказание наличия болезни на основе симптоматики
  • моделирование симптоматики для исходной болезни

2. Поиск в Сети интернет:
  • формирование выдачи на основе анализа пользовательского контекста (намерений)

3. Классификация документов:
  • спам-фильтры на основе анализа контекста
  • распределение документации по категориям/классам

4. Генная инженерия
  • моделирование поведения сетей регуляции генов на основе взаимосвязей и взаимоотношений сегментов ДНК

5. Фармацевтика:
  • мониторинг и прогностическое значение допустимых доз

Изложенные выше примеры — факты. Для полнного понимания релевантно попредставлять, на каком этапе подключается создание Байесовской сети и из каких узлов состоит граф, её описывающий.

Задача о парадоксе Монти Холла — лишь фундамент, который позволяет “на пальцах” проиллюстрировать работу цепей, основанных на комбинации зависимого и независимого распределения вероятностей. Надеюсь, у меня это получилось.

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

Let's block ads! (Why?)

Специалисты Microsoft не будут заниматься поддержкой PHP 8.0 для Windows

9 июля 2020 года сервисный инженер и менеджер по проектам PHP в Microsoft Дейл Хирт (Dale Hirt) предупредил сообщество разработчиков PHP, что компания не собирается заниматься поддержкой новых версий PHP, включая 8.0 и выше, для Windows.
В настоящее время специалисты Microsoft занимаются поддержкой, исправлением ошибок и элементами безопасности версий PHP 7.2, 7.3 и 7.4 для Windows. Причем поддержка PHP 7.2 закончится в ноябре этого года, а PHP 7.3 и 7.4 еще будут поддерживаться Microsoft не менее года.

Представитель сообщества разработчиков PHP ответил Microsoft, что сообщество глубоко признательно компании за проделанную их специалистами работу по поддержке PHP на Windows на протяжении многих лет. Также в сообществе разработчиков PHP сообщили, что примут все необходимые меры, чтобы найти в ближайшее время альтернативный вариант для организации поддержки PHP 8.0 и выше для Windows, например, своими силами.

На текущий момент идет альфа-тестирование ветки PHP 8.0. Уже выпущены 8.0.0 alpha1 и alpha2. Официальный выход PHP 8.0 ожидается в ноябре этого года.

Let's block ads! (Why?)