Машинное обучение теперь будет во флеш-памяти


СОДЕРЖАНИЕ:

Алгоритмы машинного обучения: Какой из них выбрать для решения вашей проблемы?

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

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

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

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

Обучение с учителем

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

Обучение без учителя

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

Обучение с частичным привлечением учителя

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

Обучение с подкреплением

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

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

Наиболее часто используемые алгоритмы машинного обучения

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

Линейная регрессия и линейный классификатор

Вероятно, это самые простые алгоритмы машинного обучения. У вас есть функции x1, . xn объектов (матрица A) и метки (вектор b). Ваша цель — найти наиболее оптимальные веса w1, . wn и смещение для этих функций в соответствии с некоторой функцией потерь; например, среднеквадратичная ошибка или средняя абсолютная ошибка для задачи регрессии. В случае среднеквадратичной ошибки существует математическое уравнение из метода наименьших квадратов:

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

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

Логистическая регрессия

Не путайте эти алгоритмы классификации с методами регрессии из-за использования «регрессии» в названии. Логистическая регрессия выполняет двоичную классификацию, поэтому маркированные выходы являются двоичными. Определим P (y = 1 | x) как условную вероятность того, что выход y равен 1 при условии, что задан входной вектор-функция x. Коэффициенты w — это веса, которые модель хочет изучить.

Поскольку этот алгоритм вычисляет вероятность принадлежности к каждому классу, вы должны учитывать, насколько вероятность отличается от 0 или 1 и усредняет его по всем объектам, как это было с линейной регрессией. Такая функция потерь представляет собой среднее значение кросс-энтропии:

Не паникуйте! Я облегчу это для вас. Позвольте y иметь правильные ответы: 0 или 1, y_pred — предсказанные ответы. Если y равно 0, то первое слагаемое при сумме равно 0, а второе меньше, чем мы предсказали y_pred до 0 согласно свойствам логарифма. Аналогично, в случае, когда y равно 1.

Что хорошего в логистической регрессии? Он принимает линейную комбинацию функций и применяет к ней нелинейную функцию (сигмовидную), поэтому это очень маленький экземпляр нейронной сети!

Деревья принятия решений

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

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

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

Метод k-средних

Иногда, вам ничего не известно о свойствах, и ваша цель — назначать свойства в соответствии с особенностями объектов. Это называется задачей кластеризации.

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

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

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

Анализ основных компонентов

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

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

Удивительно, но эти векторы являются собственными векторами корреляционной матрицы признаков из набора данных.

Теперь алгоритм понятен:

  • Мы вычисляем корреляционную матрицу столбцов признаков и находим собственные векторы этой матрицы.
  • Мы берем эти многомерные вектора и вычисляем проекцию всех признаков на них.

Новые функции — координаты от проекции, а их число зависит от количества собственных векторов, на которых вы рассчитываете проекцию.

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

Я уже упоминал о нейронных сетях, когда мы говорили о логистической регрессии. Существует множество различных архитектур, которые ценны в конкретных задачах. Чаще всего это диапазон слоев или компонентов с линейными соединениями между ними и следующими нелинейностями.

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

Для работы с текстами и последовательностями вам лучше выбрать рекуррентные нейронные сети (англ. Recurrent neural network ; RNN ). RNN содержат модули долгой краткосрочной памяти или управляемых рекуррентных нейронов и могут работать с данными, для которых мы заранее знаем размер. Одним из наиболее известных приложений RNN является машинный перевод.

Заключение

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

  • Линейная регрессия и линейный классификатор : несмотря на кажущуюся простоту, они очень полезны при огромном количестве функций, где лучшие алгоритмы страдают от переобучения.
  • Логистическая регрессия : простейший нелинейный классификатор с линейной комбинацией параметров и нелинейной функцией (сигмоид) для двоичной классификации.
  • Деревья принятия решений : часто подобны процессу принятия решений людьми и легко интерпретируются, но чаще всего используются в таких композициях, как случайный рост леса или градиента.
  • Метод k-средних : более примитивен, но очень простой в понимании алгоритм, который может быть идеальным в качестве основы во множестве задач.
  • Анализ основных компонентов : отличный выбор для уменьшения размерности вашего пространства с минимальной потерей информации.
  • Нейронные сети : новая эра алгоритмов машинного обучения, которые могут применяться для многих задач, но их обучение требует огромной вычислительной сложности.

Рекомендуемая литература

Статья написана: Daniil Korbut | Октябрь 27, 2020г.

Принцип работы и устройство флеш-памяти

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

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

Флэш-память (flash memory) — относится к полупроводникам электрически перепрограммируемой памяти (EEPROM). Благодаря техническим решениям, не высокой стоимости, большому объему, низкому энергопотреблению, высокой скорости работы, компактности и механической прочности, флэш-память встраивают в цифровые портативные устройства и носители информации.

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

Тип ПЗУ Преимущества Недостатки
Жесткий диск Большой объем хранимой информации.

Высокая скорость работы.

Дешевизна хранения данных (в расчете на 1 Мбайт).

Чувствительность к вибрации.

Оптический диск Удобство транспортировки.

Дешевизна хранения информации.

Нужно считывающее устройство.

Ограничения при операциях (чтение, запись).

Невысокая скорость работы.

Чувствительность к вибрации.

Флэш-память Высокая скорость доступа к данным.

Устойчивость к вибрациям.

Удобство подключения к компьютеру.

Ограниченное количество циклов записи.

Сегодня никто не сомневается в том, что флэш-память будет продолжать укреплять свои позиции в информационных технологиях, особенно в линейке мобильных устройств (КПК, планшеты, смартфоны, плееры). На основе флэш-памяти работают самые востребованные и популярные USB флэш-накопители и сменные карты памяти для электронных устройств (SD, MMC, miniSD…).

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

  • Compact Flash Type I (CF I)/Type II (CF II);
  • Memory Styck (MS Pro, MS Duo);
  • Secure Digital (SD);
  • miniSD;
  • xD-Picture Card (xD);
  • MultiMedia Card (MMC).
  • USB Flash Drive.

В одной из публикаций я писал о том как выбрать USB-флеш-накопитель, а о том как выбрать карту в формате SD (microSD, miniSD) читайте здесь.

Принцип работы флэш-памяти.

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

Во флэш-памяти производители используют два типа ячеек памяти MLC и SLC.

  • Флэш-память с MLC (Multi-level cell — многоуровневые ячейки памяти)ячейки более емкие и дешевые, но они с большим временем доступа и меньшим количеством циклов записи/стирания (около 10000).
  • Флэш-память, которая содержит в себе SLC (Single-level cell — одноуровневые ячейки памяти) ячейки имеет максимальное количество циклов записи/стирания(100000) и обладают меньшим временем доступа.

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

Принцип работы флеш-памяти основан на изменении и регистрации электрического заряда в изолированной области («карман») полупроводниковой структуры.

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

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


Ячейка памяти с одним транзистором.

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

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

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

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

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

Поместить заряд на плавающий затвор (процесс записи) можно методом инжекции горячих электронов (CHE-Channel Hot Electrons) или методом туннелирования Фаулера-Нордхейма.

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

Чтобы удалить заряд с плавающего затвора (выполнить стирания ячейки памяти) на управляющий затвор подается высокое отрицательное напряжение (около 9 В), а на область истока подается положительное напряжение. Это приводит к тому, что электроны туннелируют из области плавающего затвора в область истока. Таким образом происходит квантовое туннелирование Фаулера — Нордхейма (Fowler — Nordheim).

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

