Тематичне моделювання на шляху до розвідувального інформаційного пошуку. Лекція в Яндексі

Нещодавно в Москві пройшла конференція Data Fest, організована спільнотою Open Data Science і Яндексом. Цією публікацією ми відкриваємо серію расшировок доповідей з Data Fest. Автор першої доповіді — доктор наук, визнаний фахівець з машинного навчання і викладач Школи аналізу даних Костянтин В'ячеславович Воронцов.


Всяку чи пошукову функцію виконує Яндекс або Google? На жаль, поки немає. Існують такі типи пошуку, при яких ніяка видача не буде вважатися правильною. І справа навіть не в релевантності, а в тому, що потрібен інший пошук — крім звичного нам усім. Під катом ви знайдете розшифровку лекції про розвідувальному пошуку, а також більшість слайдів.



Друзі, ми всі тут зібралися для того, щоб зробити світ кращим, а людей розумнішими. Що заважає людям ставати розумнішими? Я б сказав, що психологічні, технологічні бар'єри між людьми і знанням. Мою доповідь про те, як сучасні інформаційні технології, напевно, в найближчому майбутньому дозволять валити ці бар'єри, які все ще залишаються.

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

Ідея така: чому я декларую, що ми хочемо зробити людей розумнішими? Тут напевно є скептики, які скажуть: «Ха-ха-ха, людину не зміниш». Але я скептикам нагадаю, що коли люди не вміли ні читати, ні писати, а знання поширювалися виключно усним способом, обростали легендами і міфами, забувалися, модифікувалися до невпізнання і т. д. Але потім люди придумали, що треба писати книги, друкувати книги. Це сталося, коли європейські священики зрозуміли: коли вони читають проповіді, з року в рік одне і те ж, народ все одно не запам'ятовує, не розуміє, сприймає як-то неправильно. І що потрібно всіх навчити грамоті.

Далі було ще кілька інформаційних революцій. Врешті-решт з'явився інтернет, пошукові системи, і знання стало ближче до людей. Але здається, що все одно чогось не вистачає. Все одно я від моїх колег-учених, людей знання, час від часу чую скаргу, що я почав вести дослідження, прочитав купу літератури, а через півроку, три, п'ять років раптом виявив, що все, що я зробив, вже опубліковано 10 років тому. Як же так? Ти роками займався своєю роботою і не зумів знайти те, що хтось зробив до тебе. Як це можливо при сучасних пошукових можливостях? Виявляється, все-таки цей бар'єр між людиною і знаннями існує. Зараз я сказав про технологічний бар'єр. Якщо чисто про психологічний — трієчники ніколи не любили відмінників, і це зрозуміло, і з цим ми зараз з вами не поборемося. Але валити технологічні бар'єри дуже хочеться.

Тому виникають нові парадигми інформаційного пошуку, про яких сьогодні хотілося б з вами поговорити.



Почнемо ми з того, що приблизно 10 років тому стали з'являтися, активно обговорюватися нові парадигми концепції інформаційного пошуку.



Зокрема такий вираз — Exploratory Search. Як перевести це на російську? Я перекладаю це як «розвідувальний пошук», деякі перекладають як «дослідницький пошук». Якщо подивитися на цю діаграму, то зліва пошукові потреби, до яких ми звикли. І сучасні пошукові системи, які добре шукають за ключовими словами, вирішують завдання знайти найближчу аптеку, де є ліки і де воно найдешевше. Або знайти щось конкретне, і ви знаєте, як це позначити словами. Але якщо ви хочете розібратися в новій для вас предметної області — у вас будуть проблеми. Я, фахівець з аналізу даних, нещодавно став розбиратися в електрокардіографії. Я зовсім не медик: ні в кардіографії, ні в електрокардіографії нічого не тямлю. Мені потрібно швидко зрозуміти структуру цієї предметної області. Дізнатися, що саме читати в першу чергу, щоб з'ясувати, де вона перебуває на стику з тим, що я добре знаю. З тим, де я професіонал.

І такі інформаційні потреби виникають все частіше і частіше у людей все більш широкого спектру професій. Ми вже не говоримо лише про студентів, викладачів, науковців, дослідників. Це маркетологи, лікарі, юристи, журналісти — хто завгодно. Все більше людей починають щось самостійно шукати в інтернеті, поповнювати свої знання. Питання — як робити це максимально ефективно?

