ТИ МАШИНА
І Я МАШИНА
Частина 4
У попередніх матеріалах міні-курсу лекцій про машинне навчання спільно з Abto Software ми розглянули види машинного навчання, типи задач, які вони здатні вирішувати, та алгоритми, які стають у пригоді для розв'язання цих задач. Ми вже розглянули спам-фільтри, кредитний скоринг та інші завдання машинного навчання. Сьогодні поговоримо про практичні задачі та випадки застосування машинного навчання у реальному житті.

Написав: Дмитро Чумаченко
Картки намалювала: Дарія Манцола
Алгоритм методу виглядає так:

1. На першому етапі ми вибираємо кількість необхідних кластерів і випадковим чином розташовуємо їхні центральні точки або центроїди. Щоб з'ясувати кількість необхідних кластерів, можна просто поглянути на дані і спробувати визначити якісь окремі групи.
Наприклад, в окрузі проходять вибори, і потрібно розмістити пункти голосування. Вони повинні бути розташовані таким чином, щоб містити приблизно однакову кількість людей і бути в центрі виборчої дільниці з цим пунктом голосування. В такому прикладі люди, що належать до пункту голосування, будуть кластером, а сам пункт – центроїдом.


2. Потім для кожної точки з набору даних визначається відстань до кожного з центрів кластерів. І саме до того центру, який найближче до точки, відносимо цю точку.
Тобто на мапі дивимось відстань від місця проживання кожного мешканця округу до кожного з пунктів голосування. Кожного мешканця закріплюємо за тим пунктом голосування, до якого його відстань найменша.

4. Повторюємо ці кроки доти, доки не досягнемо необхідної нам точності або доки центроїди кластерів не перестануть змінюватися з кожною ітерацією.
Тобто результатом буде розділений на пункти голосування округ з пунктом голосування, що розташований в оптимальному для мешканців місці.

Перевагою методу є його простота в реалізації, а недоліком те, що необхідно знати кількість кластерів заздалегідь.



3. Після того, як ми призначили всі наші точки до певних центрів, ми беремо середню відстань від кожної точки кластера до центроїда і переміщуємо його.
Тобто, розраховуємо середню відстань від пункту голосування до мешканців, що закріплені за ним, і переміщуємо пункт так, щоб він був віддалений на цю відстань від найвіддаленіших мешканців, закріплених за пунктом.

Алгоритм методу виглядає так:

1. На першому етапі ми вибираємо кількість необхідних кластерів і випадковим чином розташовуємо їхні центральні точки або центроїди. Щоб з'ясувати кількість необхідних кластерів, можна просто поглянути на дані і спробувати визначити якісь окремі групи.
Наприклад, в окрузі проходять вибори, і потрібно розмістити пункти голосування. Вони повинні бути розташовані таким чином, щоб містити приблизно однакову кількість людей і бути в центрі виборчої дільниці з цим пунктом голосування. В такому прикладі люди, що належать до пункту голосування, будуть кластером, а сам пункт – центроїдом.


2. Потім для кожної точки з набору даних визначається відстань до кожного з центрів кластерів. І саме до того центру, який найближче до точки, відносимо цю точку.
Тобто на мапі дивимось відстань від місця проживання кожного мешканця округу до кожного з пунктів голосування. Кожного мешканця закріплюємо за тим пунктом голосування, до якого його відстань найменша.

4. Повторюємо ці кроки доти, доки не досягнемо необхідної нам точності або доки центроїди кластерів не перестануть змінюватися з кожною ітерацією.
Тобто результатом буде розділений на пункти голосування округ з пунктом голосування, що розташований в оптимальному для мешканців місці.

Перевагою методу є його простота в реалізації, а недоліком те, що необхідно знати кількість кластерів заздалегідь.



3. Після того, як ми призначили всі наші точки до певних центрів, ми беремо середню відстань від кожної точки кластера до центроїда і переміщуємо його.
Тобто, розраховуємо середню відстань від пункту голосування до мешканців, що закріплені за ним, і переміщуємо пункт так, щоб він був віддалений на цю відстань від найвіддаленіших мешканців, закріплених за пунктом.