Так как при создании массива памяти, каждая ячейка памяти (то есть транзистор) подключается к двум перпендикулярным шинам. Управляющие затворы подключаются к шине, которую называют линией слов (Word Line), а стоки соединяют с шиной, ее называют битовой линией (Bit Line). В следствии чего в схеме находится высокое напряжение и при записи методом инжекции горячих электронов все линии — слов, битов и истоков нужно разместить на большом расстоянии друг от друга. Это даст нужный уровень изоляции, но отразится на ограничении объема флэш-памяти.

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

Ячейка памяти с двумя транзисторами.

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

Имеет ли преимущества двухтранзисторная ячейка памяти? Да, ведь с ее помощью можно создавать более компактные и хорошо масштабируемые микросхемы памяти, потому что здесь транзистор с плавающим затвором изолируется от битовой линии. Ко всему прочему, в отличии от однотранзисторной ячейки памяти, где информация записывается методом инжекции горячих электронов, в двухтранзисторной ячейки памяти для записи и стирания информации используется метод квантового туннелирования Фаулера — Нордхейма. Такой подход дает возможность снизить напряжение, которое необходимо для операции записи. Забегая наперед скажу, что двухтранзисторные ячейки применяются в памяти со структурой NAND.

Устройство флэш-памяти с архитектурой NOR.

Тип этой памяти является источником и неким толчком в развитии всей EEPROM. Ее архитектура была разработана компанией Intel в далеком 1988 году. Как было написано ранее, чтобы получить доступ к содержимому ячейки памяти (инициализировать ячейку), нужно подать напряжение на управляющий затвор.

Поэтому разработчики компании все управляющие затворы подсоединили к линии управления, которая называется линией слов (Word Line). Анализ информации ячейки памяти выполняется по уровню сигнала на стоке транзистора. Поэтому разработчики все стоки транзисторов подсоединили к линии, которая называется линией битов (Bit Line).

Архитектура NOR получила название благодаря логической операции ИЛИ — НЕ (в переводе с английского NOR). Принцип логической операции NOR заключается в том, что она над несколькими операндами (данные, аргумент операции…) дает единичное значение, когда все операнды равны нулю, и нулевое значение во всех остальных операциях.

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

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

Структура шести ячеек NOR Flash

Флеш-память с архитектурой NOR как правило используют в устройствах для хранения программного кода. Это могут быть телефоны, КПК, BIOS системных плат…

Устройство флэш-памяти с архитектурой NAND.

Данный тип памяти был разработан компанией Toshiba. Эти микросхемы благодаря своей архитектуре применяют в маленьких накопителях , которые получили имя NAND (логическая операция И-НЕ). При выполнении операция NAND дает значение нуль только, когда все операнды равны нулю, и единичное значение во всех других случаях.

Как было написано ранее, нулевое значение это открытое состояние транзистора. В следствии этого в архитектуре NAND подразумевается, что битовая линия имеет нулевое значение в том случае, когда все подключенные к ней транзисторы открыты, и значение один, когда хотя бы один из транзисторов закрыт. Такую архитектуру можно построить, если подсоединить транзисторы с битовой линией не по одному (так построено в архитектуре NOR) , а последовательными сериями (столбец из последовательно включенных ячеек).

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

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

Структура одного столбца NAND Flash

В последнее время ходят слухи о том, что компания Unity Semiconductor разрабатывает флэш-память нового поколения, которая будет построена на технологии CMOx. Предполагается, что новая память придет на смену флеш-памяти типа NAND и преодолеет ее ограничения, которые в памяти NAND обусловлены архитектурой транзисторных структур. К преимуществам CMOx относят более высокую плотность и скорость записи, а также более привлекательную стоимость. В числе областей применения новой памяти значатся SSD и мобильные устройства. Ну, что же правда это или нет покажет время.

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

P.S. Объяснить простым языком технический материал людям которые не представляют как построена архитектура компьютера… очень сложно, но я надеюсь у меня это получилось. Для полной и достоверной информации в этой статье я частично использовал учебную литературу. Надеюсь эта статья была для вас полезной и познавательной. Пока!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как работать с алгоритмами машинного обучения во встроенных системах?

Я делаю проект для обнаружения (классификации) деятельности человека с помощью микроконтроллера ARM cortex-m0 (Freedom — KL25Z) с помощью акселерометра. Я намерен предсказать активность пользователя с помощью машинного обучения.

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

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

В любом случае, мой вопрос: как я мог встроить алгоритм классификации в микроконтроллер?

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

Создан 09 май. 16 2020-05-09 01:54:31 Renan Fonteles

2 ответа

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

  1. M — микроконтроллер
  2. R — в режиме реального времени
  3. A — приложения

Вы хотите получить что-то, что имеет сильную аппаратную поддержку для этих сложных расчеты. Для начала вы должны быть A-серии. Если вам нужно выполнить арифметику с плавающей запятой, вам обязательно нужно начать с серии A и, возможно, получить ее с NEON-FPU.

Серия TI Discovery — это прекрасное место для начала или, возможно, просто использовать малину Pi (по крайней мере, для части разработки)?

Однако, если вы настаиваете на использовании M0, я думаю, вы могли бы его снять, используя что-то легкое, как ROS-C. Я знаю, что есть пакеты с ROS, которые могут это сделать, хотя в основном для робототехники вы можете адаптировать ее к тому, что вы делаете.

Создан 09 май. 16 2020-05-09 02:11:24 Snoopy

Здравствуйте, StevieV, я полностью согласен с вами, но на самом деле мой проект намеревается быть недорогим носимым устройством, поэтому это должно быть довольно простое оборудование, такое как cortex-m0 или, может быть, arduino nano. Идея заключалась бы в обработке на компьютере (обучение и прочее), а затем встраивание в микро-функцию, которая могла бы работать с уже подготовленными данными, если вы знаете, что я имею в виду. – Renan Fonteles 09 май. 16 2020-05-09 02:33:30

@RenanFonteles Ну, может быть, вам нелегко заняться машиной. Ваше программное обеспечение, безусловно, должно будет сделать гораздо больше работы. Теперь почему устройства Cortex-A не могут быть недорогими носителями? – Snoopy 09 май. 16 2020-05-09 02:35:54

На самом деле это могло бы быть, но, честно говоря, сейчас я немного из ресурсов, у меня просто есть cortex-m0 и 1 месяц, чтобы закончить этот проект. (Хороший профиль, кстати, YuYu Hakusho, проклятый, просто напоминаю мой юность) – Renan Fonteles 09 май. 16 2020-05-09 02:42:13

@RenanFonteles Ах, я думаю, что вы первый человек, который получил это 🙂 Да, я понимаю, как это может получиться иногда. Мы проделали простой алгоритм машинного обучения для работы один раз, чтобы определить, какие последовательности инструкций будут давать самую высокую температуру. Попросите процессор попробовать случайные инструкции, а затем записать данные о том, какие группы создали самые высокие временные интервалы, а затем сохранить их во флэш-памяти. Очень просто, но это сработало. Возможно, вы могли бы попробовать что-то в этом направлении, если у вас всего 1 месяц. – Snoopy 09 май. 16 2020-05-09 02:46:33

@RenanFonteles Взгляните на обновленный ответ, возможно, это поможет. Это все, что у меня есть. – Snoopy 09 май. 16 2020-05-09 02:59:28