Ми починаємо використовувати пошукові системи для самоосвіти — щоб щось досліджувати, пізнавати щось нове. І тут ми розуміємо, що нам їх не вистачає, тому що вони недостатньо ефективно покривають ці потреби.



Проблема полягає в тому, що коли ми шукаємо за ключовими словами, ми повинні достатньо точно знати, що ми шукаємо. І ми повинні припускати, що існує правильна відповідь. Ці дві передумови — рівно не такі, коли ми в новій для нас предметної області. З одного боку, ми не дуже добре розуміємо, що саме ми шукаємо. Ми самі хочемо розібратися. Ми ще не володіємо термінологією, єдине, що ми можемо — ставити в пошуковому рядку якісь вирази, слова. Результати пошуку завжди як-то прив'язані до зазначених словами. Коли ми дізнаємося нові слова, то розуміємо, що насправді треба було шукати саме це, а не те, що ми шукали досі. Але потрібно багато десятків таких прозрінь у итерационном процесі, щоб більш-менш почати орієнтуватися. І все одно: ви можете займатися цим роками, але чогось важливого не знайти.

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

Так що існують відмінності між тим, чого б ми хотіли — а ми б хотіли картину предметної області, — і звичним ітеративним пошуком. Ми звикли query-browse-refine, тобто дав запит, подивився відповідь, поліпшив запит і так ітеративне багато разів.

Ось приблизно десятирічної або навіть більшої давності парадигми, які виникають. Чим information seeking відрізняється від information retrieval? Останнє — область інформаційного пошуку, те, чим займається Яндекс. А information seeking — це трошки зміщений акцент, це не наука про весь інформаційний пошук, а наука про те, як користувачі поводяться, коли щось шукають, як влаштований цей ітераційний розвідувальний процес, коли користувач в процесі пошуку дізнається, що ж йому насправді потрібно.

Є така мантра з області цього information seeking — що спочатку ви повинні отримати загальну картину, потім скористатися засобами масштабування і фільтрації, заглибитися всередину, побачити картину більш широко, що з неї вибрати і потім — заглибитися до самих деталей.

Чому я виділив шматочок цієї мантри червоним? Дуже часто, коли розказують про якісь нові способи візуалізації великих обсягів інформації, показують велику картинку, граф. І у багатьох вже ідіосинкразія на такі картинки. Їх занадто часто і багато показують, але не пояснюють, що з ними робити далі.

Ідеологи information seeking це пояснили. Не треба забувати, що є не тільки перший етап, коли ви overview дали. Також дайте користувачеві спосіб зробити зум, заглибитися, відфільтрувати і дістатися до самого контенту. Коли ця технологія цілком реалізована і вона інтерактивна, то вона починає працювати. А якщо ви обмежилися першим етапом — тоді, звичайно, крім красивої картинки ви нічого не бачите.

Також виникло поняття close reading. Це те, до чого ми звикли, — лінійне читання тексту. Ми чогось конспектуючи, підкреслюємо, виділяємо фломастерами і т. д. Пильну читання.

Ось інша концепція, яку запропонував 10 років тому Франко Моретті, італійський соціолог літератури. Він задався питанням, чому в світовій літературі 99,9% ніким не читається, і як зрозуміти, про що вся ця література. Якщо він такі питання задає по відношенню до художньої літератури, то тим більше вони справедливі для наукової літератури, для знання. Яким чином можна все охопити, зробити overview?



Є багато різних спроб представити великі обсяги наукового знання у вигляді якихось карт. Звичайно, передбачається, що потім будуть можливості масштабування.

Ось наприклад, картки медичних знань. Ця карта мені не дуже подобається — тут явно є якась географічна метафора. Є щось на зразок країн, які називаються, а іншим шрифтом і іншим кольором щось на зразок міст підписано. Можна йти далі, придумувати сенс для доріг, річок і т. д. Але здається, що все це перевантажене. Ви дивитеся на це і розумієте, що вам незручно. Чому? Давайте будемо пробувати усвідомлювати.



Ось ще один спосіб візуалізації. Мені він подобається більше, він більш зрозумілий. Це наша з вами область — data science, data mining, якісь слова тут з'явилися, які вже добре видно, на відміну від попереднього слайда.