Алгоритм методу виглядає так:

1. На першому етапі ми вибираємо кількість необхідних кластерів і випадковим чином розташовуємо їхні центральні точки або центроїди. Щоб з'ясувати кількість необхідних кластерів, можна просто поглянути на дані і спробувати визначити якісь окремі групи.
Наприклад, в окрузі проходять вибори, і потрібно розмістити пункти голосування. Вони повинні бути розташовані таким чином, щоб містити приблизно однакову кількість людей і бути в центрі виборчої дільниці з цим пунктом голосування. В такому прикладі люди, що належать до пункту голосування, будуть кластером, а сам пункт – центроїдом.


2. Потім для кожної точки з набору даних визначається відстань до кожного з центрів кластерів. І саме до того центру, який найближче до точки, відносимо цю точку.
Тобто на мапі дивимось відстань від місця проживання кожного мешканця округу до кожного з пунктів голосування. Кожного мешканця закріплюємо за тим пунктом голосування, до якого його відстань найменша.

4. Повторюємо ці кроки доти, доки не досягнемо необхідної нам точності або доки центроїди кластерів не перестануть змінюватися з кожною ітерацією.
Тобто результатом буде розділений на пункти голосування округ з пунктом голосування, що розташований в оптимальному для мешканців місці.

Перевагою методу є його простота в реалізації, а недоліком те, що необхідно знати кількість кластерів заздалегідь.



3. Після того, як ми призначили всі наші точки до певних центрів, ми беремо середню відстань від кожної точки кластера до центроїда і переміщуємо його.
Тобто, розраховуємо середню відстань від пункту голосування до мешканців, що закріплені за ним, і переміщуємо пункт так, щоб він був віддалений на цю відстань від найвіддаленіших мешканців, закріплених за пунктом.