Вы правы, я, вероятно, должен что-то делать по этим линиям, у меня нет времени тратить, к сожалению, x_x. Я посмотрю, конечно, это поможет. Большое спасибо. 🙂 – Renan Fonteles 09 май. 16 2020-05-09 03:04:51

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

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

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

В самом общем, это как бы я идти об этом:

  1. Получить (маркированные) данных на ПК (через UART, SD-карты, или что означает, что вы имеете в наличии).
  2. Эксперимент с данными и инструментарий для машинного обучения (scikit-learn, weka, vowpal wabbit и т. Д.). Убедитесь, что готовый метод может дать удовлетворительные результаты, прежде чем двигаться вперед.
  3. Эксперимент с техникой и выбором функций. Попытайтесь получить наименьший набор функций, чтобы сэкономить ресурсы.
  4. Напишите свой собственный метод обучения машине, который в конечном итоге будет использоваться во встроенной системе. Вероятно, я бы выбрал персетроны или деревья решений, потому что они не обязательно нуждаются в большой памяти. Поскольку у вас нет FPU, я бы использовал только целые числа и арифметику с фиксированной точкой.
  5. Проведите обычную процедуру обучения. То есть используйте кросс-валидацию, чтобы найти наилучшие параметры настройки, целочисленные битовые ширины, позиции радиуса и т. д.
  6. Запустите окончательный подготовленный предсказатель на установленном тестовом наборе.
  7. Если производительность вашего обученного предиктора была удовлетворительной на тестовом наборе, переместите соответствующий код (код, который вычисляет прогнозы), и модель, которую вы обучили (например, веса), в MCU. Модель/вес не изменятся, поэтому они могут быть сохранены во флэш-памяти (например, в виде массива const).

Создан 06 сен. 16 2020-09-06 03:06:43 user43704

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

«Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинен вред» — первый закон робототехники Айзека Азимова, наверное, знаком даже тем, кто не очень любит научную фантастику. Тем более что фантастика уже становится реальностью, а искусственный интеллект (ИИ) постепенно занимает все более заметное место в разных областях жизни человека. Пока он не настолько развит, чтобы бросить вызов человечеству, но уже вполне способен прийти на помощь там, где человеческий интеллект не справляется

Зарождение разума

Идея о возможности создания собственной искусственной копии давно волнует человеческий разум. Еще в Средние века люди рассуждали о возможности сконструировать механическую человекоподобную мыслящую машину, а алхимики разрабатывали рецепты выращивания гомункулов — искусственных людей из пробирки. Чуть позже появились и вполне научные обоснования возможности создания искусственного интеллекта — в XVII веке французский мыслитель Рене Декарт сформулировал механистическую теорию, предположив, что животное представляет собой некий аналог сложного механизма.

Близкие современным представления о задачах искусственного интеллекта сформировались в XIX столетии. В годы английский математик Чарлз Бэббидж придумал концепцию аналитической машины, которая, как утверждал разработчик, могла бы рассчитывать ходы для игры в шахматы. Менее чем через столетие — в 1914 году — концепция претворилась в жизнь: директор одного из испанских технических институтов Леонардо Торрес де Кеведо изготовил электромеханическое устройство, способное разыгрывать простейшие шахматные эндшпили.

Впрочем, периодом рождения понятия «искусственный интеллект» принято считать годы, а его создателем — английского математика Алана Тьюринга. Предложенная им в 1936 году абстрактная вычислительная машина Тьюринга позволила формализовать понятие алгоритма, которое до сих пор используется во множестве теоретических и практических исследований. Позднее — в 1950 году — Тьюринг предложил считать интеллектуальной такую машину, которую испытатель в процессе общения с ней не сможет отличить от человека, и разработал для оценки машинного интеллекта специальный тест.

Сам термин «искусственный интеллект» (artificial intelligence, AI) появился уже после смерти Тьюринга — в 1956 году в ходе конференции в Университете Дартмута (США), собравшей ведущих ученых, работающих в этом направлении, а его непосредственным автором считается Джон МакКарти, основоположник функционального программирования и изобретатель языка Lisp.

В 1965 году Джозеф Вайценбаум из Массачусетского технологического института создал компьютерную программу «Элиза», которая могла вести несложные диалоги. Можно сказать, это был первый чат-бот, прообраз современной Siri. Робот Фредди, разработанный в исследователями из Эдинбургского университета, использовал зрение для поиска и сборки моделей. А в появилась «Стэнфордская тележка» — первый контролируемый компьютером автономный автомобиль, подобие современных беспилотников. После некоторого спада новый всплеск интереса к ИИ произошел в середине Пожалуй, самым известным успехом этого периода можно считать победу, которую в 1997 году суперкомпьютер IBM Deep Blue одержал над чемпионом мира по шахматам Гарри Каспаровым.

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

Учиться, учиться и учиться.

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

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

Когнитивные технологии в нефтегазе

Геологоразведка

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

Бурение скважин

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

Переработка

Машинное обучение используется и при создании так называемых цифровых двойников технологических установок на нефтеперерабатывающих заводах. Цифровой двойник — это точная виртуальная копия установки, технологического процесса или даже целой цепочки процессов (см. стр. 20). В нем учтены технические параметры железа, химия и физика происходящих процессов. С помощью двойника можно просчитать характеристики получаемой продукции, предсказать и своевременно скорректировать параметры технологического процесса в зависимости от качества сырья и многое другое. Создание двойника — сложнейшая математическая задача, которая с использованием искусственного интеллекта решается намного быстрее и эффективнее. Способная к самообучению система будет постоянно обновлять цифровую модель, все время приближая ее к реальному объекту и учитывая влияние всевозможных внешних факторов. С использованием нейросетей и искусственного интеллекта в «Газпром нефти» уже успешно созданы цифровые модели двух технологических установок Омского НПЗ. В планах компании — оцифровать всю цепочку создания стоимости в сегменте downstream — от транспортировки сырья на НПЗ до продажи готового топлива на АЗС.

Безопасность

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

В 1957 году известный американский ученый в области психологии и нейрофизиологии Фрэнк Розенблатт разработал перцептрон — модель восприятия информации мозгом на основе обучающейся нейронной сети. Спустя пару лет он создал действующую машину «Марк-1», первый нейрокомпьютер. Он был способен распознавать некоторые из букв, написанных на карточках, которые подносили к его глазам-камерам.

Однако развитие этого направления уперлось в несовершенство компьютеров, не обладавших на тот момент необходимой вычислительной мощностью. Фактически всю вторую половину XX века машинное обучение оставалось математической дисциплиной, которой занимались академические ученые. Стремительный переход к практике случился лишь в начале XXI века. У этого было три причины. Первая — возрастающее в геометрической прогрессии количество данных. С одной стороны, их нужно анализировать, с другой — они сами являются материалом для обучения нейросетей. Вторая — снижение стоимости масштабных вычислений и памяти. Наконец, третья причина состояла в том, что были разработаны новые алгоритмы машинного обучения, развивающие идею перцептрона.

Как работает нейронная сеть


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

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

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

Процесс обучения нейросети

Темы для размышлений

Искусственный интеллект уже умеет многое, с его работой мы сталкиваемся ежедневно. Чат-боты широко используются на сайтах для продажи товаров и услуг. Многие с удовольствием пользуются голосовыми помощниками: Siri от Apple, ОК Google, «Алиса» от «Яндекса». Пока это трудно назвать полноценным общением — впрочем, эти системы быстро совершенствуются. Причем делают это уже сами: учатся в процессе общения с людьми.

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

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

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

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