Мені тут дещо не подобається. Коли велика клітинка розбивається на більш дрібні, це ієрархічна структура знання — і дуже добре, що вона з'явилася і що ви можете так заглиблюватися в клітинки. Вони зазначеним фрактальним чином будуть дробитися на все більш дрібні, поки ви десь не дійдете до тексту. Це як раз здорово, це хороша ідея. Але мені не дуже подобається принцип, що таке дроблення великих на дрібні чисто візуально, графічно, будується від того, що більш велика клітинка має бути в середині, а більш дрібні — навколо неї. Зникає двовимірна топологія. Ми представляємо певну проекцію, якусь карту на площині, на екрані, тому близькість там повинна бути семантично навантажена. А тут виходить, що ми тільки що представили ієрархію.



Ось ще один приклад, вже ближче. І таких прикладів в інтернеті можна знайти багато. Багато хто намагається будувати карти всієї науки з різних колекцій. Є просто колекції статей, є колекції анотацій, є колекції, де враховуються посилання між статтями, тобто цитування інформація. Є колекції, в яких є інформація про те, як користувачі завантажували і читали ті чи інші статті. Взагалі, ці типи інформації можна використовувати, щоб будувати такі карти науки.

Якщо придивитися до цієї карті, відразу кидається в очі, що всі чомусь розташувалося по колу. От економіка, ось computer science, математика, сільське господарство, фізика, хімія, медицина, біологія, фармакологія, neuroscience, психологія — далі все як-то до гуманітарного циклу звелося. Помітили, є цикл: точні, природничі, гуманітарні. Цикл замкнувся. І топологія такої картини знання не двовимірна, як здається тут на картинці. Мова йде про окружності, одномірної структурі. Так, вона замкнута в кільце, але це цікаве спостереження.



А ось дуже схожа картинка. Вона зроблена абсолютно іншими людьми і засобами, на зовсім інших колекціях, але ми знову бачимо ті ж області: computer science, математику, інженерію, фізику, химиу, геологиу, біологію, біотехнологію, молекулярну біологію, brain, медицину, охорону здоров'я, гуманітарку, соціалку — і знову вони замикаються на комп'ютерні методи дослідження. Знову окружність виникає.

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



Ось інше уявлення — але, на жаль, не автоматично побудоване, а вручну. Є такий фахівець з теорії складності, Брайан Кастеллані, який з року в рік оновлює цю карту теорії в науці про складності. Він виділяє основні напрямки і розкладає їх по роках. На відміну від попередніх карт, з'явилася двумерность. Є горизонтальна вісь, яка відповідає часу та вертикальна вісь, відповідна темами. Можна розгледіти ці теми, приблизно п'ять лінійок, що показують, як це виникає в computer science і кібернетики. Десь в кінці це доходить до аналізу даних, з'явилися нові кружечки.

Виділені теми йдуть горизонтально, і можна простежити, як тема розвивалася. А стрілочками показано, що основні роботи і прізвища вчених, які внесли основний внесок. Людина трудився, малював цю картинку. Виникає питання: а чи можна ці картинки малювати по будь-якій області науки чисто автоматично? Взяли ми всі ці десятки мільйонів наукових публікацій, виділили якимось чином, дали запит. Наприклад, теорія складності, за якою 10 опорних робіт, — це наш пошуковий запит. І ми хочемо на виході таку картинку. Тоді людям буде простіше розбиратися з новими для них областями знань. Приблизно до цього ми хотіли б прийти.

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



Наприклад, назвімо проект River Rose. Ось як вони візуалізують потік новин, пов'язаний з Сноуденом. 2013-2014 роки. Що вони роблять для того, щоб будувати такі картинки по будь-якій підмножині новинного потоку? Експерт повинен спочатку задати якесь переріз ієрархії тим, методів, автоматично колекції новин побудувати певну ієрархію, показати експерту. Той каже: тут, будь ласка, зробіть відсікання на верхньому рівні, ці теми мене не дуже цікавлять. А тут, про Сноудена, — будь ласка, детальніше, тут потрібно охопити більш низький рівень ієрархії.

Експерт поставив такий фільтр, а далі йому система автоматично показує таку картинку, показує, як теми розвивалися в часі, як вони перетиналися, зливалися, виникали, загасали. Все відображається у вигляді красивої картини, де теми течуть рікою. Далі цю картину можна інтерактивно змінювати, за новою генерувати і т. д. В принципі, це саме те, що називається distant reading. Ми хочемо розібратися в тому, як структурно влаштована ця область. В даному випадку є новинний потік, що стосується конкретних тем, і є можливість заглибитися, тому що можна підправити кожну тему, увійти в підтему і дійти до конкретних новин, прочитати їх. Зазначена система приблизно така, але він теж влаштована таким чином: горизонтальна вісь — час, вертикальна — якісь теми, обрані експертом.

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

