Отдельный вопрос – программное обеспечение. Современные микросхемы флеш-памяти отличаются тем, что ячейку в них составляют несколько логических элементов, включенных последовательно. К тому же параметры этих элементов «плавают» со временем, вплоть до выхода ячейки из строя. Все это вынуждает использовать при работе с флешкой микроконтроллер, сопряженный со схемой памяти. Он реализует очень непростые алгоритмы коррекции ошибок, адресации и пометки испорченных ячеек. Прошлифовав микросхему или напрямую из памяти их не добыть и не понять, так как архитектура контроллера отличается от архитектуры обычного процессора и самой схемы NAND. Далее идет протокол обмена данными шины USB, который включает с десяток только стандартных уровней, каждый со своей реализацией. Вытащить такой протокол из микросхемы, не зная распределения и значения импульсов в сигнале, – задача реальная, но очень сложная без продвинутых программ анализа данных и поиска паттернов.
В итоге попавшая в 60-е флешка выглядела бы, на взгляд тогдашних инженеров, почти как инопланетное устройство, сделанное по неизвестной технологии, с почти неограниченными возможностями хранения данных, которые, однако, очень сложно читать и почти невозможно записывать. На развитие IBM это практически не повлияло бы, они продолжили бы заниматься тем, чем занимались на тот момент. Это банально приносило прибыль, а вот реверс-инженерия флешки – нет.
На чем основана работа биокомпьютера?
Я знаю две модели биокомпьютеров. Более близкая к нам в плане технической реализации основана на вычислениях с помощью белков. Если обобщить, то белки в таком вычислительном чипе двигаются по своеобразному лабиринту. Каждый раз, поворачивая в ту или иную сторону, белки прибавляют к искомому числу или вычитают из него единицу вычисления. Такие процессоры «заточены» скорее под решение задач комбинаторики. Вторая модель (даже скорее метод хранения и реализации информации) основан на ДНК. В последовательности азотистых оснований точно так же, как и генетический код, можно закодировать любую информацию, прочитать ее или хранить долгое время, обеспечив такие условия, при которых величина ошибок в последовательности ДНК (мутаций) будет минимальна.
Как компьютер выбирает случайное число?
Это серьезная задача в программировании. Случайные числа принципиально важны для шифрования, генерации паролей и в научных экспериментах.
Подлинно случайное число никаким алгоритмом получить невозможно, хотя существуют более или менее удачные алгоритмы. Их уязвимости – периодичность появления одних и тех же чисел, зависимость друг от друга последовательных чисел, неравномерность распределения, обратимость.
Для получения случайного числа наиболее распространенный метод – обращение к внешнему источнику. Таковым чаще всего выступает счетчик тактов процессора. Некоторые программы отслеживают движения мышки и тому подобное.
Зачем нужен ГОСТ для роботов?
Наша организация давно про это говорила. Роботов сейчас много кто делает, от крупных заводов до стартапов. Каждый разработчик конструирует технику, исходя из своего видения. Но для себя, для дома, для выставки ты можешь делать, как угодно, а вот когда речь идет о технике специального назначения – для атомной энергетики, химического производства, для армии и так далее, – есть свои внутренние стандарты.
При этом разработчик должен четко знать, в каких областях какие компоненты он может использовать. Должна быть единая классификация – к примеру, роботы могут делиться на легкие, сверхлегкие, тяжелые, сверхтяжелые, – и без стандарта даже я, разработчик, понятия не имею, к какому классу относится моя разработка.
Также без стандарта не решить вопросы совместимости. К примеру, купил я робота и хочу оснастить его дополнительным оборудованием. Но у этого разработчика такого оборудования нет, я обращаюсь к другому. При этом интерфейсы, скорее всего, будут несовместимы, программное обеспечение несовместимо. Если же будет единый ГОСТ, в рамках которого все будут работать, я, как потребитель, смогу брать один компонент у одного поставщика, другой у другого и все это будет нормально работать друг с другом.
Как нейросети изменят мир через 5 лет?
В такой динамично развивающейся области очень сложно давать прогнозы на будущее даже на такой короткий срок, но все же некоторые тенденции прослеживаются. Например, совершенно точно продолжатся разработки различных автопилотов: от беспилотных мультикоптеров (дронов) до автомобилей. Вряд ли за 5 лет удастся создать полноценный автопилот, которому действительно можно будет доверить жизнь человека, однако за это время человечество точно придет к реализации этой идеи.
Все больше аналитики будет доверено различным системам машинного обучения, в том числе и нейросетям. Также сейчас активно развивается направление обработки естественного языка, что должно привести к совершенствованию различных диалоговых систем (от ботов-консультантов на различных сайтах до Cortana и Siri).
А серьезных изменений в жизни мы, вероятнее всего, не заметим. Во всяком случае, за такой короткий срок.
Как создать свою собственную нейросеть?
Правильная постановка вопроса должна быть такой: как натренировать свою собственную нейросеть? Писать сеть самому не нужно, нужно взять какую-то из готовых реализаций, которых есть множество, предыдущие авторы давали ссылки. Но сама по себе эта реализация подобна компьютеру, в который не закачали никаких программ. Для того чтобы сеть решала вашу задачу, ее нужно научить.
И тут возникает, собственно, самое важное, что вам для этого потребуется, – данные. Много примеров задач, которые будут подаваться на вход нейросети, и правильные ответы на эти задачи. Нейросеть будет на этом учиться самостоятельно давать эти правильные ответы.
И вот тут возникает куча деталей и нюансов, которые нужно знать и понимать, чтобы это все имело шанс дать приемлемый результат. Осветить их все здесь нереально, поэтому просто перечислю некоторые пункты. Во-первых, объем данных. Это очень важный момент. Крупные компании, деятельность которых связана с машинным обучением, обычно содержат специальные отделы и штат сотрудников, занимающихся только сбором и обработкой данных для обучения нейросетей. Нередко данные приходится покупать, и вся эта деятельность выливается в заметную статью расходов. Во-вторых, представление данных. Если каждый объект в вашей задаче представлен относительно небольшим числом числовых параметров, то есть шанс, что их можно прямо в таком сыром виде дать нейросети и получить приемлемый результат на выходе. Но если объекты сложные (картинки, звук, объекты переменной размерности), то, скорее всего, придется потратить время и силы на выделение из них содержательных для решаемой задачи признаков. Одно только это может занять очень много времени и иметь гораздо большее влияние на итоговый результат, чем даже вид и архитектура выбранной для использования нейросети.
Нередки случаи, когда реальные данные оказываются слишком сырыми и непригодными для использования без предварительной обработки: содержат пропуски, шумы, противоречия и ошибки.
Данные должны быть собраны тоже не абы как, а грамотно и продуманно. Иначе обученная сеть может вести себя странно и даже решать совсем не ту задачу, которую предполагал автор.
Также нужно представлять себе, как грамотно организовать процесс обучения, чтобы сеть не оказалась переученной. Сложность сети нужно выбирать исходя из размерности данных и их количества. Часть данных нужно отложить для теста и при обучении не использовать, чтобы оценить реальное качество работы. Иногда различным объектам из обучающего множества нужно приписать различный вес. Иногда эти веса полезно варьировать в процессе обучения. Иногда полезно начинать обучение на части данных, а по мере обучения добавлять оставшиеся данные. В общем, это можно сравнить с кулинарией: у каждой хозяйки свои приемы готовки даже одинаковых блюд.
Отберут ли роботы работу у людей?
Они уже это делают. С одной стороны, они отбирают работу у человека, а с другой – ими управляют люди и, получается, они создают для людей, которые их обслуживают, рабочие места. То есть, благодаря роботам, рабочий процесс скорее становится более эффективным, так что правильнее сказать, что они не отбирают работу у человека, а сотрудничают с ним.
Если посмотреть на этот вопрос в историческом аспекте, мы увидим, как в процессе эволюции менялись орудия труда. Вспомнить хотя бы промышленную революцию XVIII–XIX веков, когда аграрное общество сменялось индустриальным. Машинный труд заменял человеческий, и люди, не способные к освоению новых средств производства, оставались без работы. Другие, способные к обучению, перебирались в города и принимали новую систему существования. Однако тогда машины были скорее механизмами и требовали управления людьми. Сегодня роботы не механизмы, но алгоритмы. Технологии эволюционировали, появляются роботы, которые могут выполнять более сложный набор функций. Например, российскими учеными по заказу Роскосмоса был создан робот-космонавт, который был призван снизить риски жизни людей, работающих на МКС и в открытом космосе. Робот выполняет рутинную работу, от которой, в отличие от человека, он никогда не устает.