А вот интересный пример из пищевой промышленности. Знаменитый датский производитель пива Carlsberg планирует использовать высокотехнологичные сенсоры для точной калибровки оттенков вкуса напитка, а искусственный интеллект — для отбора пивоваренных дрожжей. Сходным образом работает искусственный интеллект на Магнитогорском металлургическом комбинате: выдает оператору рекомендации о количестве присадок, необходимых для получения стали с заданными параметрами, учитывая исходный состав сырья.

Искусственный интеллект: факты, цифры, деньги

Аналитики консалтинговой компании Gartner прогнозируют, что к 2020 году технологии искусственного интеллекта и машинного обучения будут присутствовать практически во всех новых программных продуктах и сервисах. Их коллеги из IDC (International Data Corporation) подсчитали, что к 2021 году ИИ позволит бизнесу получить дополнительную выручку в размере $1,1 трлн за счет внедрения алгоритмов искусственного интеллекта в системы управления взаимоотношениями с клиентами (CRM). По оценкам исследовательской компании Tractica, объем рынка программного обеспечения для ИИ вырастет с $8,1 млрд в 2020 году до $105,8 млрд к 2025 году. PwC в своем исследовании «Искусственный интеллект: не упустить выгоду» решила заглянуть еще дальше и подсчитала, что к 2030 искусственный интеллект обеспечит рост глобального ВВП на 14%, или $15,7 трлн.

Россию пока сложно отнести к числу лидеров процесса развития систем искусственного интеллекта. Однако аналитический центр TAdviser и компания «Инфосистемы Джет» считают, что отечественный рынок ИИ и машинного обучения, не дотягивающий сегодня и до 1 млрд рублей, к 2020 году вырастет до 28 млрд. Драйверами роста останутся финансовый сектор и ретейл, однако к ним присоединится и промышленность.

Возможно ли восстание машин?

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

Что такое машинное обучение и почему оно может лишить вас работы

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

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

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

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

Что такое машинное обучение

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

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

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

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

Почему машинное обучение — это важно

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

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

Помимо прочего, машины могут слушать нас и отвечать. Виртуальные ассистенты в наших смартфонах — будь то Siri, Cortana или Google Now — воплощают прорывы в машинной обработке естественного языка и продолжают развиваться.

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

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

Как машинное обучение применяют сегодня

Алгоритмы машинного обучения уже способны впечатлить.

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

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

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

Недавно IBM опросила Automotive 2025: Industry without borders. руководителей автомобильных компаний. 74% из них ожидают появления на дорогах умных машин уже к 2025 году.

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

Чего ждать от машинного обучения в будущем

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

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

Почему вам стоит следить за машинным обучением

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

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

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

Но что случится с людьми, когда их превзойдут машины?

По данным The Future of Jobs. Всемирного экономического форума, в течение следующих пяти лет компьютеры и роботы займут пять миллионов рабочих мест, которые сейчас принадлежат людям.

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

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

Как хранить данные в flash-памяти AVR

Некоторые особенности работы с (flash) памятью микроконтроллеров AVR (Arduino)

Если ОЗУ не хватает, то можно более эффективно использовать flash-память. Это возможно потому, что

— МК AVR имеют гарвардскую архитектуру.

Некоторые особенности микроконтроллеров AVR

Гарвардская архитектура — специальная архитектура ЭВМ, отличительной особенностью которой является то, что инструкции и данные хранятся отдельно на разных физических устройствах; канал инструкций и канал данных так же физически разделены.

Язык C/C++ разрабатывался не для гарвардской архитектуры. Тем не менее использование макро-опреденией позволяет устранить этот недостаток.

Проблемы памяти

Чтобы хранить данные в памяти программ (flash-память), можно используется макрос PROGMEM. Он помещается в декларации переменной перед инициализатором. Подробнее здесь http://microsin.net/programming/avr/avrstudio-gcc-progmem.html

Чтобы поместить строки во flash, нужно явно объявить каждую строку:

И потом использовать новые символы в массиве:

Смысл приведенного кода очевиден — получение данных из массива происходит через указатель, выбираемый как 16-битное беззнаковое целое макросом pgm_read_word. Далее строка копируется функцией strcpy_P. Имеется множество функций для манипуляции строками в памяти программ с индексом _P, работающих так же, как и обычные строковые функции. Все эти функции с индексом _P также определены в заголовке .

В оперативной памяти (RAM), есть три области:

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

«куча»(heap) — используется при вызове функций malloc() и free();

«cтек»(stack) — используется, когда одна функция вызывает другую.

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

Надо помнить, что:

1) все C-строки также хранятся в оперативной памяти

2) все C-строки также хранятся во флэш-памяти. Одна из задач, выполняемых при запуске С-кода, состоит в том чтобы скопировать все строки из флэш-памяти в оперативную память.

3) Флэш-память организована в слова.

Использование FLASH-памяти на Arduino

На самом деле макросом PROGMEM я никогда не пользовался. Вместо этого в Wirgin есть макрос F(),

который в принципе решает проблему. Типичный пример его использования, когда мало RAM и много FLASH:

Анализ методов тестирования флэш-памяти Текст научной статьи по специальности « Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — С. В. Ярмолик

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — С. В. Ярмолик

FLASH MEMORY TESTING METHODS ANALYSIS

The problems of design and reliability of modern flash-memory are discussed in this paper. The architectures of two types of flash-memory namely the NORand NAND-architectures are described and the specific flash-memory faults and tests for their detection are discussed. The march-like tests, which provide the high cover possibility, are shown to be effective tests for detection specific flash-memory faults.

Текст научной работы на тему «Анализ методов тестирования флэш-памяти»

АНАЛИЗ МЕТОДОВ ТЕСТИРОВАНИЯ ФЛЭШ-ПАМЯТИ

Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь

Поступила в редакцию 23 марта 2010


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

Ключевые слова: флэш-память, NOR- и NAND-архитектуры, неисправности памяти, тестирование памяти, маршевые тесты.

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

Флэш-память состоит из массива ячеек памяти, представляющих собой транзисторы с плавающими затворами [1]. Традиционно одна ячейка такой памяти хранит один бит информации (single-level cell — SLC), однако некоторые современные виды флэш-памяти позволяют записать более одного бита информации в одну ячейку (multi-level cell — MLC).

Схема однобитовой ячейки (рис. 1) представляет собой транзистор с двумя изолированными затворами: управляющим (control gate) и изолированным оксидными слоями плавающим (floating gate), расположенным под управляющим затвором [2]. Некоторые из электронов, благодаря наличию большей энергии, преодолевают слой изолятора и попадают на плавающий затвор, который может удерживать электроны, т.е. заряд, в течение нескольких лет. При этом, когда на плавающем затворе хранится заряд, ячейка находится в состоянии логического «0», т.е. является запрограммированной. Стирание информации, изменение состояния транзистора с логического «0» на «1», происходит при помощи удаления заряда с плавающего затвора. Для этого на управляющий затвор подается высокое отрицательное напряжение и электроны с плавающего затвора переходят (туннелируют) на исток. При чтении эти состояния распознаются

путем измерения порогового напряжения транзистора. Существуют две технологии для удаления и переноса заряда из и на плавающий затвор: инжекция горячих электронов (hot-electron injection — HEI) и механизм туннелирования Фаулера-Нордхайма (Fowler-Nordheim — FN — tunnelling mechanism) [1].