Засобів візуалізації великих текстових колекцій придумано вже дуже багато. Рік тому, коли я виступав з доповіддю про це на Data Fest, їх було 170. Тепер я подивився — вже 330. За рік їх число подвоїлося. Люди вкладають дуже багато зусиль, щоб придумати зручні способи візуалізації великих обсягів текстів. Цим можна користуватися.



Давайте пофантазуємо про те, як же все-таки повинен бути влаштований розвідувальний пошук. Чого ми хочемо? Ми не можемо ставити запити у вигляді коротких словосполучень. Ми не знаємо, що шукаємо. А від чого ж ми відштовхуємося тоді? Якщо подумати, то, як правило, у нас є на руках якийсь великий текст, якась колекція тексту. Може, ми навіть самі в ньому ще не розібралися. Є якась стаття. Нам її тільки що скинув колега, ми ні в чому ще не розібралися, не знаємо, як ця стаття позиціонується всередині потрібної нам галузі науки. Спочатку ми це хочемо побачити. Тому запитом є текст як завгодно довгий — велика колекція може бути. І ми хочемо зрозуміти, яким темам стосується запит, що по них відомо ще, крім нашого документа. Хочемо зрозуміти, яка тематична структура цієї предметної області, які області є для неї суміжними і що взагалі читати в першу чергу. Це спектр запитів, пошукових потреб користувача, який займається самоосвітою, намагається розширити свої знання в тій або іншій області.

Хотілося б, щоб така можливість була в будь-якому додатку, де є якийсь текст. Хотілося б зрозуміти, на які теми цей текст, і використовувати його як запит — щоб відразу ж отримати картину з візуалізацією даної предметної області. Ось така мрія про розвідувальному пошуку. Ми навіть не йдемо ні в якій Google або Яндекс набивати що в пошуковий рядок. Нам навіть цього не треба робити. Такий спосіб пошуку завжди повинен бути під рукою, скрізь, де є як завгодно довгий текст. Ось така мрія.



Тут представлений якийсь концепт. Зрозуміло, що багато в світі йдуть до цієї мети різними шляхами. Хтось, як я і моя наукова група, — з точки зору математики, хтось з точки зору технологій. Як би ми хотіли, щоб це було влаштовано? Ми вже зрозуміли, що дуже здорово візуалізувати інформацію в двох осях: час-тематика. Дуже здорово, якщо є можливість тематику дробити на підтеми, мати досить велике дерево. Причому бажано, щоб воно будувалося автоматично — щоб там не було ніяких УДК, що складаються з 80 тис. пунктів, придуманих співтовариством з десятків тисяч експертів протягом більше ста років. Ця людськи підтримувана структура постійно застаріває. Такого нам не треба. Нам треба з допомогою інформаційних технологій зробити так, щоб подібні структури будувалися на льоту, автоматично, з того контенту, який є в інтернеті.

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

Як нам йти до цієї мрії?



Насправді, вже багато чого готовий. Технологічна ланцюжок, яка тут мислиться, складається з багатьох відомих і готових технологій, які відпрацьовані в сучасних пошукових системах. Є Яндекс, Google, багато чого ще. Вміємо робити інтернет-краулинг, фільтрацію контенту — це важливо, тому що нам потрібна система пошуку по знанню, а не комерційна інформація, якою тьма. Не потрібні котики, лайки і т. д. Нам потрібно виділити знання. Такі технології теж є.

Тематичне моделювання. Як з колекції наукових документів побудувати безліч тем? Це важливе питання.

Як шукати? Ідея проста до геніальності. Ми вміємо шукати за словами документи, це називається інвертованим індексом. А якщо у нас пошук за змістом, тематикою, то що ми повинні зробити? Ми повинні зрозуміти, даний документ запиту — він на які теми? Документ може бути дуже довгим, але число тим у ньому може бути не дуже великим. Якщо ми вміємо представляти будь-який документ у вигляді набору тим — може бути, з вагами, що визначають, наскільки кожна тема в ньому представлена, — то далі виникає рівно та ж ситуація, яка була в нас раніше з звичайним пошуком за словами. Ми за словами шукали документи, цим займався інвертований індекс. А тепер ми шукаємо за темами документи. У нас як будь-який запит, так і будь-який документ тепер представлені не словами, а темами. А технологія залишається — знову-таки, інвертований індекс.

