Badi, като водещ пазар за наемане на стаи, по своята същност е пълен с медийно съдържание. Ние наистина го мислим, потребителите са качили милиони снимки, откакто стартирахме преди три години. Ако имате свободна стая, ще качите много снимки на вашия страхотен апартамент, които го правят да се откроява. Освен това ще искате бъдещите ви съквартиранти да знаят как сте и в профила си ще включите добре изглеждащо селфи, но ако сте любител на домашни любимци, можете също да добавите снимка на вашия четирикрак приятел, и следователно описвайки повече за вашата личност, отколкото просто да го напишете в биографията си.

Това оставя нашите специалисти по данни с огромно количество неструктурирани данни за анализ. Вече използваме структурирани данни от потребителски профили, като възраст, професия, пол и т.н., за да разберем поведението им в платформата, да проучим как се представят новите и вълнуващи функции, да създадем по-добри препоръки за нашите потребители и т.н. Следващата ни логична стъпка бяха снимките. Има много анализи, които можем да направим и да подобрим потребителското си изживяване, ако използваме тази информация. Какви знания можем да извлечем от тях? Някои потребители контактуват ли само със стаи, които са пълни с естествена светлина? Предпочитат ли да живеят с хора, които се представят практикуващи спорт? Нека се опитаме да отговорим на някои от тези въпроси, но преди това ще трябва да преведем тези изображения по начин, разбираем за компютър. Нека извлечем функцииот тях.

Изображение с един мегапиксел, с много лошо качество за настоящите стандарти на камерата, се състои от 1 милион пиксела, които имат три цветни канала, червен, зелен и син. Това означава, че за модел на машинно обучение едно изображение е 3 милиона колони! Наличието на това огромно количество функции „е проблем“ за моделите за машинно обучение. Трябва да намалим размерите на тези изображения до нещо поносимо за компютър, но което все още кодирасъщността им. Това е мястото, където се намесват невронните мрежи.

За наш късмет ние стоим на рамото на гиганти. През последните години отбелязахме огромен напредък в изкуствените невронни мрежи. Грубо казано, те са системи, смътновдъхновени от човешкия мозък, които са способни да научават сложни модели, а невронитеса математически операции върху данните. Дали данните са затваряне на S&P, съдържанието на туитове, аудио файлове или изображения зависи от вас.

Една много активна област на изследване в невронните мрежи е класификацията на изображения. Задачите на това поле могат да бъдат разграничаване какво има на снимката, откриване на обекти по пътя, което е необходимо, за да научите вашата Tesla да шофира, или „откриване на хотдог“. Мрежите, използвани за тези задачи, се наричат ​​конволюционни невронни мрежи(CNN), тъй като използват конволюции, които са математически операции, които емулират реакцията на невроните към визуални стимули, виждайки само в заобикалящата го зона. Прилагането на конволюцията върху цялото изображение означава преминаване през него на части.

През последните години преживяваме огромна демократизация на AI, като много рамки са с отворен код и вече обучени най-съвременни мрежи се „пускат“, готови за използване. Най-интензивната част от време и вероятно ресурси при проектирането на дълбока невронна мрежа е събирането на етикетирани изображения и обучението им, така че е лукс да можете да ги използвате, без да имате клъстер от компютри, работещи с дни.

Много от тези мрежи обаче може да не са подходящи за желаната от нас задача. CNN обикновено са обучени да откриват хиляди различни обекти и може да ни е интересно да различаваме двойни легла от единични легла, а не куче от кола. Ето къде се намесва трансферното обучение. То се състои в прехвърляне на знанията на невронна мрежа, обучена за обща задача, т.е. откриване на хиляди различни обекти, към ваша конкретна задача, като например откриване на добре изглеждащ апартамент. Това става, като вземете междинни слоеве на невронната мрежа, наречени вграждания, и ги използвате като вход за вашия конкретен проблем. Тези вграждания са междинно представяне на изображението, не много специфично за основния проблем, но способно да кодира важна информация за изображението. Резултатът от този процес преобразува изображение във вектор с фиксиран размер на числа с плаваща запетая.

Това представяне има много малко смисъл за хората. Те са оценката на дълъг списък от верижни производни на конкретната стойност на това изображение, все още проблем с много големи измерения, който човек може да разбере. За да видим резултатите от него, ние кодирахме стотици хиляди магове за стаи и потребители в Badi и групирахме подобни вграждания. За невронните мрежи използвахме Keras за извличане на кодировки, като си играехме с различни архитектури, като VGG16 и Resnet50, с подобни резултати. И в двата случая премахнахме напълно свързания слой, който картографира невроните към изходите на модела.

След като получихме вграждането на изображенията, използвахме клъстериране на K-Means от Scikit learn:

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

Както можете да видите, групирането на вграждания създава групи от изображения с подобна природа, черти на лицето и т.н., които си приличат еднона друго. Това е така, защото междинният слой в невронните мрежи кодира форми или модели, а не конкретния клас, към който принадлежат.

Ако обичате Data Science, страстно искате да създадете удивителен продукт чрез изкуствен интелект и наистина искате да революционизирате начина, по който хората намират следващия си дом, Badi е мястото за вас. Разгледайте нашата страница за работа или свържете се с мен с всички ваши въпроси.