Рис. 1. Полевой транзистор с плавающим затвором

Особенностью флэш-памяти является конечное число циклов стирания/записи ячейки. Обычные флэш-карты позволяют совершить около 100 000 циклов стирания/записи. При этом флэш-память проектируется с учетом данной особенности памяти таким образом, чтобы все ячейки «снашивались» примерно одинаково и не было в памяти участков с большой разницей между количеством примененных операций записи к ячейкам.

Существует два основных вида организации транзисторов с плавающим затвором во флэш-памяти: NOR- (рис. 2,а) и NAND-структуры (рис. 2,6), отличающихся друг от друга логической схемой и интерфейсом доступа для чтения и записи памяти [1].

В NOR-памяти каждая ячейка памяти подключена к линии бит и к линии питания, как показано на рис. 2,а. При этом к линии бит BL подключен сток транзистора, к линии питания SL — исток, к линии слов WL — затвор. Такая структура называется «NOR-флэш», потому что она ведет себя соответственно логике NOR: когда на линию слов (WL) подается высокое напряжение, соответствующий транзистор устанавливает низкое напряжение на линии бит (BL) [3].

NOR-память требует более длительного промежутка времени на программирование ячейки и стирание ее значения по сравнению с NAND-памятью. Однако, так как NOR-память имеет полный набор линий данных и адресов, она обеспечивает доступ к любой произвольной ячейке памяти. В то же время, когда программироваться (устанавливаться в состояние логического нуля) может каждая ячейка, стирать данные (устанавливать в состояние логической единицы) можно только всю память или блок памяти одновременно. В такие блоки объединяются ячейки, подключенные к одной линии питания (SL).

Рис. 2. NOR- и NAND-архитектуры флэш-памяти

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

«1», можно перезаписывать до тех пор, пока в ней не установиться «0». Так, значение «11111» можно перезаписать как «10111», потом изменить на «10100» (но не на «11100») и так до значения «00000».

В NAND-памяти транзисторы соединены последовательно линией бит BL таким образом, что исток одного транзистора подключен к стоку следующего, как показано на рис. 2,б. При этом соединенные таким образом ячейки будут стираться одновременно. Все ячейки памяти помещены между двумя транзисторами BSL и GSL, которые управляют доступом ячеек соответственно к линии бит BL и линии источника питания SL. NAND-архитектура позволяет программировать и стирать данные памяти быстрее, чем NO^-архитектура памяти, и требует меньше места для одной ячейки, позволяя увеличить плотность расположения транзисторов и уменьшить стоимость памяти, но она не позволяет осуществлять произвольный доступ к ячейкам памяти. NAND-память значительно проигрывает в операциях с произвольным доступом и не позволяет напрямую работать с байтами информации. К примеру, для изменения одного байта требуется сначала считать в буфер блок информации, в котором данный байт находится, потом в буфере изменить нужный байт и записать блок с измененным байтом обратно.

NAND-флэш память нашла применение в качестве запоминающего устройства больших объемов информации и для ее переноса. Наиболее распространенные в настоящее время запоминающие устройства, основанные на этом типе памяти, это флэш-драйвы и карты памяти. Что касается NO^-флэша памяти, то чипы с такой организацией используются в качестве хранителей программного кода, иногда реализовываются в виде интегрированных решений (ОЗУ, ПЗУ и процессор на одной мини-плате, а то и в одном чипе).

Модели неисправностей флэш-памяти

Для флэш-памяти характерны как известные и описанные для ОЗУ модели неисправностей, такие как константные неисправности (Stuck-At Faults — SAF); переходные неисправности (Transition Faults — TF); неисправности типа обрыв (Stuck-Open Faults — SOF); адресные неисправности (Address Faults — AF) и статические неисправности взаимного влияния (State Coupling Faults — CFst) [4, 5], так и неисправности, присущие только флэш-памяти.

Рассмотрим неисправности, которые возникают только во флэш-памяти. Их условно можно поделить на три группы, а именно неисправности программирования, неисправности записи и неисправности чтения флэш-памяти [6, 7].

1. Неисправности программирования флэш-памяти (Program Disturbances).

— Word-line program disturbance — WPD. Данная неисправность возникает, когда при программировании одной ячейки состояние другой ячейки (ячейки-жертвы), присоединенной к той же линии слов, что и ячейка-агрессор, изменяется на логический ноль.

— Word-line erase disturbance — WED. В случае данной неисправности программирование одной ячейки заставляет другую ячейку на той же линии слов, что и ячейка-агрессор, стереть записанное в ней значение логического нуля.

— Bit-line program disturbance — BPD. Данная неисправность возникает, когда программирование ячейки-агрессора ведет к программированию другой незапрограммированной ячейки (ячейки-жертвы), присоединенной к той же линии бит.

— Bit-line erase disturbance — BED. Неисправность BED возникает, когда при программировании одной ячейки состояние ячейки-жертвы, присоединенной к той же линии бит, что и ячейка-агрессор, изменяется на логическую единицу.

— Source-line program disturbance — SPD. Данная неисправность возникает, когда программирование ячейки-агрессора ведет к программированию другой ячейки (ячейки-жертвы), присоединенной к той же линии питания.

Данные неисправности при всей своей схожести с описанными для традиционных ОЗУ неисправностями взаимного влияния (coupling faults — CF) все-таки имеют отличия от них. Так, если для неисправностей взаимного влияния ячейкой-агрессором и ячейкой-жертвой являются две определенные ячейки памяти, то в случае неисправностей, приведенных выше, активизировать неисправное состояние в ячейке-жертве может любая ячейка, которая находится на одной линии слов для WPD и WED и на одной линии бит для BPD и BED и к которой применяется операция программирования. Так, к примеру, алгоритм обнаружения неисправности ти-

па WPD имеет следующий вид: стирание всей памяти, программирование 1-ого столбца матрицы ячеек памяти, проверка состояния всех ячеек, не находящихся в 1-ом столбце, после чего снова стирание памяти и программирование любого столбца кроме 1-ого, затем чтение значения ячеек 1-ого столбца.

2. Неисправности стирания (Erase Disturbances).

— Over Erase Disturbances — OED. Когда возникает подобная неисправность, то ячейка не может изменить состояние с логической единицы на ноль, т.е. быть запрограммированной. Однако последовательное применение нескольких операций записи к данной ячейке может вернуть ее способность хранить заряд.

3. Неисправности чтения (Read Disturbances).

— Soft-Program — SP. Чтение содержимого ячейки может привести к тому, что на плавающий затвор транзистора данной ячейки могут попасть электроны, таким образом происходит частичное программирование ячейки.

— Read Disturbances — RD возникает при чтении из ячейки, когда после нескольких последовательных операций чтения ячейка не в состоянии хранить логический ноль.

— Gate Read-Erase — GRE. Неисправность GRE возникает, когда при чтении из ячейки в другой ячейке на той же линии слов происходит изменение состояния с «0» на «1» (стирание значения).

— Channel Read-Program — CRP. Данная неисправность GRP проявляется, когда при чтении из конкретной ячейки происходит программирование другой ячейки, находящейся на той же линии слов.

В [8] была предложена и описана такая модель неисправности для флэш-памяти, как Source Line Interconnect Faults (SLIF). SLIF-неисправность возникает из-за открытого соединения (open connection) на линии питания и является причиной того, что при стирании блока флэш-памяти не все ячейки будут установлены в состояние логической единицы, в то время как ячейки другого блока могут потерять хранимые значения.