Далі потрібно вміти вирішувати завдання ранжирування, візуалізувати, тому що є 330 вже готових засобів візуалізації. Далі — вміти робити персоналізацію. Чому? З чим пов'язана ця ідея? Як влаштований пошуковий запит людини, який, наприклад, хоче мати під рукою якусь картину тих областей знань, з якими він стикається, будь то вчений, будівельник, журналіст, маркетолог — неважливо. Він просто збирає якісь отрывочки, якісь текстики, вони десь у нього складені, в якихось течках. Ця татко як раз і є пошуковим запитом. Більш того, постійно діючим. Більш того, персоналізованим. Тому що він або його робоча група цей запит розділяє. Для них постійно можна організувати потік поповнення інформації з інтернету по даній тематиці. Це, фактично, не що інше, як персоналізація, рекомендаційна система.

Чому я виділив червоним тематичне моделювання? Я про нього хочу поговорити далі. Це математична основа даної технології, ключова ланка.

А монетизація — основна проблема. Чому такого сервісу досі немає, якщо всі технології готові? Тому що ніхто ще не придумав, як його монетизувати. Розумники, інтелектуальна еліта суспільства, яка потенційно буде користуватися цим засобом, — ну не клацає вона на рекламу, не потрібна вона таким людям. Чи треба придумати, яку рекламу їм давати, щоб вони таки на неї кликали. Це теж якийсь челендж", який поки перешкоджає реалізації цих чудових ідей.



Отже, про тематичне моделювання. Інтуїтивно ми сприймаємо тему як якусь спеціальну термінологію предметної області, як набір термінів, які спільно зустрічаються в деякому досить вузькому підмножині документів. Це можна формалізувати мовою частотності слів або умовних ймовірностей. Для нас тема — розподіл ймовірностей над словником слів. В математичній темі одні слова більш часті, а в біологічній — інші. Зрозуміло, що тема — таке умовний розподіл.

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



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

У такій моделі нам дано те, що ліворуч, а праворуч потрібно шукати розподілу.



У цьому полягає аналіз даних. На вході у нас колекція документів, які складаються зі слів заданого словника. Нам відомі частоти слів, а хочеться знайти параметр даної ймовірнісної моделі. Якщо придивитися, перед нами не що інше, як матричне розкладання. Ось пропозиція нашої вихідної матриці, «слова — документи», у вигляді добутку двох матриць: «слова на теми» і «теми на документи».

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

Потрібно придумувати розумні додаткові обмеження на ці матриці. Матриця φ — розподіл слів у темах, θ — розподіл тим в документах.



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

Для поліпшення інтерпретованих дуже допомагає вміти поєднувати слова у словосполучення — терміни предметних областей. Якщо ви бачите термін «машина опорних векторів», значить, швидше за все, даний текст про машинне навчання. Якщо ви розглядаєте указнные три слова окремо, то такий текст може бути про що завгодно з інженерних областей. Багато всяких різних вимог. Багатомовність, наприклад: ми хочемо задавати запит на одній мові, а відповідь отримувати на іншому. Крім того, ми хочемо, щоб ця технологія швидко працювала, щоб вона була лінійно масштабована по довжині колекції, щоб ми її могли на кластерах распараллеливать і т. д.



Тематичне моделювання — область, яка розвивається приблизно з 1999 року, коли Томас Хоффман придумав модель імовірнісного латентного семантичного аналізу. Потім модель Девіда Блея, латентний розміщення Діріхле, помістила цю задачу в контекст байєсівського навчання. І далі тематичне моделювання розвивалося практично на 100% усередині цього контексту. Я якісь основні віхи тут зазначив. Взагалі тематичних моделей напридумано кілька сотень, а може, навіть тисяч за ці трохи більше ніж 15 років. На даному слайді можна надовго затриматися, але я не буду.



Байесовское навчання. Можна намагатися пояснювати, чому все співтовариство тематичного моделювання щільно село саме на цю парадигму машинного навчання, але вона породжує певні проблеми. В першу чергу, в основі байєсівського виведення лежить схема, що ми задаємо апріорне розподіл на наші параметри моделі, на наші матриці φ і θ, додаємо туди дані і отримуємо апостеріорні розподілу. Цей перехід нетривіальне — доводиться виконувати нетривіальну математику і кожне обмеження на матрицях φ і θ, на жаль, вимагає унікальною математичної роботи, що кілька перешкоджає створенню з цього універсальної гнучкої технології.

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