ЗА ПІДТРИМКИ
Обробка природної мови
Обробка природних мов або Natural Language Processing (NLP) – це цілий пласт завдань на стику штучного інтелекту і комп'ютерної лінгвістики, з якими кожен з нас стикається щодня: автоматичний переклад, автозаміна в телефоні, чат-боти, різні агрегатори тощо.
У середині ХХ століття вийшла відома стаття Алана Тюринґа «Computing Machinery and Intelligence» (Обчислювальна техніка та інтелект), у якій вперше згадується знаменитий тест Тюринґа. Він вважається ідентифікатором штучного інтелекту: якщо комп'ютер може підтримати розмову з людиною, а вона не зрозуміє, що розмовляє з машиною, ця машина є штучним інтелектом. Це і стало початком NLP, основною метою якого є створення системи, яка дозволила б людині звертатися до комп'ютера своєю природною мовою. Ця величезна галузь містить безліч підзавдань. Тому сучасні перекладачі переважно працюють на основі статистичного підходу Розглянемо деякі з них.
Чат-боти
Чат-боти – один з найпопулярніших трендів останніх років. Чат-бот – це простий інтерфейс, який створений спеціально для месенджерів. Головна відмінність чат-бота від сайту в тому, що ним можна керувати за допомогою простих текстових команд у чаті. Наприклад, «де найближчий японський ресторан?». Сьогодні у вигляді чат-ботів реалізовані служби технічної підтримки, надання консультаційних послуг, проведення опитувань і навіть процес оплати в банках.
Простий чат-бот є деревом з набором запитів і відповідями на них, і може бути реалізований за допомогою спеціальних сервісів людьми, які не мають спеціальної підготовки. Але хороші чат-боти – це гібридні системи, які об'єднують в собі моделі машинного навчання, класичні алгоритми і моделі, засновані на правилах. Текст користувача, який подається на вхід чат-бота, перетворюється в токени, у цьому випадку – контейнери з даними зазначеного розміру. Зазвичай токенізатор розбиває запит на окремі слова. Потім послідовність токенів розпізнається за допомогою системи розпізнавання сутностей (яка виявляє зміст слів, що розпізнано відповідно до наявної бази даних і може бути реалізована, наприклад, за допомогою методу опорних векторів. Це робиться схожим до методу машинного перекладу способом. На цьому етапі в запиті перебувають ключові слова, зміст яких залежить від завдань, що вирішує чат-бот (як-от назва міста, марка продукту, найменування валюти тощо).
Отримані токени (які складаються з тексту) перетворюються на вектор (тобто на числові значення) за допомогою вже готових моделей, навчених на великих обсягах текстів (однією з найпопулярніших є модель Word2Vec). Вектор передається в систему розуміння природної мови для аналізу його разом із попереднім діалогом, тобто аналізований запит користувача обробляється в контексті попереднього діалогу. Так визначається клас завдання і значення підкласів, які повинні бути виконані. Ці дані подаються в менеджер діалогів, який здійснює відповідну класу і підкласу дію (видає відповідь на запит, здійснює замовлення, оформляє підписку тощо).
Машинний переклад
Одним з найпопулярніших підзавдань NLP є машинний переклад. З кожним роком перекладачі краще можуть впоратися з текстами. Існують два підходи до машинного перекладу: заснований на правилах і статистичний. Природна мова – дуже складна система, яка погано піддається опису за допомогою набору правил. Тому сучасні перекладачі переважно працюють на основі статистичного підходу. Такий підхід містить три етапи: збір даних, навчання моделі і декодування. На першому етапі система порівнює паралельні тексти, наприклад, статті та книги в оригіналі і їхні версії іншими мовами, перекладені професіоналами. Щоб модель навчилася, таких текстів має бути велика кількість. Коли навчена модель отримує дані для перекладу, машина-декодувальник підбирає найбільш ймовірний варіант з моделі і видає його на виході. Саме для того, щоб модель навчалася краще, в Google-перекладачі можна запропонувати свій варіант перекладу. У такому випадку декодувальниками стають користувачі, навіть не підозрюючи цього.
Однією з найкращих у світі компаній в галузі NLP є українська Grammarly, яка надає сервіс виправлення не тільки граматичних, а й стилістичних помилок.
Розпізнавання мовлення
Персональний асистент
Персональні асистенти дуже популярні, і майже всі ІТ-гіганти мають свої рішення для цього – наприклад, Siri для iOS, Cortana для Windows, Amazon Echo від Amazon. Персональний асистент становить сукупність моделей і систем розпізнавання мовлення, чат-бота і класифікатора. Людина робить голосовий запит в систему, яка перетворює його в машинний запит. Отриманий запит надсилається в базу даних або систему пошуку в інтернеті, і користувачеві повертається запитуваний контент, який перетворюється на мовлення.
Розпізнавання мовлення щораз частіше використовується в повсякденному житті для спрощення взаємодії користувача з машиною. Застосовуються такі системи для автоматизованого прийому дзвінків, керування «Розумним домом», в сервісах для людей з обмеженими можливостями, та банально для набору повідомлень у смартфоні. Щоб зрозуміти, як це працює, потрібно згадати з курсу шкільної фізики і те, що звук – це накладання хвиль з різною частотою та амплітудою. Для аналізу звуку сигнал необхідно розбити на множину проміжків і взяти середні значення частоти та амплітуди на кожному з них. Так звукові коливання перетворюються на набір чисел, придатний для обробки. Отриманий набір чисел розбивається на фрейми, тобто відрізки близько 10 мілісекунд, які ми і будемо розпізнавати. Фрейми накладаються один на одного для згладжування отриманих результатів. Із сукупності фреймів шляхом порівняння амплітуди хвиль виокремлюються слова, тобто ми намагаємося знайти тишу в аудіопотоці. На останньому етапі числові значення слів порівнюються з базою даних, у якій вже є набори тексту і таких самих числових значень звуків. У базі даних знаходиться найближче значення і виводить1-3 сся відповідний текст.