Следует отметить, что возникновение данных неисправностей во флэш-памяти обусловлено ее архитектурой, типом транзисторов и другими факторами. Так, для NOR-архитектуры флэш-памяти рассматриваются в основном неисправности WPD, WED, BPD, BED, OED, RD.

Показано [6-9], что традиционные маршевые тесты непригодны для тестирования флэш-памяти. В отличие от ОЗУ, во флэш-памяти присутствуют три вида операций: программирование, стирание и чтение ячейки. Большинство разновидностей подобных запоминающих устройств, как отмечалось выше, может осуществлять произвольный доступ к ячейкам памяти для чтения и записи «0», но стирание не может производиться для каждой ячейки — только для блока ячеек или всей памяти одновременно. Однако на основе обычных маршевых тестов разрабатываются и широко применяются маршево-подобные тесты для флэш-памяти [9-11].

К основным требованиям, предъявляемым к разрабатываемым тестам флэш-памяти, помимо высокой покрывающей способности и минимальной временной сложности, относят также минимальное число операций записи (программирования ячейки). Последнее требование обусловлено конечным числом возможных циклов записи в ячейку флэш-памяти, которое для современных типов памяти составляет примерно 100 тыс. Для достижения же минимальной временной сложности тестов следует рассмотреть время, затрачиваемое на программирование, стирание и чтение значения ячейки. Так, для обоих видов флэш-памяти (NOR и NAND) время чтения намного меньше, чем время программирования ячейки, которое в свою очередь меньше времени стирания. Время чтения составляет для SLC NAND- и MLC NOR-памяти соответственно 24 и 103 млн Б/c [12]. NOR-архитектура памяти характеризуется очень медленной операцией стирания значений ячеек (900 мс) и медленной операцией программирования (470 тыс. Б/c). В то время как для NAND-архитектуры эти значения являются более высокими (соответственно 2 мс и 8 млн Б/c) [12]. Следует также отметить, что данные значения могут зависеть от схемы обрамления флэш-памяти и времени ее эксплуатации. Так постепенно время, требуемое на выполнения описанных операций, увеличивается.

Одним из первых специально разработанных маршевых тестов для флэш-памяти был Flash March [9], который можно записать следующим образом: , где f (flash) обозначает операцию стирания значений в памяти, а p (program) — программирование ячейки памяти. Все остальные обозначения эквивалентны обозначениям для традиционных маршевых тестов ОЗУ. Маршевый тест состоит из конечного числа маршевых элементов [13-15]. В свою очередь, каждый маршевый элемент содержит символ, определяющий порядок формирования адресной последовательности ОЗУ: T — определяет последовательный перебор адресов ОЗУ по возрастанию, j — определяет последовательный перебор адресов по убыванию, | — означает перебор по убыванию либо по возрастанию. Кроме этого, маршевый элемент содержит последовательность операций чтения и записи, заключенных в круглые скобки. Каждая операция представляет собой элемент из следующего набора: r0 — операция чтения содержимого ячейки с ожидаемым значением 0, r1 — операция чтения содержимого ячейки ОЗУ с ожидаемым значением 1, w0 — операция записи 0 в запоминающую ячейку, w1 — операция записи 1 в ячейку ОЗУ. В случае флэш-памяти операции w0 и w1 заменяются соответственно на операции p и f. Одна или несколько операций в маршевом элементе используются последовательно для адресуемой ячейки ОЗУ. Переход к следующей ячейке будет осуществлен только после выполнения всех операций в текущем маршевом элементе [15]. Сложность С теста Flash March можно оценить количеством циклов чтения r, программирования p, а также числом операций стирания f содержимого флэш-памяти. Основным аргументом функции C является емкость N флэш-памяти, тогда для случая Flash March теста получим, что C(Flash March)=4Nr+2Np+2f(N).

Дальнейшим развитием маршевых тестов стало появление такого теста, как March-FT [10], представляющего собой усовершенствованный вариант Flash March: <(f); |(r1, p, r0); t(r0); f); |(r1, p, r0); |(r0)>.

Данный тест имеет большую покрывающую способность в сравнении с тестом Flash March. Он позволяет покрыть большее количество неисправностей, так, в частности, данный тест 100%-но обнаруживает такие неисправности, как SAF, SOF, TF, AF, CFst, WPD, WED, BPD, BED, RD, OE (см. таблицу). При этом он требует по две операции стирания и программирования памяти (как и тест March Flash), но на две операции чтения больше по сравнению с тем же March Flash. Тогда его сложность будет оцениваться как C(March-FT)=6Nr+2Np+2f(N).

Для уменьшения числа операций записи при тестировании памяти был предложен тест Diagonal-FT [11]: <(f); ||Ш(г1, p, r0); Trn(r1, p, r0); Тго:(г0); f); |ш(г1, p, r0); Тю:(г1); Ыг1, p, r0); TD1(r0); f);>.

Обозначим, что ячейки на 1 -й диагонали — это ячейки, которые находятся на диагонали, идущей из верхнего левого угла в правый нижний угол матрицы ячеек памяти, а ячейки на 2-й диагонали — это ячейки, которые находятся на диагонали из нижнего левого угла в верхний правый. Тогда Troi(2) обозначает, что операции будут применяться ко всем ячейкам, кроме тех, что находятся на 1-й (2-й) диагонали, а TD1(2), наоборот, означает, что действия будет осуществляться только с ячейками на 1-й (2-й) диагонали. Более подробно данный тест описывается следующим образом.

Шаг 1. Стирание всей памяти f), после чего все ячейки памяти будут содержать значение логической «1».

Шаг 2. Программирование всех ячеек, кроме тех, что находятся на 1 -й диагонали. Данная операция активизирует WPD и BPD неисправности на 1 -й диагонали. Далее операцией чтения (r0) выявляются неисправности OE для остальных ячеек.

Шаг 3. Считывая значение «1» из ячеек на 1-й диагонали, выявляются активизированные на шаге 2 неисправности типа WPD и BPD. Затем программируются ячейки на 1-й диагонали для активизации неисправности WED и BED всех остальных ячеек. Далее операцией чтения (r0) выявляются неисправности OE для ячеек на диагонали 1.

Шаг 4. Обнаруживаются неисправности WED и BED, активизированные на предыдущем шаге, чтением «0» из всех ячеек кроме тех, что находятся на 1-й диагонали.

Шаг 5. Стирание всей памяти f).

Шаг 6. Программирование ячеек, находящихся на 1-й диагонали, что активизирует WPD и BPD неисправности для всех ячеек кроме программируемых. В то же время, используя

обратную последовательность адресов, обнаруживаются традиционные неисправности для ОЗУ.

Шаг 7. Считывая значение «1» из ячеек не на 1-й диагонали, выявляются активизированные на шаге 6 неисправности типа WPD и BPD.

Шаг 8. Для активизации WED и BED для ячеек на 1-й диагонали программируются ячейки на 2-й диагонали.

Шаг 9. Считывание «0» со всех ячеек на 1-й диагонали выявляет наличие в них неисправности типа WED и BED.

Сравнение количества неисправностей, обнаруживаемых тестами Flash March, March-FT, Diagonal-FT, %

Тип неисправности WPD WED BPD BED OE RD SAF TF SOF AF CFst Total

Flash March 100 100 100 100 100 100 100 100 100 100 100 100

March-FT 100 100 100 100 100 100 100 100 100 100 100 100

