Без данни няма изкуствен интелект
Досега правилата ги пишехте вие: съветникът от урок 7 знае какво да съветва, защото вие сте му го казали. От този урок нататък посоката се обръща — системата ще открива правилата сама, като разглежда примери. В урок 2 нарекохме това „подход, основан на данни“.
Но какво точно са данните? Спам филтърът чете писма, навигацията гледа карта, гласовият асистент слуша. Компютърът обаче работи само с числа. Днес ще видим как всяко от тези неща се записва в паметта.
Данни
Записани наблюдения за света — числа, текст, изображения, звук, — които могат да се съхранят, да се сравнят и да се обработят от програма. За машинното обучение данните са примерите, от които системата се учи.
Четирите вида данни
| Вид | Пример | Как се записва | Колко място заема |
|---|---|---|---|
| Числа | възраст 17, температура 36.6 | цяло число (int) или дробно (float/double) | 4 или 8 байта на число |
| Текст | „Здравей“, адрес, коментар | код за всеки символ (Unicode) | 1–4 байта на символ |
| Изображение | снимка, сканиран документ | матрица от пиксели; всеки пиксел е число (или три числа за цвят) | милиони байтове преди компресия |
| Звук | запис на глас, песен | отчети на амплитудата 44 100 пъти в секунда | около 10 МБ за минута преди компресия |
Видеото не е пети вид — то е редица от изображения (25–60 в секунда) плюс звук. Затова е и най-„тежкото“ нещо, което телефонът ви съхранява.
Числа: int и float
Числата са най-лесният случай — те вече са числа. Единственият въпрос е колко памет да заделим и дали искаме дробна част. Това познавате от C#:
int vazrast = 17; // 32 бита: от −2 147 483 648 до 2 147 483 647
double temperatura = 36.6; // 64 бита: дробно число с ограничена точност
bool zakusva = true; // да/не — 1 бит смисъл, 1 байт на практикаЦелите числа се пазят точно. Дробните — приблизително: компютърът работи в двоична система, а числа като 0.1 в нея са безкрайни дроби и се отрязват.
Текст: код за всеки символ
Компютърът не знае какво е буква. За всеки символ има уговорен номер — таблица, наречена Unicode. Латинските букви имат номера от старата таблица ASCII (A = 65, a = 97), кирилицата е по-нататък (А = 1040, а = 1072).
| Символ | Код | Символ | Код |
|---|---|---|---|
| A (латинско) | 65 | А (кирилица) | 1040 |
| a (латинско) | 97 | а (кирилица) | 1072 |
| 0 (цифра) | 48 | Д | 1044 |
| интервал | 32 | д | 1076 |
Думата „Да“ в паметта е 1044 1072. Когато пишете string ime = "Да"; в C#, зад кулисите стои точно тази редица. Буквите на кирилица са подредени по азбучен ред, така че Б = 1041, В = 1042 и т.н.
При записване във файл най-често се ползва кодирането UTF-8: латинските букви заемат 1 байт, кирилските — 2. Съобщение от 100 букви на кирилица е около 200 байта. Нищожно малко в сравнение с една снимка.
Изображение: матрица от пиксели
Черно-бяла снимка е матрица — таблица с редове и колони, — в която всяка клетка е яркостта на един пиксел. Цветната снимка има по три числа на пиксел: колко червено, колко зелено и колко синьо (RGB). Чисто червено е (255, 0, 0), бяло е (255, 255, 255), черно — (0, 0, 0).
Снимка 1920×1080 пиксела има 2 073 600 пиксела, по 3 байта всеки — над 6 милиона байта. Файлът от телефона е много по-малък, защото форматите JPEG и PNG компресират данните: съседните пиксели обикновено са почти еднакви и това се използва.
Звук: отчети на амплитудата
Звукът е трептене на въздуха. Микрофонът го превръща в напрежение, а компютърът измерва това напрежение през равни интервали — десетки хиляди пъти в секунда. Всяко измерване е едно число, наречено отчет (sample).
Стандартът за музика е 44 100 отчета в секунда, по 2 байта всеки, в два канала (ляв и десен). Една минута е около 10 милиона байта. Форматът MP3 свива това десетина пъти, като изхвърля честоти, които ухото и без това не чува.
За разпознаване на реч звукът обикновено се превръща в картина — спектрограма, в която хоризонтално е времето, вертикално са честотите, а яркостта е силата. Така задачата за звук става задача за изображение.
Какво трябва да запомниш
- Изкуственият интелект, основан на данни, се учи от примери — затова първо трябва да разберем как се записват примерите.
- Четири вида данни: числа, текст, изображения, звук. Видеото е изображения плюс звук.
- Числата са int (точни, цели) или float/double (дробни, приблизителни).
- Текстът е редица от кодове на символи по таблицата Unicode; еднакви на вид символи могат да имат различни кодове.
- Изображението е матрица от пиксели; всеки пиксел е едно число (яркост) или три (RGB).
- Звукът е редица от отчети на амплитудата — 44 100 числа за всяка секунда.