Комп'ютерний зір
Комп'ютерний зір – це галузь, яка займається завданнями аналізу зображень і відео. Здавалося б, завдання полягає в тому, щоб дізнатися, що зображено на картинці. Але це не так просто. Наприклад, на питання, що таке стілець, можна відповісти, що це предмет з чотирма ніжками і спинкою. Але чи так це?
Тобто, навіть таку просту річ, як стілець, складно описати термінами форм. Можна описати стілець як щось, на чому можна сидіти. Але як пояснити це машині, яка не знає, що таке «сидіти»? Щоб зрозуміти, який предмет перед вами, потрібні знання, життєвий досвід, а інколи і просто інтуїція. Завдання комп'ютерного зору складне, тому сьогодні добре вирішуються тільки певні його підкласи. Розглянемо деякі з них.
Розпізнавання тексту
Завдання розпізнавання тексту полягає в тому, що потрібно знайти зображення тексту на картинці і відобразити це зображення у вигляді текстових даних, з якими можна працювати. Безліч сучасних додатків використовують алгоритми, що вирішують це завдання, починаючи від простого розпізнавання відсканованих текстів, закінчуючи перекладачами, які здатні перекласти текст з фотографії. Перед обробкою зображення алгоритмами розпізнавання проводиться його попередня обробка, спрямована на поліпшення якості зображення, яка може містити фільтрацію зображення від шумів, підвищення різкості, контрастності зображення, вирівнювання тощо. З обробленого зображення виокремлюються слова. Такі сегментовані слова класифікуються, і розбиваються на символи (перевіряється з якою ймовірністю вони збігаються з символами з бази даних). Розпізнані символи узагальнюються назад у слова.
Пошук зображень в інтернеті
Перший приклад – пошук зображень в інтернеті. Зараз більшість пошукових сервісів дозволяють користувачеві знайти схожу до завантаженого зображення картинку. Для цього зображення в інтернеті індексуються, для них будуються представлення (наприклад стілець, червоний, чотири ніжки, тощо), з яких формується розмічена база даних. Те саме відбувається і з зображенням, завантаженим користувачем – за формою, кольором або за допомогою користувачів з нього витягується представлення, за яким і шукаються схожі картинки. Завдання це складне, тому що в мережу завантажені мільярди зображень (наприклад, тільки в Instagram щодня завантажуються понад 100 мільйонів зображень і 500 мільйонів сторіз), тому необхідна висока продуктивність.
Розпізнавання людей
Без розпізнавання осіб в сучасному світі неможливо оформити візу, отримати кредит або навіть просто розблокувати деякі моделі смартфонів. Наприклад, в метро китайського міста Шеньчжень турнікети сканують обличчя пасажира, і за допомогою розпізнавання сплачується за проїзд. З точки зору машини це завдання ділиться на два: знайти обличчя на знімку і знайти на ньому ті особливості, які відрізняють цю людину від інших людей з бази даних.
Найпопулярнішим методом пошуку осіб на зображеннях, який відрізнявся своєю швидкістю й ефективністю, до недавнього часу був каскадний бустинг Віоли-Джонса. Розберімо його принцип роботи. На першому етапі із зображення забирають колір, воно стає подібним до зображення в градації сірого (режим кольору зображення у відтінках сірого кольору), і, як наслідок, зображення перетворюється в матрицю яскравості. На другому етапі на зображення накладається одна з чорно-білих прямокутних масок, які називаються ознаками Хаара, з якою «проходяться» по всьому зображенню, змінюючи її положення та розмір. За орієнтир завжди мають якесь порогове значення. Алгоритм додає коефіцієнти яскравості пікселів фото (різницю яскравості відносно до білої та чорної частин маски), які перебувають під пікселями маски, і розраховує різницю значень чорної та білої частини маски. Якщо різниця перевищує певне значення, далі працюємо з цим фрагментом, якщо ні – забуваємо про нього, тут обличчя немає. З появою нейронних мереж його популярність дещо впала, проте його досі використовують.
Для власне розпізнавання особи машина шукає опорні точки на обличчі, з яких складає його риси. Для цього виокремлюється приблизно 100 таких точок (відстань між очима, ширина ніздрів, довжина носа, відстань від чола до носа, від підборіддя до губ тощо). Потім машина порівнює отримані значення з базою даних. Якщо значення збігаються зі значеннями для певної людини, яка є в базі даних, система ідентифікує людину.
Інженери R&D компанії Abto Software розробили технологію виявлення жорстокості. Вона має на меті попереджати правоохоронні органи про будь-які акти насильства. Таку технологію можна встановити до систем нагляду в аеропортах, школах, на парковках, торгових центрах тощо.
Медична діагностика
Таргетована реклама
Таргетована реклама – це підбір рекламного контенту під ваші уподобання і належність до конкретного сегменту. Основне в таргетованій рекламі – це дані, до того ж не звичайні стать/вік, а величезні пласти даних, які ви генеруєте щодня. Під час встановлення всіх додатків в ліцензійній угоді можна почитати, які саме дані ви самі даєте розробникам. Потім ці дані використовуються або самими платформами, як-от Google чи Facebook, або продаються спеціальним компаніям, які є посередниками між платформами, що збирають дані і платформами, що показують рекламу. Так, Facebook і Instagram збирають не тільки те, що ви написали в профілі, але і ваші коментарі, репости і лайки. Tinder збирає інформацію про ваші уподобання. Додатки таксі аналізують вашу геолокацію і навіть можуть змінювати ціну залежно від отриманих даних.
Час правильного діагностування дуже важливий, і що раніше захворювання буде виявлене – то простіше вжити необхідних заходів. Сьогодні медична діагностика за допомогою машинного навчання вирішує величезний пласт завдань. У деяких дослідженнях точність такої діагностики близька до 100%, а для виявлення деяких хвороб на ранніх стадіях це єдине рішення, тому що лікарі на цьому етапі бувають безсилі. Залежно від хвороби можна аналізувати різні дані пацієнта. Це можуть бути результати різних аналізів, комп'ютерної томографії, електрокардіограми і навіть знімки шкірного покриву. Для точного аналізу таких даних потрібна велика вибірка даних хворих та здорових людей. Алгоритм класифікації зіставляє дані, подані на вхід, з наявною базою і визначає ймовірність наявності у пацієнта того чи іншого захворювання.