А ми придумали спосіб, як уникнути цих ускладнень, як дуже легко можна комбінувати різні моделі, і, головне — як будувати моделі з необхідними властивостями.



Підхід ось який. Ми кожну з сотень моделей, відомих у літературі, вміємо представляти у вигляді деякого регуляризатора, деякого додаткового функціоналу до основної задачі. А основне завдання — вона на максимум правдоподібності.

Якщо ми хочемо від нашої моделі чогось ще, ми можемо представити наші додаткові побажання у вигляді якоїсь добавки до критерію. До речі, це дуже добре вписується в байєсовський підхід — мова йде про логарифм апріорних розподілів на параметри φ і θ.

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



Правда, виникає питання, як знаходити ці ваги, але про це трохи пізніше.

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



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



Таким чином можна зробити технологію. Ми її зробили — вже три роки існує проект з відкритим кодом BigARTM, який реалізує досить ефективне розпаралелювання цього регуляризованного ЕМ-алгоритму на ядрах. На кластерах — поки немає. Досі не було під рукою настільки великий колекції, щоб її потрібно було распараллеливать на кластерах. Як тільки з'явиться — зробимо.

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



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

Наш софт — він уніфікує ці проміжні кроки і робить промисловий код на С++, який працює швидко, за три роки ми його вилизали досить непогано. Іншими словами, неформализуемым залишається аналіз вимог і впровадження, а це саме те, що і повинно бути. Треба думати про прикладної задачі, а не як побудувати байєсівську модель. Не треба її будувати, все набагато простіше можна зробити.



Є інтерфейс Python, є маса готових прикладів того, як вирішуються завдання тематизації для різних колекцій.



Тут ми показуємо, що ми попереду найближчих конкурентів по швидкості. Колекція з 3,7 млн документів з Вікіпедії у нас за 4,5 хвилини оттематизировалась. Після цього за 14 секунд ще 10 тис. документів протематизировались — і перед нами досить застарілі дані, зараз це ще в кілька разів швидше.



Хотів би розповісти про один експеримент, який ми ставили, щоб підійти до цієї задачі — задачі про те, як побудувати тематичний розвідувальний пошук.

Ми взяли колекцію Хабрахабра — цю роботу робила моя студентка Настя Яніна, вона працює в Яндексі. Колекція теж була мультимодальної, в ній були не тільки слова, а ще інформація про авторів статей, людей, які коментують, теги, хаби і т. д.



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



Далі ми робимо тематичний пошук, вводимо косинусную міру близькості між тематичними векторами документа і запиту і мірою близькості ділимо документи — видаємо перші топ-k документів.



Далі виникає питання, як виміряти якість цього пошуку.

Ми придумали таку методологію, за якою ми використовуємо асесорів, придумали такі запити. Зараз, в першому експерименті, їх було 25 складених вручну, модель така: начальник інформаційної служби дає своєму підлеглому завдання розібратися за одну годину в тій чи іншій темі сайту, на Хабре. І людина спочатку має зазначену роботу зробити руками. Як правило, на цю тему йде від півгодини до години у різних людей.

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



Ось приклад одного із запитів. Як влаштований запит? Це приблизно сторінка тексту А4. Ще є коментарі для асесорів — з критеріїв релевантності та нерелевантности.



Ось приклади заголовків запитів, які ми використовували. Зрозуміло, що тут щось в тематиці Хабра. При цьому жоден запит не може бути виконаний звичайної пошуковою системою. Не вистачає вам набрати просто [3D принтери] і дізнатися щось про 3D принтерах осудна — ви отримаєте величезну кількість видач.



Далі ми використовуємо звичайні стандартні критерії точності та повноти. Оскільки у нас є асесори, разметившие цю колекцію, то ось як виглядають ці 25 запитів.



Перейду відразу до фінального результату.



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



Ось, що вдалося знайти оптимум по 200 темами. Це цікаво, тому що у багатьох завданнях оптимум по числу тим не вдається виявити, чим більше тим беремо — тим краще. Але коли ми використовуємо критерій якості пошуку, виявляється, все-таки існує оптимальне число тем.



На цьому зупинюся. Я заготовив ще кілька розповідей, але не встигаю. У презентації вони залишаться, якщо у вас будуть питання, мені можна написати лист. Дякую за увагу.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.