Искусственный интеллект & Машинное обучение

Разделы сайта


Какую программу или код можно назвать самыми сложными из когда-либо написанных?

Оригинал. Перевод на хабре:

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

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

Сначала червь появляется на USB диске. Кто-то мог найти диск, лежащий на земле, получить его по почте и заинтересоваться его содержанием. Как только диск вставлялся в компьютер c Windows PC, без ведома пользователя, червь автоматически запускал себя и копировал на этот компьютер. Существовало как минимум три способа, с помощью которых он мог себя запустить. Если не работал один, он пробовал другой. Как минимум два из этих методов запуска были абсолютно новыми и оба использовали две независимых, секретных ошибки в Windows о которых никто не знал до того момента, как появился этот червь.

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

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

Затем червь проверяет, может ли он выйти в Интернет. Если может, он пытается посетить сайты www.mypremierfutbol.com или www.todaysfutbol.com. В то время эти серверы были в Малайзии и Дании. Он открывает зашифрованный канал связи и сообщает этим серверам, что новый компьютер успешно захвачен. Зачем червь автоматически обновляет себя до самой новой версии.

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

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

Червь, о котором мы говорим очень сложный. И мы ещё даже не начали.

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

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

Червь ищет прикреплённые промышленные электрические моторы от двух конкретных компаний. Одна из этих компаний в Иране, а другая в Финляндии. Моторы, которые он ищет, называются «частотно-регулируемые приводы». Они используются для управления промышленными центрифугами. С помощью центрифуг можно очистить множество химических элементов.

Например, уран.

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

Но нет. Это сложный червь. И у червя есть другие планы.

Как только он захватил все центрифуга в твоем заводе… червь просто засыпает.

Проходят дни. Или недели. Или секунды.

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

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

В то же время, он увеличивает давление газа в этих центрифугах. Этот газ называется UF6. Очень вредная штука. Червь изменяет давление этого газа чуть-чуть за пределами безопасных значений. Ровно для того, чтобы при попадании газа в центрифуги во время работы появлялся небольшой шанс того, что он превратится в камни.

Центрифуги не любят работать слишком быстро или слишком медленно. И камни им тоже не нравятся.

Но у червя остался последний трюк. И он гениален.

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

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

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

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

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

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

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

… для этого червю Stuxnet пришлось стать самой сложной программой из когда-либо написанных.