Diagonal-FT 100 100 100 100 100 100 100 100 100 81,6 89,15 97,34

Главное преимущество данного теста по сравнению с March-FT состоит в том, что у него число операций записи и чтения меньше соответственно на (\N-2^N) и (2jV-3a/jV) операций. Однако число неисправностей, выявляемых описанным выше тестом, также меньше (на 2,66%) [11].

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

Так при использовании такого модифицированного алгоритма вместо ячеек, расположенных на 1-й диагонали матрицы памяти, следует использовать ячейки, для которых выполняется равенство: (i—l— 1) mod p=j mod p, p=min (n, m), где i и j — индексы соответственно столбца и строки ячейки в матрице ячеек памяти, а m и n — число столбцов и строк. Порядковый номер прохода теста при его многократном использовании обозначается l. А вместо ячеек 2-й диагонали стоит использовать ячейки, для которых (i—l— 1) mod p=(p-1-j) mod p.

В [8] предложен свой тест, который позволяет 100% выявлять неисправности типа SLIF. Он состоит из двух независимых шагов: Шаг 1. <(/); T(p); Tb<(/); t(rB0)>>

На 1-м шаге применяется тест, позволяющий выявить 100 %-но неисправности типа SLIF, в то время как на шаге 2 применяется описанный выше тест Flash March для выявления оставшихся неисправностей. Так на первом шаге, после программирования всех ячеек, для каждого блока применятся операция стирания, после чего во всех остальных блоках проверяется состояние ячеек, которые должны быть равны логическому «0».

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

FLASH MEMORY TESTING METHODS ANALYSIS

S.V. YARMOLIK Abstract

The problems of design and reliability of modern flash-memory are discussed in this paper. The architectures of two types of flash-memory namely the NOR- and NAND-architectures are described and the specific flash-memory faults and tests for their detection are discussed. The march-like tests, which provide the high cover possibility, are shown to be effective tests for detection specific flash-memory faults.

1. Pavan P., BezR., Olivo P., Zanoni E. // Proc. IEEE. 1997. Vol. 85, № 8. P. 1248-1271.

2. Brown W., Brewer J. Nonvolatile Semiconductor Memory Technology: A comprehensive Guide to Understanding and Using NVSM Devices. IEEE Press, 1998.

3. Inoue A., Wong D. NAND Flash Applications Design Guide. Toshiba Press. 2003.

4. Sharma A.-K. Semiconductor Memories: Technology, Testing and Reliability. IEEE Press, 1997.

5. Wu C.-F., Huang C.-T., Cheng K.-L., Wu C.-W. // IEEE Transition Computer-Aided Design Integrated Circuits Systems. 2002. Vol. 21, № 4. P. 480-490

6. IEEE 1005 Standard Definitions and Characterization of Floating Gate Semiconductor Arrays. IEEE Standards Department. Piscataway, 1999.

7. Cheng K.L., Yeh J.C., Wang C.W., Huang C.T., Wu C.W. // Proc. of the 20th IEEE VLSI Test Symposium. 2002. P. 281-286

8. Mohammad M.G., Saluja K.K., Yap A. // Proc. 13th Int. Conf. VLSI Design. 2000. P. 406-411.

9.MohammadM.G., SalujaK.K. // Proc. of 19th VLSI Test Symposium. 2001. P. 218-224.

10. Yeh J. C., Wu C. F., Cheng K.L. et al. // Proc. of 1st International Workshop on Electronic Design, Test and Applications. 2002. P. 137-141.

11. Chiu S.K., Yeh J.C., Huang C.T., Wu C.W. // Proc. of International Test Conference. 2002. P. 37-46.

12. NAND vs. NOR Flash Memory Technology Overview. Toshiba America Electronic Components, Inc. 2006.

Хранение памяти нейронной сети/машинного обучения

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

Где/Как Neural Networks хранит свою память? (/Машиноведение)

Существует довольно много информации, доступной в Интернете о Neural Networks и Machine Learning, но все они, похоже, пропускают память. Например, после перезапуска программы, где она находит свою память для продолжения обучения/прогнозирования? Многие примеры онлайн, похоже, не сохраняют память, но я не могу представить, что это «безопасно» для реального/широкомасштабного развертывания.

У меня сложная формулировка вопроса, поэтому, пожалуйста, дайте мне знать, если мне нужно будет немного подробнее. Спасибо,

ИЗМЕНИТЬ: — следить за ответами ниже


Каждая нейронная сеть будет иметь связанные с ними весовые коэффициенты. Эти весовые коэффициенты корректируются во время тренировки Нейронная сеть.

Это именно то место, где я борюсь, как мне/следует ли я видеть эту вторичную память? Это как RAM? это не кажется логичным.. Причина, по которой я спрашиваю, потому что я не встречал пример онлайн, который определяет или указывает эту вторичную память (например, в чем-то более конкретном, таком как XML файл или, возможно, даже огромный массив).

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

Рассмотрим трехслойный многослойный персептрон (полностью подключенный), который имеет 3, 8 и 5 узлов на входном, скрытом и выходном уровнях соответственно (для этого обсуждения мы можем игнорировать входы смещения). Тогда разумный (и эффективный) способ представления необходимых весов состоит из двух матриц: матрицы 3×8 для весов между входным и скрытым уровнями и матрицы 8×5 для весов между скрытым и выходным уровнями.

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

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

У конкретной библиотеки или структуры может быть конкретный ответ о долговременном хранении, но если вы откатываете свой собственный с нуля, то это зависит от вас.

Например, почему бы просто не написать обученные веса и топологию в файле? Что-то вроде YAML или XML может служить в качестве формата.

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

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

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

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

Нет таблиц поиска. Нет первичной и вторичной памяти, только короткой и долгосрочной памяти.

На это можно ответить в два этапа:

  • Что такое «память» в нейронной сети (именуемая NN)?

По мере обучения нейронной сети (NN) она строит математическую модель который сообщает NN, что давать в качестве вывода для конкретного ввода. Думать о том, что происходит, когда вы тренируете кого-то, чтобы говорить на новом языке. человеческий мозг создает модель языка. Аналогично, NN создает математическую модель того, что вы пытаетесь учить. Он представляет собой отображение от входа к выходу в виде ряда функций. Эта математическая модель это память. Эта математическая модель представляет собой вес различных краев в сети. Часто NN обучается, и эти веса/соединения записываются на жесткий диск (XML, Yaml, CSV и т.д.). Всякий раз, когда NN необходимо использовать, эти значения считываются и сеть воссоздается.

  1. Как вы можете забыть свою память о сети?

Подумайте о том, кто учил два языка. Скажем, человек никогда не говорит на одном из этих языков в течение 15-20 лет, но каждый день использует другой. Очень вероятно, что каждый день будут изучаться несколько новых слов, и многие слова о менее частых забытых языках. Критическая часть здесь заключается в том, что человек «учится» каждый день. В NN аналогичные явления можно наблюдать путем обучения сети с использованием новых данных. Если старые данные не были включены в новые образцы обучения, то базовая математическая модель изменится настолько, что старые данные обучения больше не будут представлены в модели. Возможно, чтобы NN «забыл» старую модель, изменив процесс обучения. Однако это имеет побочный эффект, что такой NN не может изучать полностью новые образцы данных.

Машинное обучение

Про машинное обучение, нейронные сети и другие алгоритмы ИИ

Модераторы (0)

Запуск TensorFlow Lite Micro на Arduino