Наприклад, недавно проведений експеримент показав, що вартість замовлення таксі Uber з iPhone вища, ніж така ж поїздка, замовлена з Android. Етичність такої реклами – суперечливе питання, тому що вона може бути маніпулятивною: чого тільки вартує випадок з виборами президента США 2016 року, для яких на основі аналізу профілів 50 мільйонів користувачів Facebook компанія Cambridge Analytica побудувала передвиборчу кампанію Трампа.
Працює це так: додатки, соціальні мережі і сайти збирають інформацію про користувачів. Компанії-посередники або самі розробники порівнюють дані про користувача з різних джерел, наприклад, з сервісу таксі, Facebook і Google, виявляють патерни поведінки користувача і визначають його належним до якогось сегменту (посилання на частину абто2 про кластеризацію), (такі сегменти не мають чітких ознак, зрозумілих людям, як-от «жінка від 16 до 18, незаміжня, без дітей»). У масиві даних сегмента шукається інший користувач з такими ж патернами поведінки, і вам пропонують рекламу тих продуктів, які зацікавили схожого користувача.


У міні-курсі лекцій про машинне навчання ми спробували пояснити, що це таке та як це працює, але машинне навчання – це величезна галузь штучного інтелекту, яка розвивається дуже швидко, а нові методи з'являються щодня. Наука приходить у бізнес і залишає за бортом тих, хто не хоче підлаштовуватись. Машинне навчання зараз перебуває на піку, і наступні хвилі його розвитку точно зроблять світ таким, яким ми навіть не можемо уявити.


Abto Software – українська ІТ компанія, що з 2007 року створює унікальні програмні рішення для лідерів у галузі інтернету, електронного урядування, енергетики, медицини, будівництва та безпеки. Візія компанії – стати партнером NASA та розвивати українських комп'ютерних інженерів. З 2015 року у Abto Software функціонує R&D відділ, який спеціалізується на Artificial Intelligence, Machine Learning та Computer Vision проектах і розробляє прототипи власних продуктів. Щороку компанія організовує безкоштовний літній навчальний інтенсив з Artificial Intelligence & Computer Vision.