Курсы, учебные пособия и аналитические статьи по анализу данных и машинному обучению

  • Открытый курс OpenDataScience по анализу данных и машинному обучению.
  • Курс Learning From Data (Introductory Machine Learning) Калифорнийского технологического института (Caltech).
  • Курс "CS229 - Machine Learning" Стэнфордского университета.
  • Курс "Theories of Deep Learning (STATS 385)" Стэнфордского университета.
  • Онлайн учебник "Deep Learning" Массачусетского технологического института. Авторы: Ian Goodfellow, Yoshua Bengio, Aaron Courville
  • Intel® AI Academy. Академия искусственного интеллекта Интел.
  • Введение в машинное обучение с tensorflow.
  • 36 материалов о нейросетях: книги, статьи и последние исследования от Neurodata Lab.
  • Капсульные сети. Исследователи представили альтернативу традиционным нейронным сетям. Источник: MIT Technology.
  • Подборка открытых датасетов для машинного обучения.
  • Теория вероятностей и математическая статистика

    Линейная алгебра.

    Справочные пособия для изучения языка Python. NumPy.

    Специальные функции

    Предел последовательности. Предел функции одной переменной. Замечательные пределы.

    Решение сложных задач на нахождение предела (без применения правила Лопиталя и формулы Тейлора).

    Свойства пределов:
    {01} $\lim_{n\to b} a^{f(x)} = a^{\lim_{n\to b} f(x)}$ при a > 0;
    {04} $\lim_{x\to a} C = C = const$
    {09} $\lim_{x\to a} {\left({f(x)}+{f(y)}\right)}$ $=$ $\lim_{x\to a} {f(x)} + \lim_{x\to a} {f(y)}$
    {10} $\lim_{x\to a} C {f(x)}= C \lim_{x\to a} {f(x)}$
    Замечательные пределы:
    {02} $\lim_{x\to 0} \frac{\sin x}{x}=1$ Первый замечательный предел
    {03} $\lim_{x\to\infty} \left({1}+\frac{1}{x}\right)^x=e$ или $\lim_{x\to 0} \left({1}+{x}\right)^{\frac{1}{x}}=e$ Второй замечательный предел
    {05} $\lim_{x\to 0} \frac{a^x-1}{x}= \ln a$
    {12} $\lim_{x\to 0} \frac{e^x-1}{x}= 1$
    Свойства логарифмов:
    {06} $e^{\ln x}=x$
    {07} $\ln {x^p}=p\ln x$
    {08} $\ln \frac{x}{y} =\ln x -\ln y$
    {11} $\ln {x}{y} =\ln x +\ln y$
    Пример №1: $\lim_{x\to 0} \left(\frac{\cos x}{1+\sin x}\right)^\frac{1}{x}$ = применяя: $a^{-n}=\frac{1}{a^n}$, то = $\lim_{x\to 0} \left(\frac{1+\sin x}{\cos x}\right)^{-1\frac{1}{x}}$ = $\lim_{x\to 0} \left(\frac{1}{\cos x}+\frac{x*\sin x}{\cos x*x}\right)^{-1\frac{1}{x}}$ = применяя {02} = $\lim_{x\to 0} \left(\frac{1}{\cos x}+\frac{x}{\cos x}\right)^{-1\frac{1}{x}}$ = поскольку: $\cos 0=1$, то = $\lim_{x\to 0} \left({1}+{x}\right)^{-1\frac{1}{x}}$ = $\lim_{x\to 0} \left({1}+{x}\right)^{\left(\frac{1}{x}\right)^{-1}}$ = применяя {03} = $\lim_{x\to 0} e^{-1}$ = применяя {04} =$\frac{1}{e}$
    Пример №2: $\lim_{x\to 3} \frac{x^3-3^x}{x-3}$ = пусть y=x-3 == x=y+3, тогда = $\lim_{y\to o} \frac{(y+3)^3-3^{(y+3)}}{y+3-3}$ = $\lim_{y\to o} \frac{(y+3)^3-3^y*3^3}{y}$ = $\lim_{y\to o} {\left(\frac{(y+3)^3}{y}-\frac{3^y*27+27-27}{y}\right)}$ = применяя $(a+b)^3=a^3+3a^2b+3ab^2+b^3$ = $\lim_{y\to o}$ ${\left(\frac{y^3+3y^23+3y3^2+3^3}{y}-\frac{27}{y}-\frac{27(3^y-1}{y}\right)}$ = применяя {05} = $\lim_{y\to o} {\left({y^2+9y+27}-{27\ln 3}\right)}$ = $27-{27\ln 3}$
    Пример №3: $\lim_{x\to 0} \frac{2^x-3^x}{x}$ = {06}&{07} ⇒ $\lim_{x\to 0} \frac{e^{xln2}-e^{xln3}}{x}$ = $\lim_{x\to 0} \frac{e^{x\ln2}-1-(e^{x\ln3}-1)}{x}$ = $ln2×\lim_{x\to 0} \frac{e^{x\ln2}-1}{x\ln2}$ $-$ $ln3×\lim_{x\to 0}\frac{(e^{x\ln3}-1)}{x\ln3}$ = {09} ⇒$\ln2-\ln3$ = $\ln\frac{2}{3}$
    Пример №4: $\lim_{x\to 0} {\left(\frac{a^x+b^x}{2}\right)}^{\frac{1}{x}}$ = $\lim_{x\to 0} \left(\frac{a^xb^x\left(\frac{1}{a^x}+\frac{1}{b^x}\right)}{2}\right)^{\frac{1}{x}}$ = $\lim_{x\to 0} ab{\left(\frac{1}{2a^x}+\frac{1}{2b^x}\right)}^{\frac{1}{x}}$ = {10}⇒ $ab\lim_{x\to 0} {\left(\frac{a^{-x}}{2}+\frac{b^{-x}}{2}\right)}^{\frac{1}{x}}$ = $ab\lim_{x\to 0} {\left({\frac{-x}{2}}{\left(\frac{a^{-x}}{-x}+\frac{b^{-x}}{-x}\right)}\right)}^{\frac{1}{x}}$ = $ab\lim_{x\to 0}$ ${\left({\frac{-x}{2}}{\left(\frac{a^{-x}+1-1}{-x}+\frac{b^{-x}+1-1}{-x}\right)}\right)}^{\frac{1}{x}}$ = $ab\lim_{x\to 0}$ ${\left({\frac{-x}{2}}{\left(\frac{a^{-x}+1-1}{-x}+\frac{b^{-x}+1-1}{-x}\right)}\right)}^{\frac{1}{x}}$ = $ab\lim_{x\to 0}$ ${\left({\frac{-x}{2}}{\left(\frac{a^{-x}-1}{-x}+\frac{1}{-x}+\frac{b^{-x}-1}{-x}+\frac{1}{-x}\right)}\right)}^{\frac{1}{x}}$ = {5}⇒ $ab\lim_{x\to 0}$ ${\left({\frac{-x}{2}}{\left(\ln{a}+\frac{1}{-x}+\ln{b}+\frac{1}{-x}\right)}\right)}^{\frac{1}{x}}$ = $ab\lim_{x\to 0} {\left(\frac{-x\ln{a}}{2}+\frac{1}{2}+\frac{-x\ln{b}}{2}+\frac{1}{2}\right)}^{\frac{1}{x}}$ = $ab\lim_{x\to 0}$ ${\left(1-\frac{x}{2}{\left(\ln{a}+\ln{b}\right)}\right)}^{\frac{1}{x}}$ = {11}⇒ $ab\lim_{x\to 0} {\left(1-\frac{x}{2}{\left(\ln{ab}\right)}\right)}^{\frac{1}{x}}$ ⇒ пусть $y = -\frac{x\ln{ab}}{2}$ и $\frac{1}{x}=-\frac{\ln{ab}}{2y}={\frac{1}{y}}^{-\frac{\ln{ab}}{2}}$ , тогда $ab\lim_{x\to 0} {\left({\left(1+y\right)}^{\frac{1}{y}}\right)}^{-\frac{\ln{ab}}{2}}$ = {03}⇒ $ab\lim_{x\to 0} e^{-\frac{\ln{ab}}{2}}$ = {04}⇒ $ab {\left(e^{\ln{ab}}\right)}^{-\frac{1}{2}}$ = {06}⇒ $ab \frac{1}{\sqrt{ab}}$ = $\sqrt{ab}$

    Школьные математические олимпиады.

  • Math us! Материалы по математике: подготовка к олимпиадам и ЕГЭ
  • Турниры Архимеда. 6-7 класс.
  • Математический праздник. 6-7 класс.