Мощности контроллера Arduino Nano 33 BLE Sense со встроенным в BLE-модуль NINA B306 микроконтроллером Nordic nRF 52840 с ядром ARM Cortex-M4 (64 MHz, 1MB Flash, 256 KB of RAM) — хватает для запуска на нём TensorFlow Lite Micro.
Об этом подробно рассказано в блоге TensorFlow — How-to Get Started with Machine Learning on Arduino.

Теперь, для работы с нейронными сетями достаточно установить Arduino IDE и через Arduino Library Manager загрузить библиотеку Arduino_TensorFlowLite.
В составе библиотеки уже идут примеры:
micro_speech — распознавание речи с помощью встроенного микрофона,

  • Arduino,
  • машинное обучение,
  • нейронная сеть,
  • распознавание
  • 16 октября 2020, 14:19
  • admin
  • комментировать

Интерпретация работы нейронных сетей — тестирование с помощью векторов активации концепции

Исследователи из Google Brain представили новый метод интепретации работы искусственных нейронных сетей.
Метод получил название Тестирование с помощью векторов активации концепции (Testing with CAVs (TCAV)).

  • нейронная сеть,
  • машинное обучение,
  • AI
  • 5 марта 2020, 15:52
  • admin
  • комментировать

Что такое Data Science?

Многие считают, что сейчас профессия Data Scientist является одной из самых, привлекательных, перспективных и высокооплачиваемых. Все крупные компании уже создали отделы по обработке собственных данных и прямо на глазах превращаются в дата-ориентированные (Data-driven) организации, которым требуется всё больше специалистов по данным.
Чтобы стать востребованным специалистом в этой области — потребуются хорошие знания программирования, математической статистики и машинного обучения. Нужные знания и навыки можно получить в некоторых университетах, попробовать прокачать самостоятельно или получить на различных курсах — например, на курсе специализации Data Scientist в онлайн-школе SkillFactory, где за 12 месяцев можно с нуля освоить эту интересную профессию.
Выбор такого специализированного курса позволяет учащемуся пройти полный цикл обучения: от изучения языка Python для анализа данных и классического машинного обучения — до самого увлекательного и востребованного направления в области машинного обучения — нейронных сетей и глубокого обучения (Deep Learning).
Путь Data Scientist — долгий и желающим учиться нужно приготовиться пройти его от начального «я ничего не знаю» до момента, когда можно будет уверенно сказать: «я решаю задачи по машинному обучению и знаю, где это применить и как развиваться дальше».

Но что же такое Data Science?

  • машинное обучение
  • 27 февраля 2020, 10:43
  • admin
  • комментировать

Auto-Keras — библиотека для AutoML

Auto-Keras — это библиотека с открытым исходным кодом для Автоматизированного машинного обучения (Automated Machine Learning (AutoML)).

Auto-Keras предоставляет функции для автоматического поиска архитектуры и гиперпараметров моделей глубокого обучения.

  • машинное обучение,
  • автоматизация,
  • Keras,
  • Open Source,
  • нейронная сеть
  • 12 февраля 2020, 10:17
  • admin
  • комментировать

Обучение четвероногого робота ходьбе при помощи тренировки нейронной сети в симуляции

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

  • робототехника,
  • нейронная сеть,
  • ходить,
  • обучение,
  • Reinforcement Learning,
  • машинное обучение,
  • собака
  • 17 января 2020, 08:55
  • admin
  • комментировать

STM32Cube.AI — пакет расширения для STM32CubeMX для встраивания нейронных сетей в микроконтроллеры STM32

STM32Cube.AI — это пакет расширения для STM32CubeMX (программа для конфигурации и генерации кода), позволяющий встраивать и использовать нейронные сети на микроконтроллерах STM32.

  • STM32,
  • нейронная сеть,
  • микроконтроллеры,
  • ARM,
  • Keras
  • 26 декабря 2020, 09:08
  • admin
  • комментировать

TTA — аугментация во время теста

TTA — test-time augmentation — аугментация во время теста.
Это способ увеличить качество классификатора за счёт усреднения предсказаний для изображений и их аугментаций.

  • машинное обучение,
  • распознавание,
  • нейронная сеть
  • 1 октября 2020, 17:21
  • admin
  • комментировать

CMSIS-NN — библиотека для работы с нейронными сетями для микроконтроллеров ARM Cortex-M

Оказывается, ещё в январе, в стандартную библиотеку — CMSIS (Cortex Microcontroller Software Interface Standard) включили функционал для реализации нейронных сетей — CMSIS-NN.

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

CMSIS-NN представляет собой набор функций для реализации нейронных сетей, разработанных для максимизации производительности и минимизации объема потребляемой памяти на процессорных ядрах ARM Cortex-M.

  • AI,
  • нейронная сеть,
  • микроконтроллеры,
  • ARM,
  • STM32
  • 5 июля 2020, 16:00
  • admin
  • комментировать

Внимательное изучение данных — это необходимость

Свежая статья Питера Уордена (Pete Warden) — «Почему вам необходимо улучшить свои тренировочные данные и как это сделать? (Why you need to improve your training data, and how to do it) снова поднимает серьёзный вопрос, касающийся практического применения алгоритмов машинного обучения для решения реальных задач.
Автор обращает внимание, что в научной среде, основной упор делается на разработку и исследование работы новых моделей, в то время как в индустрии — больше всего времени тратится на подготовку и обработку самих данных.

  • нейронная сеть,
  • машинное обучение,
  • AI,
  • распознавание
  • 1 июня 2020, 14:08
  • noonv
  • комментировать

Использование свёрточной сети на Raspberry Pi для подсчёта пчёл

Вручную разметив фотографии пчёл и используя нейросетевую архитектуру u-net на одноплатнике Raspberry Pi, автору удалось подсчитывать пчёл на входе в улей.

Частичное обучение

Так как с камеры можно получить большое количество изображений, то можно воспользоваться интересным трюком: частичным обучением, оно же — обучение с частичным привлечением учителя (Semi-supervised learning).

В основе этого трюка лежит очень простой подход:

Arduino.ru

Можно ли менять данные записанные во flash с помощью PROGMEM

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

Господа, есть ли возможность работать с данными, которые записаны в виде массива во flash память? Я не нашел описания и примеров такой возможности. Если я все правильно понял, то массив с помощью PROGMEM можно разместить как константу. Далее его можно читать, но в задаче требуется работать с массивом, допустим 10000 значений unsigned long. Значения появляются в ходе работы программы, изменяют значения, удаляются, дополняются в рамках размера массива. Надеюсь, что есть ПРОФИ в данном вопросе. Буду признателен, если подскажете.

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

все, что находится в PROGMEM, это константа по определению. Константа задается при компиляции и неизменна.

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

инструкции spm ассемблера вам в руки.

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

записаны в виде массива во flash память?

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

Я не нашел описания и примеров такой возможности.

Странно. Как можно не найти то, что написано в даташите? Или Вы в журнале «мурзилка» искали? Открываете даташит на ATmega328 и на странице 288 находите специальный раздел «28.7.4 Programming the Flash»

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

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

Кроме того, запись в эту память очень медленная.

Если Вас устраивает медленная запись и ресурс в 10000 перезаписываний — упомянутый раздел 28.7.4 даташита на принтер и на рабочий стол. А если не устраивает, расширяйте память за счёт внешнией памяти. Это тоже достаточно подробно описано, если знать где искать описание.

Каждый электрик должен знать:  Устройство для протягивания проводов и кабелей
Добавить комментарий