<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>research &#8211; Biznes Myśli</title>
	<atom:link href="https://biznesmysli.pl/tag/research/feed/" rel="self" type="application/rss+xml" />
	<link>https://biznesmysli.pl/tag/research/</link>
	<description>by Vladimir, sztuczna inteligencja w biznesie</description>
	<lastBuildDate>Wed, 15 May 2024 14:25:54 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://biznesmysli.pl/wp-content/uploads/2017/03/cropped-bm-sq-1-32x32.jpg</url>
	<title>research &#8211; Biznes Myśli</title>
	<link>https://biznesmysli.pl/tag/research/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Dobre praktyki i sztuka nazywania rzeczy w Machine Learning</title>
		<link>https://biznesmysli.pl/dobre-praktyki-w-machine-learning/</link>
					<comments>https://biznesmysli.pl/dobre-praktyki-w-machine-learning/#respond</comments>
		
		<dc:creator><![CDATA[Vladimir]]></dc:creator>
		<pubDate>Sat, 24 Jul 2021 15:25:19 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Akademia]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[DataScience]]></category>
		<category><![CDATA[MachineLearning]]></category>
		<category><![CDATA[NLP]]></category>
		<category><![CDATA[R&D]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[TCL]]></category>
		<guid isPermaLink="false">https://biznesmysli.pl/?p=5934</guid>

					<description><![CDATA[<p>Witam&#160; w kolejnym podcaście Biznes Myśli. Dzisiaj goszczę Marcina Możejko. To jest bardzo ciekawy, pozytywny człowiek. Marcin ma bogate doświadczenie zawodowe &#8211;&#160; z jednej strony twarde, wiedza matematyczna, z drugiej strony programistyczne, a z trzeciej strony to wszystko jeszcze łączy Data Science jako&#160; inżynier i próbuje być na krawędzi tych światów, które wcale nie jest tak łatwo połączyć.&#160; Marcin opowiada, dlaczego to robi i jak to sobie definiuje. Ostatnio pracował&#160; w TCL &#8211; chińska firma, która ma oddział w Warszawie. Akurat odszedł stamtąd. Dlaczego odszedł i co robi teraz &#8211; o tym wszystkim będzie dzisiaj. Ta rozmowa mogłaby być jeszcze dłuższa i myślę, że warto byłoby ją jeszcze kontynuować, bo niektórych wątków&#160; jeszcze w ogóle nie poruszyliśmy z Marcinem, a bardzo by się chciało je poruszyć. Też bardzo jestem ciekawy Twojej opinii, więc zapraszam do wysłuchania i czekam na informację zwrotną. Dzisiaj będzie gorąco, ale to nie tylko z powodu temperatur za oknem, zapowiada się bardzo ciekawa rozmowa. Cześć Marcin. Przedstaw się kim jesteś, czym się zajmujesz i gdzie mieszkasz? Cześć, nazywam się Marcin Możejko. Aktualnie jestem i mieszkam w Warszawie, a zajmuję się Machine Learningiem w bardzo szerokim podejściu, ponieważ mam to szczęście, że w chwili obecnej jestem bardziej w Akademii, ale przez wiele lat pracowałem zarówno w Akademii jak i biznesie, więc można powiedzieć, że byłem zarówno inżynierem jak i researcherem, ale też dosyć mocno zahaczyłem się o biznes. Bardzo dziękuję za zaproszenie i mam nadzieję, że będziemy mogli podzielić się swoimi doświadczeniami w tych tematach. Właśnie porozmawiamy i o Akademii, o doświadczeniu, o propozycji, którą miałeś i jaka była decyzja. Ale powiedz tak na początek: co ostatnio ciekawego przeczytałeś i&#160; dlaczego warto to przeczytać? Propozycja, którą bym tutaj polecił to są „Niewidzialne miasta” Italo Calvino. Jest to pozycja literacka bardzo ciekawa. Książka ma bardzo ciekawą formę.&#160; Składa się z 64 krótkich opowieści, które też mają określoną, matematyczną, strukturę. 64&#160; jest związane z szachownicą, w związku z tym są&#160; różne sugestie czytania tej książki. Fabuła opowiada o tym, że Marko Polo wędruje do Chin, tam spotyka Cesarza Chińskiego i opowiada mu o miastach, które odwiedził. Każde z tych 64 opowiadań&#160; jest opowiadaniem o jednym mieście. Bardzo chciałbym gorąco polecić tę książkę, ponieważ ona wbrew pozorom jest bardzo matematyczna. Wydaje mi się, że opowiada o takiej bardzo ciekawej przestrzeni pomiędzy kreatywnością a strukturą. Kreatywność to jest ten wędrowiec, a struktura to jest spotkany cesarz i jest dyskusja pomiędzy tymi dwoma końcami spektrum. Ja byłem zachwycony, więc na pewno gorąco polecam&#160; również inżynierom, wydaje mi się, że każdy wyciągnie z niej coś bardzo ciekawego. Doświadczenie Machine Learning &#38; Data Science Bardzo dziękuję za to polecenie. Teraz Marcin opowiedz troszkę więcej o swoim doświadczeniu Data Science, Machine Learning. Jakie projekty miałeś okazję wykonywać do tej pory, w jakich branżach pracowałeś? Wiem, że masz ogromne doświadczenie. Miałem szczęście zaczynać swoją karierę w czasach, w których inżynierów w Warszawie było bardzo mało. W związku z tym, kiedy było się inżynierem to parało się bardzo dużą ilością projektów z różnych źródeł. Uważam to za olbrzymie szczęście. Zaczynałem w ogóle w PwC firmie konsultingowej, gdzie pracowaliśmy z danymi stricte finansowymi albo klienckimi. Tam pracowaliśmy nad churn’em w banku wówczas, ale też mieliśmy okazję robić anomaly detection na czujnikach. Pracowaliśmy też dużo w wizji komputerowej dla dronów. Po PwC miałem krótką przerwę w Microsofcie, gdzie pracowaliśmy nad rozpoznawaniem języka naturalnego. Byłem w zespole tłumaczeń i budowałem model, który oceniał ryzyko takich tłumaczeń z pewnym komponentem tłumaczenia decyzji.&#160; A później przez 2 lata pracowałem jako główny inżynier w konsultingu w Warszawie, firma nazywała się Sigmoidal. Tam też pracowaliśmy nad bardzo dużą ilością projektów, które wchodziły zarówno w wizję komputerową, jak i rozpoznawanie mowy. Przede wszystkim natomiast był to język naturalny, ale też zdarzały się projekty typowo researchowe, nawet z takich fundacyjnych zagadnień Machine Learningu. Równolegle do tej pracy, w wolnych godzinach też pracowałem akademicko. Miałem absolutorium, ale pisałem magisterkę. Pracowaliśmy właśnie nad projektami związanymi z wykrywaniem raka jelita grubego na zdjęciach. Później też w ramach współpracy z Uniwersytetem pracowaliśmy nad modelami generatywnymi, w których generowaliśmy białka antybakteryjne. Mam jeszcze jedne doświadczenie, ale podejrzewam, że pogadamy o nim później, więc to zostawię na później 😉&#160; Ostatnia firma, w której pracowałeś &#8211; chińska firma TCL, która ma oddział w Warszawie. Co ciekawego tam robiłeś? Wydaje mi się, że jak wspomniałem wcześniej, że miałem dużo szczęścia w pracy z różnymi projektami to ten projekt był chyba największym szczęściem, który mi się przytrafił. Często jest tak, że w biznesie projekty są bardziej researchowe lub bardziej biznesowe, ten projekt był zarówno płodny biznesowo, jak i płodny badawczo, więc było to olbrzymie szczęście. A sam projekt dotyczył neural architecture search czyli inteligentnego przeszukiwania architektur. Jednym słowem, tworzyliśmy algorytmy albo sieci neuronowe, które modyfikowały lub tworzyły inne sieci neuronowe. Celem tego projektu było to, że TCL jest firmą, która produkuje bardzo szerokie portfolio urządzeń &#8211; od telewizorów przez smartfony, nawet klimatyzatory, kuchenki &#8211; wszystko właściwie tam jest. Każde z tych urządzeń miało jakiś określony chip, każdy z tych chipów miał określony silnik wykonywania inferencji sieci neuronowych, więc naszym zadaniem było stworzenie silnika, który znając to urządzenie, jak i znając ten silnik stworzy taki bardzo szybki algorytm (szczególnie do wizji komputerowej), rozwiązujący zadanie. Jest to problem o tyle ważny, ponieważ kiedy myślimy szczególnie o wizji komputerowej to takim dominującym podejściem jest podejście transfer learningowe czyli, że mam jakiś określony zbiór bazowych architektur, te architektury jakoś tam ubogacamy tak, żeby rozwiązywały nasze zadanie. Natomiast tych architektur wydaje mi się, jest wciąż stosunkowo mało. W związku z tym, my w pewnym sensie wypełnialiśmy luki pomiędzy tymi architekturami i dzięki temu byliśmy w stanie dotrzeć do większej ilości urządzeń i rozwiązywać większą ilość zadań, co było potwornie satysfakcjonujące. Tutaj jeszcze tylko wspomnę dla słuchaczy &#8211; o AutoML mamy osobny odcinek 101. Tam co prawda było na temat takiego klasycznego uczenia maszynowego, a nie poszukiwania sieci.&#160; Powiedz jeszcze trochę więcej na temat ciekawych wyzwań, które udało się znaleźć, bo te wyzwanie było całkiem nieintuicyjne. Wymień kilka wyzwań i z czego to wynika, jakie były rozwiązania. Wydaje mi się, że w chwili obecnej mówimy tutaj o Transfer Learningu, ale taki Transfer Learning jest dwufazowy. W pewnym sensie pierwsza faza jest taka, że ten Transfer polega na tym, że bierzemy konkretną architekturę i ta architektura w pewnym sensie jest wykorzystywana w naszych zastosowaniach, ale jest drugi taki Transfer Learning (nazwijmy to Meta Transfer Learning), który polega na tym, że jest to transfer w pewnym sensie z researchu, badań, Akademii, do biznesu w tym sensie, że to Akademia w pewnym sensie wymyśla problem. Czyli kiedy np. Akademia chce zbudować jakąś konkretną sieć, która zdaniem badaczy jest szybka to wówczas automatycznie to, w związku z tym, że biznes przejmuje te algorytmy od nich to właśnie to jest transferowanie również tego przekonania co do tego, że ta architektura jest szybka.&#160; W chwili obecnej wydaje mi się, że też z powodu tego, że badanie takie ogólne zajmują się ogólnie postawionymi problemami. Takim dominującym wyznacznikiem tego czy sieć jest szybka to jest liczba operacji wykonywanych w danej sieci. Możemy spojrzeć jak np. każda konwolucja jeśli chodzi o sieci konwolucyjne, wykonuje określoną liczbę operacji dodawania czy mnożeń czy operacji na liczbach zmiennych przecinkowych. To ta liczba właśnie jest takim uniwersalnym wyznacznikiem, czy sieć będzie wykonywana szybko czy wolno. Te sieci, które właśnie w Akademii według tego standardu są optymalizowane, żeby właśnie wykonywać szybko to właśnie te sieci przechodzą później do biznesu.&#160; To okazuje się, że generuje wiele problemów bardzo nieintuicyjnych, ponieważ ta sieć dokładnie tyle operacji ile stara nam się uzyskać się uzyskuje, ale okazuje się, że operacja nie jest operacji równa. I tak wiadomo, że na końcu to będzie wykonywane na jakimś konkretnym urządzeniu, konkretnym silniku.&#160; Powiem tutaj parę ciekawostek. Może zacznę od urządzenia. Np. okazuje się, że w chwili obecnej są bardzo określone przeploty np. w sieciach konwolucyjnych czyli np. kiedy używać większych, a kiedy mniejszych filtrów i to z powodu właśnie takich konkretnych optymalizacji niskopoziomowych. Różne przeploty po prostu dają różne wyniki, gdzie możemy mieć sieć, która wykonuje dokładnie taką samą liczbę operacji, ale z racji powiedzmy gdzie, jak głęboko w sieci, jakie operacje są wykonywane &#8211; te sieci będą miały zupełnie różne czasy wykonania.&#160; Drugą warstwą, o której też wydaje mi się, że mało się mówi jest też warstwa konkretnego silnika. Np. jeśli chodzi o smartfony to możemy właśnie też na różnych urządzeniach wykonywać sieci przy pomocy różnych silników. Takie dwa podstawowe to bardzo popularny w chwili obecnej to TF Lite, który towarzyszy TensorFlow&#8217;owi. To jest właśnie taki silnik wykonujący obliczenia w sieciach neuronowych na wielu urządzeniach. Ale też jest np. taki silnik, który nazywa się SNPE i jest związany z chipami Snapdragona. Okazuje się, że dokładnie dwie takie same sieci, wykonują się w zupełnie różnych czasach albo nawet nie to, że w zupełnie różnych, ale nie ma korelacji pomiędzy czasem wykonania. Wiadomo, że któryś silnik może być silniejszy, drugi wolniejszy. Okazuje się, że pojawia się tam potwornie dużo dziwnych czynników, które wpływają na wykonanie tej sieci. Taka chyba najbardziej ciekawa rzecz jest taka, że są pewne określone liczby filtrów, które każdy silnik preferuje np. TF Lite z naszych doświadczeń preferuje ilości filtrów w konwolucjach, które są podzielne przez 4 czyli np. intuicyjnie przejście z 4 filtrów do 3 filtrów może będzie się wykonywało tyle samo. W związku z tym kontrintuicyjnie zmniejszenie sieci może wręcz czasem nawet wolniej, bo rzeczy, które się dzieją w silniku sprawiają, że jednak z tych 3 filtrów nagle jakoś robią się 4, w związku z tym dodatkowa operacja też zabiera czas. W związku z tym może dochodzić do takich kontrintuicyjnych sytuacji, że zmniejszenie sieci spowoduje jej zwolnienie.&#160; Natomiast SNPE jest znacznie ciekawsze. Mianowicie SNPE preferuje ilość filtrów podzielną przez 32 i każda inna ilość filtrów jest źle wspierania. Czasami okazuje się, że zmniejszenie tej sieci albo nawet zwiększenie filtra dosłownie o 1 może totalnie wywrócić czas inferencji do góry nogami. W związku z tym jest tam bardzo duże pole do popisu, bardzo duże pole do optymalizacji. Wiele z tych rzeczy wydaje mi, że wręcz trzeba odkrywać. Jest to taka dodatkowa przestrzeń w optymalizacji modeli, która wydaje mi się być fascynująca, a podejrzewam nie do końca powszechnie&#160; znana. Powiedz,&#160; czym się skończył ten projekt? Jak się z tym czujesz, kiedy Twój model albo model, którego w jakiś tam sposób dotknąłeś, kręci się na milionach urządzeń? My właśnie rozwijaliśmy te algorytmy, które miały optymalizować te modele pod kątem różnych urządzeń. Co najmniej jeden model z tego co wiem. Niestety miesiąc temu odszedłem z TCL, więc na 100% wiem na pewno o jednym. Ale właśnie skończyło się to bardzo sprawnie działającym zespołem jak i również silnikiem do przeszukiwania tych architektur, który teraz nadal jest rozwijany i kilkanaście modeli już jest w kolejce do deploy. To uczucie jest potwornie satysfakcjonujące. Też mieliśmy takie zadanie z poprawianiem zdjęć w galerii więc wydaje mi się, że to na pewno jest mega przyjemne, kiedy po prostu ktoś będzie mógł w wolnej chwili delikatnie poprawić swoje zdjęcie, korzystając z mojego algorytmu. Muszę przyznać, że robi mi się zawsze ciepło na sercu, kiedy o tym myślę. A tutaj mam przynajmniej milion powodów, żeby coś takiego się działo. Nagrywając ten odcinek, używamy kamery. Właśnie widzę za Twoimi plecami dużo różnych książek. Są książki matematyczne, techniczne. Próbuje tak zrozumieć kim bardziej jesteś &#8211; czy chcesz się rozwijać w kierunku matematyka czy inżyniera? Bawiąc się architekturą, wybierając lepszą optymalizację to jest bardziej taka praca inżyniera. Jak się czujesz? To pytanie, które ja sobie musiałem w końcu&#160; kiedyś zadać osobiście. Zauważyłem, że w różnych miejscach czułem, że nie do końca pasuję. Kiedy&#160; studiowałem matematykę, zaczynałem z takiej bardzo inżynieryjnej strony, natomiast na pewno samo&#160; piękno matematyki, wręcz estetyczne i syntetyczne mnie zachwyciło. Natomiast kiedy bardziej poszedłem w tę stronę, to też czułem, że czegoś mi brakuje &#8211; brakowało tej&#160; technicznej strony.&#160; Zacząłem się nad tym głębiej zastanawiać i doszedłem do wniosku, że można te rzeczy właściwie ze sobą połączyć. Odnalazłem to połączenie. Dużą częścią pracy inżyniera jest umiejętność odpowiedniego nazywania rzeczy i wręcz wydaje mi się, że dobre nazwy, dobre zrozumienie rzeczy, nadanie im takiego sensu przez nazwę, pomaga rozwiązywać wiele...</p>
<p>Artykuł <a href="https://biznesmysli.pl/dobre-praktyki-w-machine-learning/">Dobre praktyki i sztuka nazywania rzeczy w Machine Learning</a> pochodzi z serwisu <a href="https://biznesmysli.pl">Biznes Myśli</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-speaker-spotify-mAdHr wp-block-lazyblock-speaker-spotify"><div class="wp-block-columns are-vertically-aligned-center">
<div class="wp-block-column is-vertically-aligned-center">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><a href="https://www.spreaker.com/user/9664330/bm-105" target="_blank"><img decoding="async" src="https://biznesmysli.pl/wp-content/uploads/2020/02/spreaker.png" alt="" class="wp-image-2150" width="213" height="71"></a></figure></div>
</div>
<div class="wp-block-column is-vertically-aligned-center">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><a href="" target="_blank"><img decoding="async" src="https://biznesmysli.pl/wp-content/uploads/2020/02/spotify-badge-button.png" alt="" class="wp-image-2149" width="192" height="93"></a></figure></div>
</div>
</div></div>


<p><br /></p>



<p><strong>Witam&nbsp; w kolejnym podcaście Biznes Myśli. Dzisiaj goszczę Marcina Możejko. To jest bardzo ciekawy, pozytywny człowiek. Marcin ma bogate doświadczenie zawodowe &#8211;&nbsp; z jednej strony twarde, wiedza matematyczna, z drugiej strony  programistyczne, a z trzeciej strony to wszystko jeszcze łączy Data Science jako&nbsp; inżynier i próbuje być na krawędzi tych światów, które wcale nie jest tak łatwo połączyć.&nbsp;</strong><br /><br /><br /></p>



<span id="more-5934"></span>



<p><strong>Marcin opowiada, dlaczego to robi i jak to sobie definiuje. </strong><br /><br /><br /><strong><br /><br />Ostatnio pracował&nbsp; w TCL &#8211; chińska firma, która ma oddział w Warszawie. Akurat odszedł stamtąd. Dlaczego odszedł i co robi teraz &#8211; o tym wszystkim będzie dzisiaj. Ta rozmowa mogłaby być jeszcze dłuższa i myślę, że warto byłoby ją jeszcze kontynuować, bo niektórych wątków&nbsp; jeszcze w ogóle nie poruszyliśmy z Marcinem, a bardzo by się chciało je poruszyć. Też bardzo jestem ciekawy Twojej opinii, więc zapraszam do wysłuchania i czekam na informację zwrotną.</strong><br /><br /><br /><br /><br /></p>



<p></p>



<p></p>



<p></p>



<p><strong>Dzisiaj będzie gorąco, ale to nie tylko z powodu temperatur za oknem, zapowiada się bardzo ciekawa rozmowa. <br /><br /></strong></p>



<p><strong>Cześć Marcin. Przedstaw się kim jesteś, czym się zajmujesz i gdzie mieszkasz?</strong><br /><br /></p>



<p></p>



<p></p>



<p>Cześć, nazywam się <a href="https://www.linkedin.com/in/marcin-mo%C5%BCejko-6b024bbb/" target="_blank" rel="noreferrer noopener">Marcin Możejko</a>. Aktualnie jestem i mieszkam w Warszawie, a zajmuję się Machine Learningiem w bardzo szerokim podejściu, ponieważ mam to szczęście, że w chwili obecnej jestem bardziej w Akademii, ale przez wiele lat pracowałem zarówno w Akademii jak i biznesie, więc można powiedzieć, że byłem zarówno inżynierem jak i researcherem, ale też dosyć mocno zahaczyłem się o biznes. Bardzo dziękuję za zaproszenie i mam nadzieję, że będziemy mogli podzielić się swoimi doświadczeniami w tych tematach.<br /><br /><br /></p>



<p><strong>Właśnie porozmawiamy i o Akademii, o doświadczeniu, o propozycji, którą miałeś i jaka była decyzja. Ale powiedz tak na początek: co ostatnio ciekawego przeczytałeś i&nbsp; dlaczego warto to przeczytać?</strong></p>



<p><br /><br /><br /></p>



<p>Propozycja, którą bym tutaj polecił to są „Niewidzialne miasta” Italo Calvino. Jest to pozycja literacka bardzo ciekawa. Książka ma bardzo ciekawą formę.&nbsp; Składa się z 64 krótkich opowieści, które też mają określoną, matematyczną, strukturę. 64&nbsp; jest związane z szachownicą, w związku z tym są&nbsp; różne sugestie czytania tej książki. Fabuła opowiada o tym, że Marko Polo wędruje do Chin, tam spotyka Cesarza Chińskiego i opowiada mu o miastach, które odwiedził. Każde z tych 64 opowiadań&nbsp; jest opowiadaniem o jednym mieście. Bardzo chciałbym gorąco polecić tę książkę, ponieważ ona wbrew pozorom jest bardzo matematyczna. Wydaje mi się, że opowiada o takiej bardzo ciekawej przestrzeni pomiędzy kreatywnością a strukturą. Kreatywność to jest ten wędrowiec, a struktura to jest spotkany cesarz i jest dyskusja pomiędzy tymi dwoma końcami spektrum. Ja byłem zachwycony, więc na pewno gorąco polecam&nbsp; również inżynierom, wydaje mi się, że każdy wyciągnie z niej coś bardzo ciekawego.<br /><br /><br /></p>



<h2 class="wp-block-heading">Doświadczenie Machine Learning &amp; Data Science <br /><br /></h2>



<p><br /><br /></p>



<p><strong>Bardzo dziękuję za to polecenie. Teraz Marcin opowiedz troszkę więcej o swoim doświadczeniu Data Science, Machine Learning. Jakie projekty miałeś okazję wykonywać do tej pory, w jakich branżach pracowałeś? Wiem, że masz ogromne doświadczenie. </strong><br /><br /><br /><strong><br /></strong></p>



<p>Miałem szczęście zaczynać swoją karierę w czasach, w których inżynierów w Warszawie było bardzo mało. W związku z tym, kiedy było się inżynierem to parało się bardzo dużą ilością projektów z różnych źródeł. Uważam to za olbrzymie szczęście. Zaczynałem w ogóle w PwC firmie konsultingowej, gdzie pracowaliśmy z danymi stricte finansowymi albo klienckimi. Tam pracowaliśmy nad churn’em w banku wówczas, ale też mieliśmy okazję robić <em>anomaly detection </em>na czujnikach. </p>



<p><br /><br /><br />Pracowaliśmy też dużo w wizji komputerowej dla dronów. Po PwC miałem krótką przerwę w Microsofcie, gdzie pracowaliśmy nad rozpoznawaniem języka naturalnego. Byłem w zespole tłumaczeń i budowałem model, który oceniał ryzyko takich tłumaczeń z pewnym komponentem tłumaczenia decyzji.&nbsp;<br /><br /><br /></p>



<p>A później przez 2 lata pracowałem jako główny inżynier w konsultingu w Warszawie, firma nazywała się Sigmoidal. Tam też pracowaliśmy nad bardzo dużą ilością projektów, które wchodziły zarówno w wizję komputerową, jak i rozpoznawanie mowy. Przede wszystkim natomiast był to język naturalny, ale też zdarzały się projekty typowo researchowe, nawet z takich fundacyjnych zagadnień Machine Learningu.</p>



<p><br /><br /><br /></p>



<p>Równolegle do tej pracy, w wolnych godzinach też pracowałem akademicko. Miałem absolutorium, ale pisałem magisterkę. Pracowaliśmy właśnie nad projektami związanymi z wykrywaniem raka jelita grubego na zdjęciach. Później też w ramach współpracy z Uniwersytetem pracowaliśmy nad modelami generatywnymi, w których generowaliśmy białka antybakteryjne. Mam jeszcze jedne doświadczenie, ale podejrzewam, że pogadamy o nim później, więc to zostawię na później <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" />&nbsp;</p>



<p><br /><br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Uncertainty estimation and Bayesian Neural Networks - Marcin Możejko" width="960" height="540" src="https://www.youtube.com/embed/dj-FKXxy7HQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p><br /><br /><br /><strong>Ostatnia firma, w której pracowałeś &#8211; chińska firma TCL, która ma oddział w Warszawie. Co ciekawego tam robiłeś?</strong><br /><br /><br /></p>



<p>Wydaje mi się, że jak wspomniałem wcześniej, że miałem dużo szczęścia w pracy z różnymi projektami to ten projekt był chyba największym szczęściem, który mi się przytrafił. Często jest tak, że w biznesie projekty są bardziej researchowe lub bardziej biznesowe, ten projekt był zarówno płodny biznesowo, jak i płodny badawczo, więc było to olbrzymie szczęście. </p>



<p><br /><br /><br />A sam projekt dotyczył <em>neural architecture search </em>czyli inteligentnego przeszukiwania architektur. Jednym słowem, tworzyliśmy algorytmy albo sieci neuronowe, które modyfikowały lub tworzyły inne sieci neuronowe. Celem tego projektu było to, że TCL jest firmą, która produkuje bardzo szerokie portfolio urządzeń &#8211; od telewizorów przez smartfony, nawet klimatyzatory, kuchenki &#8211; wszystko właściwie tam jest. </p>



<p><br /><br /><br />Każde z tych urządzeń miało jakiś określony chip, każdy z tych chipów miał określony silnik wykonywania inferencji sieci neuronowych, więc naszym zadaniem było stworzenie silnika, który znając to urządzenie, jak i znając ten silnik stworzy taki bardzo szybki algorytm (szczególnie do wizji komputerowej), rozwiązujący zadanie. Jest to problem o tyle ważny, ponieważ kiedy myślimy szczególnie o wizji komputerowej to takim dominującym podejściem jest podejście transfer learningowe czyli, że mam jakiś określony zbiór bazowych architektur, te architektury jakoś tam ubogacamy tak, żeby rozwiązywały nasze zadanie. </p>



<p><br /><br />Natomiast tych architektur wydaje mi się, jest wciąż stosunkowo mało. W związku z tym, my w pewnym sensie wypełnialiśmy luki pomiędzy tymi architekturami i dzięki temu byliśmy w stanie dotrzeć do większej ilości urządzeń i rozwiązywać większą ilość zadań, co było potwornie satysfakcjonujące.</p>



<p><br /><br /><br /></p>



<p><strong>Tutaj jeszcze tylko wspomnę dla słuchaczy &#8211; o AutoML mamy osobny odcinek 101. Tam co prawda było na temat takiego klasycznego uczenia maszynowego, a nie poszukiwania sieci.&nbsp;</strong><br /><br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="BM101 - AutoML: możliwości i wyzwania" width="960" height="540" src="https://www.youtube.com/embed/4ujhBnA_18w?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>



<p></p>



<p><strong>Powiedz jeszcze trochę więcej na temat ciekawych wyzwań, które udało się znaleźć, bo te wyzwanie było całkiem nieintuicyjne. Wymień kilka wyzwań i z czego to wynika, jakie były rozwiązania.</strong></p>



<p><br /><br /><br /></p>



<p>Wydaje mi się, że w chwili obecnej mówimy tutaj o Transfer Learningu, ale taki Transfer Learning jest dwufazowy. W pewnym sensie pierwsza faza jest taka, że ten Transfer polega na tym, że bierzemy konkretną architekturę i ta architektura w pewnym sensie jest wykorzystywana w naszych zastosowaniach, ale jest drugi taki Transfer Learning (nazwijmy to Meta Transfer Learning), który polega na tym, że jest to transfer w pewnym sensie z researchu, badań, Akademii, do biznesu w tym sensie, że to Akademia w pewnym sensie wymyśla problem. Czyli kiedy np. Akademia chce zbudować jakąś konkretną sieć, która zdaniem badaczy jest szybka to wówczas automatycznie to, w związku z tym, że biznes przejmuje te algorytmy od nich to właśnie to jest transferowanie również tego przekonania co do tego, że ta architektura jest szybka.&nbsp;</p>



<p><br /><br /></p>



<p>W chwili obecnej wydaje mi się, że też z powodu tego, że badanie takie ogólne zajmują się ogólnie postawionymi problemami. Takim dominującym wyznacznikiem tego czy sieć jest szybka to jest liczba operacji wykonywanych w danej sieci. Możemy spojrzeć jak np. każda konwolucja jeśli chodzi o sieci konwolucyjne, wykonuje określoną liczbę operacji dodawania czy mnożeń czy operacji na liczbach zmiennych przecinkowych. To ta liczba właśnie jest takim uniwersalnym wyznacznikiem, czy sieć będzie wykonywana szybko czy wolno. Te sieci, które właśnie w Akademii według tego standardu są optymalizowane, żeby właśnie wykonywać szybko to właśnie te sieci przechodzą później do biznesu.&nbsp;</p>



<p><br /><br /><br /></p>



<p>To okazuje się, że generuje wiele problemów bardzo nieintuicyjnych, ponieważ ta sieć dokładnie tyle operacji ile stara nam się uzyskać się uzyskuje, ale okazuje się, że operacja nie jest operacji równa. I tak wiadomo, że na końcu to będzie wykonywane na jakimś konkretnym urządzeniu, konkretnym silniku.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Powiem tutaj parę ciekawostek. Może zacznę od urządzenia. Np. okazuje się, że w chwili obecnej są bardzo określone przeploty np. w sieciach konwolucyjnych czyli np. kiedy używać większych, a kiedy mniejszych filtrów i to z powodu właśnie takich konkretnych optymalizacji niskopoziomowych. Różne przeploty po prostu dają różne wyniki, gdzie możemy mieć sieć, która wykonuje dokładnie taką samą liczbę operacji, ale z racji powiedzmy gdzie, jak głęboko w sieci, jakie operacje są wykonywane &#8211; te sieci będą miały zupełnie różne czasy wykonania.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Drugą warstwą, o której też wydaje mi się, że mało się mówi jest też warstwa konkretnego silnika. Np. jeśli chodzi o smartfony to możemy właśnie też na różnych urządzeniach wykonywać sieci przy pomocy różnych silników. Takie dwa podstawowe to bardzo popularny w chwili obecnej to TF Lite, który towarzyszy TensorFlow&#8217;owi. To jest właśnie taki silnik wykonujący obliczenia w sieciach neuronowych na wielu urządzeniach. Ale też jest np. taki silnik, który nazywa się SNPE i jest związany z chipami Snapdragona. </p>



<p><br /><br /><br />Okazuje się, że dokładnie dwie takie same sieci, wykonują się w zupełnie różnych czasach albo nawet nie to, że w zupełnie różnych, ale nie ma korelacji pomiędzy czasem wykonania. Wiadomo, że któryś silnik może być silniejszy, drugi wolniejszy. Okazuje się, że pojawia się tam potwornie dużo dziwnych czynników, które wpływają na wykonanie tej sieci. Taka chyba najbardziej ciekawa rzecz jest taka, że są pewne określone liczby filtrów, które każdy silnik preferuje np. TF Lite z naszych doświadczeń preferuje ilości filtrów w konwolucjach, które są podzielne przez 4 czyli np. intuicyjnie przejście z 4 filtrów do 3 filtrów może będzie się wykonywało tyle samo.</p>



<p><br /><br /><br /> W związku z tym kontrintuicyjnie zmniejszenie sieci może wręcz czasem nawet wolniej, bo rzeczy, które się dzieją w silniku sprawiają, że jednak z tych 3 filtrów nagle jakoś robią się 4, w związku z tym dodatkowa operacja też zabiera czas. W związku z tym może dochodzić do takich kontrintuicyjnych sytuacji, że zmniejszenie sieci spowoduje jej zwolnienie.&nbsp;</p>



<p><br /><br /></p>



<p>Natomiast SNPE jest znacznie ciekawsze. Mianowicie SNPE preferuje ilość filtrów podzielną przez 32 i każda inna ilość filtrów jest źle wspierania. Czasami okazuje się, że zmniejszenie tej sieci albo nawet zwiększenie filtra dosłownie o 1 może totalnie wywrócić czas inferencji do góry nogami. W związku z tym jest tam bardzo duże pole do popisu, bardzo duże pole do optymalizacji. Wiele z tych rzeczy wydaje mi, że wręcz trzeba odkrywać. Jest to taka dodatkowa przestrzeń w optymalizacji modeli, która wydaje mi się być fascynująca, a podejrzewam nie do końca powszechnie&nbsp; znana.</p>



<p><br /><br /><br /></p>



<p><strong>Powiedz,&nbsp; czym się skończył ten projekt? Jak się z tym czujesz, kiedy Twój model albo model, którego w jakiś tam sposób dotknąłeś, kręci się na milionach urządzeń?</strong></p>



<p><br /><br /><br /></p>



<p>My właśnie rozwijaliśmy te algorytmy, które miały optymalizować te modele pod kątem różnych urządzeń. Co najmniej jeden model z tego co wiem. Niestety miesiąc temu odszedłem z TCL, więc na 100% wiem na pewno o jednym. Ale właśnie skończyło się to bardzo sprawnie działającym zespołem jak i również silnikiem do przeszukiwania tych architektur, który teraz nadal jest rozwijany i kilkanaście modeli już jest w kolejce do deploy. To uczucie jest potwornie satysfakcjonujące. </p>



<p><br /><br /><br />Też mieliśmy takie zadanie z poprawianiem zdjęć w galerii więc wydaje mi się, że to na pewno jest mega przyjemne, kiedy po prostu ktoś będzie mógł w wolnej chwili delikatnie poprawić swoje zdjęcie, korzystając z mojego algorytmu. Muszę przyznać, że robi mi się zawsze ciepło na sercu, kiedy o tym myślę. A tutaj mam przynajmniej milion powodów, żeby coś takiego się działo.</p>



<p><br /><br /></p>



<p><br /><br /><strong>Nagrywając ten odcinek, używamy kamery. Właśnie widzę za Twoimi plecami dużo różnych książek. Są książki matematyczne, techniczne. Próbuje tak zrozumieć kim bardziej jesteś &#8211; czy chcesz się rozwijać w kierunku matematyka czy inżyniera? Bawiąc się architekturą, wybierając lepszą optymalizację to jest bardziej taka praca inżyniera. Jak się czujesz?</strong></p>



<p><br /><br /><br /></p>



<p>To pytanie, które ja sobie musiałem w końcu&nbsp; kiedyś zadać osobiście. Zauważyłem, że w różnych miejscach czułem, że nie do końca pasuję. Kiedy&nbsp; studiowałem matematykę, zaczynałem z takiej bardzo inżynieryjnej strony, natomiast na pewno samo&nbsp; piękno matematyki, wręcz estetyczne i syntetyczne mnie zachwyciło. Natomiast kiedy bardziej poszedłem w tę stronę, to też czułem, że czegoś mi brakuje &#8211; brakowało tej&nbsp; technicznej strony.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Zacząłem się nad tym głębiej zastanawiać i doszedłem do wniosku, że można te rzeczy właściwie ze sobą połączyć. Odnalazłem to połączenie. Dużą częścią pracy inżyniera jest umiejętność odpowiedniego nazywania rzeczy i wręcz wydaje mi się, że dobre nazwy, dobre zrozumienie rzeczy, nadanie im takiego sensu przez nazwę, pomaga rozwiązywać wiele problemów. Tak np. kiedy pracowaliśmy bardziej z biznesem, czyli z konkretnymi klientami,&nbsp; to np. nazywanie było potwornie istotne z perspektywy tego, żeby bardzo można było dokładnie określić problem, czyli zrozumieć, jakie są oczekiwania.</p>



<p><br /><br /><br /><br /><br /><br />Umiejętność nazywania rzeczy jest kluczowa, żeby znaleźć wspólny język i żeby tak naprawdę wiedzieć, co jest ważne i co tak naprawdę musimy osiągnięcia.</p>



<p><br /><br /><br /><br /><br /></p>



<p>Jeżeli spojrzymy sobie na to z innej strony, istotne jest także zbudowanie (pracując jako inżynier) też w takich biznesowych pipeline&#8217;ach to potwornie istotne było odpowiednie pokazywanie kroków, które tam się dzieją. Wówczas od tamtych nazw oczekiwaliśmy pewnie jakiejś separowalności, żeby też one brały pod uwagę urządzenia na jakich&nbsp; będą się wykonywały, ale też np. fajnie by było, żeby te różne nazwy wiązały się z czymś co potencjalnie później da się radę wykorzystać. </p>



<p><br /><br /><br />Zauważyłem, że właśnie jeśli się odpowiednio nazywa rzeczy, np. jeśli odpowiednio się powie, że ten komponent służy temu, że jeśli odbiorę ten tekst to ten tekst zwróci mi tę informację, to wówczas te nazwy nam pozwalają osiągnąć po pierwsze znacznie większą czytelność, a po drugie znacznie większą reużywalność.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Schodząc znowu poziom niżej, te poszczególne komponenty wiadomo, że trzeba zakodować korzystając z konkretnych frameworków, konkretnych języków itd. Podobnie jak mamy umiejętność nazywania w kodzie obiektów, interfejsów, to wiadomo, że to jest potwornie ważne, natomiast taką, wydaje mi się ważniejszą rzeczą, którą może trochę mniej się eksploruje, a którą odkryłem to jest to, że np. bardzo ważna jest separacja poszczególnych nazw od siebie. Mamy zazwyczaj do czynienia z co najmniej dwoma rodzajami nazw czyli takim nazwami naszymi czyli kiedy rozwiązujemy jakiś model oparty o tekst, pewnie mamy jakieś teksty, może czytelników. Pojawia się mnóstwo obiektów, które towarzyszą temu problemowi. </p>



<p><br /><br /><br />Natomiast wiadomo, że wszystko to trzeba w jakimś tam języku napisać, więc pewnie korzystamy Kerasa, Scikita, TensorFlow itd. Np. zauważyłem, że dobre nazwy są to takie odseparowane nazwy. Takie, które w pewnym sensie pozwalają odseparować te dwa światy, ponieważ kiedy te nazwy są nadmiernie związane ze sobą to zazwyczaj powoduje bardzo dużo problemów w dalszej części.</p>



<p><br /><br /><br /></p>



<p>Jak to się wiąże z tymi książkami? Wydaje mi się, że dobre nazwy są pomieszaniem ponownie dwóch takich sprzecznych światów. Zazwyczaj im prostsze są jakieś i np. w jakimś sensie skracają zapis, tym są przyjemniejsze. Natomiast z drugiej strony wiadomo, że ta estetyka nie do końca wiąże się z użytecznością. Wiadomo, że na koniec dnia te nazwy mają być przede wszystkim użyteczne. </p>



<p><br /><br /><br />W związku z tym, kiedy ja odkryłem, że zarówno mam problem z tą taką bardziej inżynieryjną częścią i z taką bardziej estetyczną czyli, że nie lubię przebywać w takiej syntetycznej przestrzeni, w której te nazwy są czyste. W tym wypadku przez tę syntetyczną przestrzeń, takie akademickie podejście do programowania obiektowego, które wydaje mi się jest bardzo syntetyczne albo właśnie takie podejścia stricte akademickie do problemów to np. lubię, podobają mi się, ale z drugiej strony wydaje mi się, że często one są oderwane od takiej konkretnej praktyki.</p>



<p><br /><br /><br /></p>



<p>Z kolei w tej praktyce to jest taka ciężka inżynieryjna praca, że ciężko jest podnieść głowę i spojrzeć na to, ponieważ jesteśmy skupieni na dowożeniu konkretnych zadań. Z tym też się nie do końca odnajdywałem, więc właśnie znalazłem sobie taką niszę pomiędzy. Właśnie mając szczęście, żeby pracując zarówno w biznesie jak i w akademii, jak i zarówno projektując jak i rozwiązując zadania, ogromnym szczęściem i radością dla mnie jest to, że udało mi się zaobserwować bardzo wiele złych nazw, dobrych nazw i właśnie w takim estetyczno-praktycznym procesie mogę tworzyć teraz swoje, co jest na pewno dla mnie wielkim szczęściem.&nbsp;</p>



<p><br /><br /></p>



<p><strong>Słuchając Ciebie aż się chce wykorzystać tę umiejętność&nbsp; nazywania rzeczy. Wróćmy jeszcze na moment do chińskiej firmy TCL. Jak to się stało, że z jednej strony zrobiłeś bardzo fajny projekt, czuć tę satysfakcję i nawet jak nie widać twarzy to czuć w głosie, że jesteś bardzo dumny z tego, ale z drugiej strony odszedłeś. Spróbujmy to nazwać, co to się stało?</strong></p>



<p><br /><br /><br /></p>



<p>To jest bardzo ciekawe zjawisko. Odszedłem dlatego, że dostałem bardzo dobrą propozycję doktoratu i współpracy z grupą onkologii obliczeniowej na Wydziale MIM w Warszawie. Muszę przyznać, że z powodów osobisto-zawodowych, nie podjąłem doktoratu, chodziło również o rzeczy materialne. </p>



<p><br /><br /><br />Natomiast przez wiele lat to było moim marzeniem, żeby pójść na ten doktorat, więc teraz ta okazja się przytrafiła, z czego byłem szczęśliwy. Natomiast ten projekt był bardzo interesujący, zadowalający, więc to była na pewno bardzo trudna decyzja. Ale ostatecznie stwierdziłem, że w związku z tym, że są to tematy medyczne i okazja do&nbsp; zrobienia czegoś dobrego dla&nbsp; ludzi, którzy zmagają się z chorobami, to stwierdziłem, że jeśli dałoby radę wykorzystać tę radość (nazwijmy to radość nazywania, modelowania również w takim szczytnym celu) to wówczas wydaje mi się, że to przyniosłoby mi znacznie więcej spełnienia.</p>



<p><br /><br /></p>



<p>Natomiast jeśli chodzi o takie nazywanie to właśnie nazwałbym to taką ciężką decyzją, w której wydaje mi się, że takie długofalowe, zewnętrzne motywy wzięły górę.</p>



<p><br /><br /><br /></p>



<p><strong>Czuć, jak mocno rezonuje pomaganie. Myślę, że też to jest to bardzo sensowne, logiczne, aby ten potencjał, który technologia wytwarza wykorzystywać w odpowiednim kontekście. Tutaj wielkie brawa.</strong></p>



<p><br /><br /></p>



<h3 class="wp-block-heading">Świta AI w Chinach <br /><br /></h3>



<p><strong>Ale jeszcze domknę wątek odnośnie chińskiej firmy TCL. Świat Chin jest dość zamknięty i z jednej strony wiadomo, że tam dużo się dzieje. Pracowałeś w firmie, w której miałeś styczność z chińczykami, wyczułeś trochę tą różnicę jak oni myślą, jak oni działają. Powiedz o takich swoich przemyśleniach, czym się różni takie klasyczne podejście europejskie od chińskiego?&nbsp;</strong></p>



<p><br /><br /><br /></p>



<p>Może zacznę od takiej rzeczy, która może wydawać się&nbsp; anegdotyczna. Jednak większość firm w Polsce jeśli współpracuje z zagranicą taką dalszą, to są jednak te firmy w Stanach Zjednoczonych. Jest to o tyle ciekawe, że tam jest przesunięcie takie, że kiedy tam jest wcześnie, to tam jest późno. W związku z tym taki klasyczny tryb pracy programisty, który raczej mimo wszystko eksploruje późniejsze godziny jest naturalnie wykorzystywany. Natomiast w tym wypadku różnica jest w drugą stronę. W związku z tym główne godziny takiego przecięcia, które mieliśmy z naszymi współpracownikami z Chin były godziny ranne. W związku z tym no właśnie głównie management zajmował się kontaktem z Chinami.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Natomiast te godziny dostępności były też znacznie dłuższe, ponieważ pierwszą rzeczą, którą na pewno warto o Chinach wiedzieć to to, że te godziny pracy są tam znacznie dłuższe. Faktycznie pracuje się do znacznie późniejszych godzin, w związku z tym też automatycznie to przecięcie z godzinami w Polsce było znacznie większe. Często inżynierowie w Chinach pracowali do takich godzin późnowieczornych.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Co do takich moich obserwacji z ograniczonego kontaktu to taka rzecz, która wydaje mi się wywarła na mnie największe wrażenie, to jest kwestia skali. Nie mówię tego oczywiście w kontekście&nbsp; ilości&nbsp; produkowanych rzeczy albo skali rynku, ale też skali całego środowiska i tego, jak rozwija się technologia. Firma, w której pracowałem &#8211; TCL&nbsp; zajmuje się produkcją ekranów i w pewnym momencie wręcz padło stwierdzenie i zachęta ze wszystkich stron, że: &#8222;Słuchajcie, wszędzie, gdzie możemy położyć ekran to fajnie byłoby dołożyć do tego jakąś sztuczną inteligencję&#8221;. </p>



<p><br /><br /><br />W związku z tym były to zarówno telefony jak i telewizory, które w naturalny sposób mają ekrany, ale np. jeśli w klimatyzatorze albo jeśli w kuchence możemy wstawić ekran i chip to czemu tam też nie wstawić sztucznej inteligencji. W związku z tym to gdzie to ziarno potencjalnych pomysłów było rozrzucane to było naprawdę imponujące. W sensie skala tych produktów, które były dostępne i w których potencjalnie można było uzyskać wkład była naprawdę imponująca.&nbsp;</p>



<p><br /><br /><br /></p>



<p>Druga rzecz, która zrobiła na mnie olbrzymie wrażenie to mnogość rozmaitych dostawców. Ten rynek jest zamknięty, ale z drugiej strony jest też bardzo duży. W ramach swojej pracy miałem do czynienia z olbrzymią ilością rozmaitych urządzeń, ale też rozmaitych chipów albo dostawców konkretnych fragmentów oprogramowania albo np. z chipami się wiązały różne silniki. Było to dla mnie zaskoczenie. W sensie mimo wszystko z perspektywy takiego europejskiego konsumenta, który ma dostęp do określonych produktów to zazwyczaj to spektrum jest dosyć szerokie, ale na pewno to było znacznie szersze. Więc to na pewno zwróciło moją uwagę.</p>



<p><br /><br /><br /></p>



<p>Z tym wszystkim się wiąże taka rzecz, że tam się pojawia mnóstwo wątków, więc naprawdę liczba wątków czyli takich eksperymentów, prototypów pracy, która właśnie jest wykonywana w próbach nowych zastosowań, eksploracji nowych technologii jest naprawdę fascynująca &#8211; jest olbrzymia. Porównując swoje doświadczenie ze współpracy z rynkiem amerykańskim i europejskim to tam to podejście jest takie bardziej skupione. W sensie, że jest wrażenie, że tych projektów eksploruje się mniej, ale eksploruje się je dłużej. Właściwie to jest bardzo dobre pytanie w sensie jak te rzeczy się ze sobą porównują. </p>



<p><br /><br /><br />Ciężko mi tutaj podać jakąś konkretną odpowiedź, bo z jednej strony chińskie firmy produkują naprawdę olbrzymią ilość urządzeń, toczy się olbrzymia ilość eksperymentów, ilość doświadczeń zdobywanych przy tych rzeczach jest naprawdę niewiarygodna. Też wydaje mi się, że eksplorowane są znacznie często ciekawsze scenariusze, które często brzmią jak science-fiction i może na pierwszy rzut oka właśnie te prototypy nie wyglądają jakoś zachwycająco, ale no naprawdę każda kolejna iteracja jest lepsza. </p>



<p><br /><br /><br />Taka rzecz, która mi przychodzi do głowy to z tego co pamiętam Xiaomi ostatnio wypuściło prototyp ładowarki, która stoi w pokoju i ładuje telefon bezprzewodowo bez konieczności kontaktu z telefonem. Skojarzyło mi się to dlatego, że ten prototyp działa. Wydaje mi się, że jest to wczesna faza, więc pojawia się wiele problemów, ale mimo wszystko zostało to przedstawione jako ciekawostka i podejrzewam, że prototyp toczy się dalej.&nbsp;</p>



<p><br /><br /></p>



<p>Natomiast mam wrażenie, że właśnie to moje doświadczenie z firmami w Europie jest takie, że owszem tam też w pewnym sensie ilość tych eksperymentów się toczy, natomiast jak już jakieś konkretne eksperymenty wchodzą w grę to ilość uwagi, która jest jej poświęcona jest znacznie większa, bo w związku z olbrzymią ilością skalą eksperymentów i ich zakresem, wydaje mi się, że też znacznie łatwiej jest takie eksperymenty ucinać na rynku chińskim. W związku z tym, też ten czas poświęcony na to jest znacznie krótszy.</p>



<p><br /><br /><br /></p>



<p>Wydaje mi się, że kolejne lata, na pewno obserwacja tego jak te różnice do takich produktów doprowadzą będzie potwornie interesująca. To były takie moje najbardziej poruszające obserwacje.</p>



<p><br /><br /><br /></p>



<p><strong>Każdy z nas, nawet jeżeli ma styczność z tym rynkiem,&nbsp; to jest zawsze taki wycinek, bo skala jest przeolbrzymia i w ogóle spróbować to jakoś usystematyzować co tam się dzieje i dokąd to prowadzi to pewnie nie jest takie łatwe, ale jest takie satysfakcjonujące. Jest taki żywy organizm, który w tej chwili mocno się rozpędza. </strong></p>



<p><br /><br /><strong>To jest taki być może już nastolatek, a już za chwilę będzie bardziej dorosły i czym to się skończy, jak to będzie dalej się rozwijać to pewnie rozmowa na znacznie dłuższą rozmowę, można się nad tym zastanawiać porządnie dokąd to wszystko dąży.&nbsp;</strong></p>



<p><br /><br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="BM23: Czy Chiny stają się nowym centrum świata?" width="960" height="540" src="https://www.youtube.com/embed/HbhYGDZtq-g?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p><br /><br /><br /></p>



<hr class="wp-block-separator"/>



<p></p>



<p></p>



<h2 class="wp-block-heading">Dobre praktyki w Machine Learning <br /><br /></h2>



<p><br /><br /><strong>Zmienię teraz temat. Porozmawiajmy o dobrych praktykach, w szczególności w ML, biznesie, więc powiedz proszę, czym dla Ciebie są dobre praktyki w ML i może najlepiej właśnie w takich punktach, konkretach jakbyś mógł wymienić.</strong> </p>



<p><br /><br /></p>



<p></p>



<p></p>



<p>To jest bardzo dobre pytanie, też dlatego, że jest bardzo szerokie. Wydaje mi się, że jest&nbsp; ich wiele w ML, więc może podam jakieś konkretne przykłady w jaki sposób ten ML może się różnić i co uważam w tym jest dobrą praktyką. Wydaje mi się, że taką jedną linią podziału jest to, jaki jest oczekiwany czas ile to nasze rozwiązanie machine learningowe ma żyć. </p>



<p><br /><br /><br />Wówczas wydaje mi się, że taki prototyp albo taki krótki projekt, wiadomo, że wówczas te projekty są znacznie prostsze, ponieważ jest zdefiniowany dosyć prosty i konkretny cel do osiągnięcia, więc wówczas te projekty toczą się stosunkowo prosto i wydaje mi się, że też, kiedy uczymy się Machine Learningu lub kiedy wchodzimy w Machine Learning, to mamy styczność z takimi projektami, które mają krótki cykl życia. Natomiast wydaje mi się, że znacznie ciekawsze są takie projekty, które mają taki znacznie dłuższy cykl życia i tutaj wydaje mi się, że konieczność tych dobrych praktyk automatycznie jest większa.</p>



<p><br /><br /><br /><br /></p>



<p>W punktach pierwsza rzecz, która wydaje mi się bardzo dobrą praktyką to jest bardzo dokładne zdefiniowanie tego, co chcemy uzyskać. Czyli np. taką konkretną, bardzo dobrą praktyką jest po prostu nawet zrobienie takiego nazwijmy to mechanicznego Turka, którym my udajemy ten algorytm i po prostu ustalenie kontraktu i przeeksplorowanie bardzo konkretnych odpowiedzi na pytania na jakie klienci chcą uzyskać odpowiedzi, wydaje się to być oczywiste, natomiast naprawdę bardzo często może doprowadzać do ciekawych wniosków. </p>



<p><br /><br /><br /><br />Bardzo często wychodzi mnóstwo różnic w terminologii, w oczekiwaniach. Takim chyba najbardziej klasycznym przykładem to było to, że w jednym momencie, podczas takiej jednej rozmowy klient, który był bardzo przekonany do tego co chce, właściwie totalnie przedefiniował zadanie.&nbsp; Miał to być jakiś problem klasyfikacji, okazało się, że &nbsp; to jest problem klasteringu tak naprawdę. Tych klas miało być 6, wyszło jest ich ponad 10 razy więcej. Okazało się, że skuteczność wcale nie jest taka istotna, żeby powiedzmy te klastry wydawały mu się najbardziej interesujące, wcale nie były takie ważne, a ważne było to, żeby te klastry, które są największe, a właśnie najmniej interesujące, żeby łatwiej odfiltrowywać.</p>



<p><br /><br /><br /></p>



<p>Więc taką na pewno dobrą praktyką jest właśnie rozpisanie i poczucie tego co chcemy osiągnąć. Więc to jeśli chodzi o taką praktykę biznesową.</p>



<p><br /><br /><br /></p>



<p>Taka praktyka niżej poziomowa, którą ja na pewno bardzo gorąco polecam to moje doświadczenie podpowiada mi, żeby bardzo mocno separować takie rzeczy, które są bardzo niskopoziomowo w języku programowania, w którym piszemy od takiej logiki biznesowej. Takie konkretne uwagi to jest tak, że np. bardzo często, kiedy chcemy np. napisać pipeline, w którym konkretne obiekty biznesowe są przekształcane w inne obiekty biznesowe, wydaje mi się, że bardzo trzeba tam unikać obiektów niskopoziomowych, bo to doprowadza do naprawdę olbrzymiego chaosu itd. </p>



<p><br /><br /><br /><br />Zarówno z takiej perspektywy po prostu czystości tego rozwiązania, ale przede wszystkim modyfikacji czyli przyszłych rozszerzeń albo przyszłych dopasowań do tego. Czyli na pewno bardzo bym doradzał taką totalną separację od tych metryk.</p>



<p><br /><br /><br /></p>



<p>Trzecia praktyka, która wydaje mi się też stosunkowo prosto, aczkolwiek bardzo często może unikać w rozwoju takich algorytmów machine learningowych to jest właśnie w jaki sposób walidować te modele. </p>



<p><br /><br /><br />Wydaje mi się, że to też trochę dotyczy tego punktu pierwszego, ale wydaje mi się, że przynajmniej taką praktyką, którą ja stosuję przynajmniej w części walidacji modeli biznesowych jest zastanowienie się jak będzie wyglądała pierwsza porcja danych, które ten model dostanie czyli, że w pewnym sensie definicja tego czyli np. czy to będą dane, które ten model będzie dostawał jednego dnia, czy to będą jakieś nowe dane, które po prostu przylecą z jakiegoś serwisu o danej godzinie itd. </p>



<p><br /><br /><br />Wydaje mi się, że takie wymyślenie sobie jak będzie wyglądał pierwszy dzień albo pierwszy taki atomowy, jednostka czasu użycia tego modelu, niewiarygodnie ułatwia zdefiniowanie tego w jaki sposób ten model należy walidować. Walidacja przebiega w ten sposób, że z części naszych danych po prostu wycinamy sobie taki fragment, który ewidentnie będzie zachowywał się w taki sam sposób i to ustawia nam zarówno strategię tej walidacji, jak i to co tak naprawdę będzie do tego algorytmu wchodzić.</p>



<p><br /><br /><br /><br /></p>



<p>Natomiast taką ostatnią cechą, też związaną z tym nazywaniem rzeczy to wydaje mi się, że właśnie w rozwijaniu takich długofalowych projektów to jest właśnie pamiętanie o takiej w sumie bardziej programistycznej zasadzie czyli pamiętanie o zasadzie otwarty-zamknięty czyli, że dobry kod powinien być otwarty na rozszerzenia, natomiast zamknięty na modyfikację. </p>



<p><br /><br /><br />Wydaje mi się, że szczególnie w wypadku Machine Learningów, w którym jednak często te modele to są obiekty nie do końca zrozumiałe co robią, często ciężko nam zrozumieć jak one działają. Potwornie jest ważne przygotowanie tego rozwiązania, żeby w pewnym sensie potencjalne zmiany albo rozszerzenia nie wpływały na to co się działo w naszym projekcie dotychczas. W związku z tym, że często jakby te modele wprowadzają bardzo dużo losowości do tego całego naszego pipeline to w momencie, w którym będziemy musieli kontrolować na ile to jest kwestia problemu czy modelu, a na ile to jest kwestia naszych zmian jest bardzo&nbsp; trudne. </p>



<p><br /><br /><br /><br />W związku z tym, taką konkretną rzeczą, którą&nbsp; bym proponował, to właściwie sprowadza się do takich dobrych praktyk programistycznych jak odpowiednie ponazywanie rzeczy. Zasada otwarty-zamknięty najczęściej dzieje się wtedy, kiedy mamy jakąś czynność, która jest nienazwana i która jest w cyklu tego całego kodu, wykonuje się gdzieś. Wówczas, kiedy będziemy chcieli ją zmienić to jeśli mamy czysto napisany kod to jest wówczas podmiana pewnego interfejsu. Jeśli nazwiemy tę czynność i umieścimy odpowiedni interfejs, który ją wykonuje to wówczas podmiana tego polega na tym, że możemy po prostu wstawić tam nowy element i tworzy się nowa rzecz. W tym sensie jesteśmy otwarci na rozszerzenie. Natomiast jeśli ją zmienimy to moje najgorsze doświadczenie machine learningowe jest takie, że takie jakieś delikatne zmiany w jednym takim miejscu powodują niewiarygodne zmiany w innym.</p>



<p><br /><br /><br /><br /></p>



<p>Podsumowując wydaje mi się, że niewiele mówiłem w sumie o samych modelach, głównie mówiłem o programowaniu. Wydaje mi się, że taką na pewno dobrą praktykę jest też, żeby to wszystko łączyło się (mówię o długofalowych projektach).</p>



<p><br /><br /></p>



<h2 class="wp-block-heading">Biznes &amp; Akademia &#8211; czy mogą współpracować?</h2>



<p></p>



<p><br /><br /><strong>Wszystkie punkty, które wymieniłeś są fajne, rezonują bardzo mocno, warto się wsłuchiwać i też pewnie trzeba parę razy się oparzyć, żeby zrozumieć co miałeś na myśli. Powiedziałeś też, że właśnie będziesz robić doktorat w szczytnych celach. Porozmawiajmy też trochę o tym, ale tak trochę z innej strony. Jest sobie świat akademicki i biznes &#8211; one dość mocno się różnią od siebie, zupełnie inaczej podchodzą do projektów ML&#8217;owych i też jest zupełnie inna dynamika, inne cele wbrew pozorom. </strong></p>



<p><br /><br /><br /><br /><br /><br /><br /></p>



<p><strong>Czy widzisz tu jakąś szansę na efektywną współpracę w polskich warunkach, pomiędzy światem akademickim, a biznesem? Co musi się stać, żeby taka współpraca w ogóle miała miejsce, a jeżeli już ma to co zrobić, aby była efektywna? Być może znasz jakieś konkretne przykłady, kiedy takie współpracy się zaczynają? </strong></p>



<p><br /><br /><br /><br /></p>



<p><br /><br /><br /><strong>Oczywiście tutaj można wymienić NCBR, też zresztą bardzo duże środki w najbliższych latach będą wydane na takie projekty, ale z tego co słyszę to różnie to bywa i zdarza się, że w świecie akademickim pojawia się taki sposób, żeby spełnić pewne warunki formalne niż faktycznie pewne rzeczy wnoszą w taki sposób, że ten projekt raczej zabija się niż się rozwija. Temat jest trudny, być może nawet delikatny, ale chciałbym usłyszeć Twoją perspektywę. Co powinno się stać, aby właśnie te światy zaczęły współpracować, bo ostatecznie myślę, że na tym wszyscy mogą zyskać.</strong></p>



<p><br /><br /></p>



<p>Ja bym trochę to pytanie podzielił i właściwie nawet zaczął od podzielenia jednego z głównych bohaterów tego pytania, czyli tego świata akademickiego. Mi się wydaje, że jeśli chodzi o Machine Learning i świat akademicki, przynajmniej moje doświadczenie podpowiada mi, że są co najmniej 3 takie światy, które wydaje mi się, że warto byłoby rozdzielić i każdemu przyjrzeć się bliżej.</p>



<p><br /><br /><br /></p>



<p>Pierwszy świat &#8211;&nbsp; to jest taki świat, w którym traktujemy świat akademicki jako źródło wiedzy, którą student na etapie licencjackim lub magisterskim dostaje i potem w pewnym sensie możemy spytać się jak ta wiedza, którą on zdobywa w tym czasie, transferuje się na konkretny biznes, czy dany system edukacji generuje kandydatów, którzy później idą do biznesu i właśnie się w tym biznesie odnajdują. Wydaje mi się, że z tej perspektywy to odpowiedź jak to w chwili obecnej wygląda jest bardzo rozmyta. </p>



<p><br /><br /><br /><br />Z jednej strony wydaje mi się, że (też myślę w kategoriach swojego wydziału MIM) z jednej strony każdy kolejny rocznik składa się naprawdę z świetnych programistów, którzy są szanowani na całym świecie. Są to też ludzie, którzy bardzo szybko adaptują się w biznesie, są bardzo cenione, więc z tej perspektywy wydaje mi się, że to jest na pewno super. Z drugiej zaś strony wydaje mi się, że to jest taka cecha przede wszystkim takiego kształcenia IT. Wydaje mi się, że w wypadku Data Science jest troszkę inaczej. Pierwszym problemem, który się tutaj pojawia jest to, że świat akademicki w ramach tego kształcenia akademickiego w naturalny sposób może robić bardzo ograniczoną liczbę projektów.</p>



<p><br /><br /><br /></p>



<p>Widzę takie dwa największe ograniczenia. Pierwsze ograniczenie to jest po prostu czas. Jak rozmawialiśmy o dobrych praktykach i rozwiązaniach machine learningowych, które mają trwać dłużej to zazwyczaj myślimy o systemach, które mają działać wiele lat. Ze swego doświadczenia wiem, że są systemy, które tam żyją po 7, 10 lat itd. i wiadomo, że ciężko jest w ramach 6-miesięcznego kursu czy rocznej magisterki przygotować się do tego. W związku z tym wydaje mi się, że tego trochę nie przeskoczymy. </p>



<p><br /><br /><br /><br />Natomiast z tego co wiem, tutaj jest bardzo fajna inicjatywa, która została podjęta &#8211; od przyszłego roku na MIM-ie rusza nowy kierunek związany ze sztuczną inteligencją i wydaje mi się, że tam bardzo interesującym rozwiązaniem, które się pojawia jest właśnie konieczność odbycia stażu. Z tego co pamiętam jest teraz na rok. Ja bym to nawet rozszerzył na 2 lata, bo wydaje mi się, że im dłużej ludzie współpracują i im dłużej mają styczność z rzeczą, która żyje znacznie dłużej niż te 3 miesiące albo pół roku, a potem się o niej zapomina, tym lepiej i to na pewno uczy zarówno dobrych praktyk i daje dobre intuicje tego co jest ważne, a co nie.</p>



<p><br /><br /><br /><br /></p>



<p>Drugi problem wydaje mi się być troszkę głębszy, ale jak się nad tym zastanowimy to jednak to co dla mnie osobiście jest strasznie fascynujące i przyjemnie w Machine Learningu jest to, że jednak te dane, ten problem wprowadza bardzo dużo losowości. Często rozwiązanie projektu machine learningowego to jest taka przygoda. Jest część nieprzyjemna, w której trzeba czyścić dane, ale na pewno taka umiejętność reakcji, radzenia sobie z niepewnością, zarówno co do danych jak i do samego problemu, jak i do algorytmu, wydaje mi się, że to wymaga takiej pewnej adaptatywności. Kiedy myślimy sobie o takim kursie akademickim to wydaje mi się, że po prostu na taką niepewność, taki trochę chaos na to przesadnie nie ma miejsca, ponieważ Uczelnia albo kurs to jest dokładnie miejsce, w którym w jakiś tam ustrukturyzowany sposób chcemy przekazać wiedzę. </p>



<p><br /><br /><br />W związku z tym wstrzyknięcie to w takiej umiejętności, żeby te kursy miały tą niepewność to jest to dosyć trudne. Też wydaje mi się, że jeżeli chodzi o matematykę, informatykę jest sprzeczne z aktualnym modelem nauczania, który raczej wiąże się z tym, że my mamy pewną taką naczelną wiedzę czyli wiedzę na temat danych działów matematyki albo danych technologii informatycznych, danych języków programowania itd. i po prostu chcemy tą wiedzę przekazać. Oczywiście to jest świetny początek do tego, natomiast z perspektywy dalszych kroków to może to robić takie wrażenie, że właśnie ta rzeczywistość jest taka dosyć uporządkowana, przewidywalna, że łatwo te problemy znaleźć.</p>



<p><br /><br /><br /><br /> Tutaj na pewno ciężko jest takiego rozwiązywania problemów w takim dużym chaosie się nauczyć. Liczę na to, że ten nowy program i konieczność odbycia stażu pomoże, natomiast wydaje mi się, że tutaj taka transformacja w kierunku takiego radzenia sobie z chaosem i radzenia sobie z takimi rzeczami, które żyją znacznie dłużej jest ważna. Więc to jest jeśli chodzi o taki punkt przygotowywania nowych pracowników i w jaki sposób to się tworzy.</p>



<p><br /><br /><br /></p>



<p>Druga rzeczywistość akademicka, nazwałbym to taką rzeczywistością akademicką klasyczną. Czyli kiedy mówię o takiej rzeczywistości akademickiej klasycznej to myślę o takim profesorze, doktorancie, post docu, który pracuje nad swoją dziedziną, swoje wyniki publikuje w określonych czasopismach, te czasopisma mają proces review dosyć zaawansowany. Wymaga się właśnie w tej przestrzeni akademickiej wysokiej jakości tego rozumowania, wysokiej jakości eksperymentów. </p>



<p><br /><br /><br />Ten proces oczywiście często trwa długo i w związku z tym przenikanie tych nowych wieści i nowych nowinek trwa dłużej, co jest w sprzeczności z tym trzecim światem, bo to są dwa zupełnie inne światy. To jest też świat akademicki, który jest najbardziej związany z uczeniem maszynowym czyli te niewiarygodnie bujne środowisko badań w Machine Learningu.</p>



<p><br /><br /></p>



<p>Wydaje mi się, że są dwa zupełnie różne światy i wydaje mi się, że na pewno warto byłoby im się przyjrzeć, żeby zrozumieć w jaki sposób one wpływają i dyskutują z biznesem, bo to jest dosyć fascynujące. Ten drugi świat czyli w chwili obecnej ten najgorętszy świat, który bardziej niż w żurnalach żyje na Twitterze, w których artykuł, który ma tyle cytowań, że jest właściwie kluczowy dla danej dziedziny. To jest naprawdę fascynujący świat. Wydaje mi się, że obydwa światy zarówno w różny sposób dyskutują z biznesem, wpływają na niego i oczywiście w drugą stronę. Więc właśnie ja bym podszedł do tego bardziej holistycznie. </p>



<p><br /><br /><br /><br />Wydaje mi się, że szczególnie jeśli chodzi o ten trzeci świat czyli ten świat najbardziej bujny to jest taka przestrzeń, która paradoksalnie wpływa w chwili obecnej na biznes znacznie bardziej niż ten drugi. Ja lubię sobie o tym myśleć, że ten aktualny świat, najbardziej bujny, lubię sobie często porównywać do Formuły 1 czyli, że to jest taki mega interesujący, wyżyłowany wyścig, w który są kamery z całego świata skierowane. Wszyscy wiedzą co tam się dzieje, znają kierowców, każdy chce z tego świata motoryzacyjnego coś uszczknąć itd. Wszyscy słyszymy, że co chwile jest jakieś nowe rozwiązanie w nowym bolidzie, nowy algorytm tam został stuningowany o te 3%.</p>



<p><br /><br /><br /><br /> Wszyscy są podekscytowani, wydaje mi się, że jest tam bardzo silna atmosfera i dzięki temu istnieje olbrzymia ilość hype na to, to też generuje olbrzymie zainteresowanie inwestorów, olbrzymie nadzieje i to jest ta pozytywna część tego świata.</p>



<p><br /><br /></p>



<p>Natomiast wydaje mi się, że istnieje też taka nie do końca pozytywna. Tutaj takie problemy, na które wydaje mi się, że bym chciał zwrócić uwagę to korzystając z tej metafory, że jednak biznes potrzebuje bardziej samochodu dla mas, dopasowanego do konkretnego transportu niż obserwowania tego najgorętszego show, w którym to jest. Więc pierwsza rzecz, która jest olbrzymim problemem w tym wszystkim to jest brak przenoszenia wyników z tego toru na taki zwykły ruch drogowy, co wydaje mi się być dosyć oczywiste. Tutaj widzę kilka problemów. Pierwszy problem często jest taki, że słyszymy i ludzie w biznesie słyszą, że sztuczna inteligencja rozwiązała problem X. </p>



<p><br /><br /><br />Ale właściwie co to oznacza? Czy to oznacza, że istnieje jakiś tor w tej Formule 1, na którym te pojazdy wykręciły faktycznie świetne wyniki, które potencjalnie nawet człowiek nie byłby w stanie wykręcić? Tutaj olbrzymi problem, który się pojawia jest to, że właśnie często ta definicja problemów w naturalny sposób w tym świecie najgorętszym, tam problemy nie istnieją w kategorii takich życiowych problemów tylko istnieją w kategorii konkretnych zbiorów danych i konkretnych wyników, na które trzeba to osiągnąć. To niestety się nie transferuje, ponieważ po pierwsze te problemy życiowe czy biznesowe generują zupełnie często inne dane, znacznie bardziej zaszumione, często w zupełnie innej naturze. To jest pierwsze źródło braku transferowalności.</p>



<p><br /><br /><br /><br /></p>



<p>Drugie źródło, które wydaje mi się być znacznie bardziej subtelne to jest to, że mam wrażenie, że wszyscy te tory znają. Strasznie mnie zafascynowało ostatnie badanie, bo kiedy np. pomyślimy sobie o takim zbiorze jak CIFAR-10 to w chwili obecnej wydaje mi się, że ilość treningów na tym CIFAR, szczególnie z bujnym rozwojem <em>neural architecture search </em>czyli ilość modeli, które były trenowane na tym CIFAR podejrzewam, że przekracza już ilość gwiazd w tej części galaktyki. Ostatnio ktoś spróbował zrobić taki prosty eksperyment, w którym po prostu spróbował stworzył nowe dane do tego CIFAR&#8217;a, które będą podobne do istniejących danych, ale będą mimo wszystko nowe. </p>



<p><br /><br /><br /><br />Okazało się, że te wyniki w pewnym sensie drastycznie spadły czyli ewidentnie za każdym razem ścigamy się na tym torze i w ramach tych wyścigów rywalizacja jest uczciwa, natomiast jeśli ten tor delikatnie zmienimy to wówczas pojawiają się problemy i to też bardzo drastycznie wpływa na biznes, bo ten tor jest zupełnie inny i koniec końców doprowadza to bardzo często do zawiedzionych oczekiwań, co mi się wydaje być największym problemem dlatego, że właśnie ta transferowalność jest trudna.</p>



<p><br /><br /><br /></p>



<p>Drugim problemem, który się tutaj tworzy to jest problem hype. Kiedy pracowałem w Sigmoidalu, braliśmy udział w konkursie. Zostaliśmy zaproszeni razem z innymi zespołami do tego, żeby brać udział w konkursie. Nagrodą w tym konkursie było podpisanie kontraktu, żeby rozwijać technologie dla tego klienta. Jeszcze dodam, że to był jeden z takich najbardziej ryzykownych działów dla tego klienta. </p>



<p><br /><br /><br /><br />W związku z tym, kiedy pojechaliśmy na ten konkurs, który trwał dwa dni, skupiliśmy się bardzo bardzo mocno na tym, żeby te dane odpowiednio opracować, oczyścić je, znaleźć wszystkie potencjalne ryzyka, które się z tym wiążą. Bardzo mocno skupiliśmy się na tym ryzyku. Ostatecznie nie wygraliśmy tego konkursu, bo wygrał zespół, który te całe dwa dni na infrastrukturze klienckiej stawiał BERTa. Więc po dwóch dniach udało mi się w końcu postawić BERTa.  Fakt, że ta nowa technologia była bardzo ważna. </p>



<p><br /><br /><br />Też wiem z takich rozmów z ludźmi, że szczególnie dla menedżerów też jest bardzo często ważne, żeby móc się pochwalić taką technologią. Mi się wydaje, że to generuje olbrzymi problem, ponieważ jednak te algorytmy na końcu są jakie są i też moje doświadczenie mówi, że często te wyniki&nbsp; nie transferują się na konkretne problemy, więc na pewno to powoduje rośnięcie bańki, niemożliwych do zaspokojenia oczekiwań. To powoduje bardzo dużo projektów, które po prostu próbuje się rozwiązywać przy pomocy tych bolidów. Po prostu nie wychodzi, co też automatycznie stanowi problem.</p>



<p></p>



<p><br /><br /></p>



<p>Trzeci problem z tym związany to które bolidy albo które rozwiązania są premiowane. Tutaj taki przykład, który mi przychodzi do głowy, który też jest bardzo pouczający &#8211; ja pracuję teraz dużo w modelach generatywnych czyli właśnie w rodzinie modeli, w których są GANy, autoenkodery, ostatnio pojawiła się technika dyfuzji. Przyjrzenie się temu jak wygląda rozwój tej dziedziny będzie bardzo pouczające. Kiedy powstaje jakiś nowy algorytm generatywny to okazuje się, że strasznie ciężko taki model generatywny jest zewaluować. To jest faktycznie prawda, ponieważ to co chcemy to w pewnym sensie chcielibyśmy uzyskać. </p>



<p><br /><br /><br />Model generatywny to jest taki model, który stara się w pewnym sensie zamodelować rozkład danych czyli jeśli mamy jakieś obrazki to chcielibyśmy model, który pozwoli nam wygenerować nowy obrazek bardzo podobny albo np. ocenić czy dany obrazek jest w miarę wiarygodny. Wbrew pozorom to jest bardzo trudne zadanie, ponieważ ciężko jest tak naprawdę zdefiniować co to znaczy jakiś rozsądny obrazek. </p>



<p><br /><br /><br />W związku z tym, taką dominującą metryką, która jest stosowana w ewaluacji tych modeli jest to czy obrazki, które są generowane przy pomocy tego modelu wyglądają ładnie czyli czy nie są rozmyte, czy mają odpowiednie tekstury itd. Jak się nad tym zastanowimy to częścią ewaluacji tych modeli jest to, żeby kiedy taki artykuł się pojawia, wygenerował obrazki, które będą miłe dla oka. Ja mogę powiedzieć ze swojego doświadczenia, że zajmuję się rozwijaniem jednej z takiej rodziny modeli i zauważyłem, że wiele innych zespołów, które właśnie korzysta z podobnych rzeczy i też czyta artykuły, które powstają w ten sposób, jedno z naszych doświadczeń jest to, że kiedy troszkę oderwaliśmy od tych obrazków i bardzo dokładnie się przyjrzeliśmy tak matematycznie tym modelom, też co one modelują, udało nam się np. uzyskać znacznie lepsze wyniki w wyborze tych modeli tylko dlatego, że troszkę odeszliśmy od tego, że to nie są obrazki i nie optymalizowaliśmy tych obrazków. </p>



<p><br /><br /><br /><br />Więc mi się wydaje, że to może powodować konkretne problemy, natomiast samo w sobie pokazuje taki problem, że dosyć istotnym czynnikiem w tym środowisku jest to, żeby właśnie to środowisko odbierało algorytmy dobrze. Nie ma takiej konkretnej walidacji również biznesowej, bo ona po prostu jest bardzo trudna do uzyskania, natomiast też ta presja, żeby te algorytmy były interesujące, nowinkowe, na pewno dosyć mocno na to wpływa.</p>



<p><br /><br /><br /></p>



<p>To środowisko z perspektywy biznesu wydaje mi się z jednej strony wpływa pozytywnie, ponieważ rodzi olbrzymie zainteresowanie, pojawiają się tam duże środki, natomiast właśnie&nbsp; te problemy, o których wspomniałem, dotyczą tego czego ja najbardziej się obawiam czyli takiego rozczarowania i pęknięcia tej bańki. Więc z tej perspektywy to dla mnie rodzi pewną obawę.</p>



<p><br /><br /></p>



<p>Tutaj oczywiście pojawia się ten drugi świat, o którym wspomniałem &#8211; klasyczny akademicki, zamkniętego review. W ostatnim czasie pojawiają się jakieś takie delikatne dyskusje pomiędzy tymi światami apropo właśnie tego co to znaczy dobry artykuł itd., więc ta dyskusja jest szalenie ciekawa. </p>



<p><br /><br /><br />Ja mogę ze swojej strony powiedzieć ciekawą anegdotę, że właśnie też kiedy też w ramach naszych współprac przygotowaliśmy artykuł do journala, w jednym miejscu zastanawialiśmy się dosyć długo czy dana operacja jest uzasadniona matematycznie. To wszystko obracało się w takim frameworku matematycznym, który nazywa się framework wariacyjny, ten framework ma określone założenia. </p>



<p><br /><br /><br /><br />Tam zrobiliśmy rzecz, która była taka bardzo inżynieryjna, działała, ale ciężko było ją uzasadnić z tej perspektywy wariacyjnej. Zastanawialiśmy się czy to przejdzie przez review, a w tym samym czasie pojawił się artykuł, który zrobił jeszcze bardziej inżynieryjną rzecz, okazało się, że przeszedł przez review, tylko okazało się, że przyniósł naprawdę świetne rezultaty, więc to go obroniło.</p>



<p></p>



<p><br /><br /><br /> Ale to też pokazało mi, że taki klasyczny świat akademicki jest bardzo skupiony na takiej jakości tych rozwiązań, żeby to było też takie spójne, czyste. Pojawia się takie bardzo dobre pytania.. z jednej strony wydaje mi się, że na pewno ta dyskusja pomiędzy tymi światami jest szalenie interesująca, przewiduję coraz większego rozczarowania, ten powrót potencjalnie starych, sprawdzonych metod będzie następował. Moja ocena tego jest taka, że to są dwie skrajności czegoś, co jest bardzo potrzebne. </p>



<p><br /><br /><br />Właśnie z jednej strony potrzebujemy tego parcia, tego pędu, z drugiej strony potrzebujemy też takiej kontroli, tego żeby te rzeczy były robione w sposób kontrolowany, żeby były też reprodukowalne. Więc po cichu liczę na to, że uda nam się w najbliższym czasie znaleźć bardzo ciekawą syntezę tych światów. Wydaje mi się, że to będzie potwornie ważne z perspektywy biznesu, również dlatego, że na pewno potencjalnie wprowadzenie jakiejś biznesowej walidacji do tego całego procesu będzie dla tego biznesu ważne.</p>



<p><br /><br /><br /></p>



<p>Tak się przedstawia ten mój krajobraz tego środowiska.</p>



<p><strong>Ciekawy był ten przykład z zakrętem, że wystarczy zmienić troszkę zakręt i już benchmark może się rozsypać albo pogorszyć. A w biznesie nie tyle, że zakręt się zmienia, tam rzeka nagle może się pojawić. </strong></p>



<p><br /><br /><br /><strong>To jest też na tyle śmieszne, jak bierzemy sobie np. computer vision i fajnie jak mamy ImageNet, a jeżeli bierzemy sobie zdjęcie&nbsp; z komórki to tam ciemno, rozmazane i jakość nam zdecydowanie spada, a przede wszystkim takie zdjęcia są w dużej ilości robione. Ale jedna rzecz mnie ciekawi. Pierwszy świat na pewno Ciebie nie dotyczy, bo to już minąłeś, ale drugi i trzeci &#8211; to Ty dołączasz teraz do którego świata? Drugiego?</strong></p>



<p><br /><br /><br /></p>



<p>Wydaje mi się, że choćby nawet z oczekiwań doktorskich w chwili obecnej jest to raczej drugi świat, ale wydaje mi się, że z upływem czasu te granice zaczną się znacznie przenikać. Pamiętam jak na MIM&#8217;ie parę lat temu podejście do Machine Learningu było bardzo ostrożne, teraz to Machine Learning wchodzi w ramach nowego przedmiotu. Po cichu liczę na to, że wchodzimy w przestrzeń tej fuzji, że jednak się jakoś spotkają te światy. Aczkolwiek na pewno wchodzę z perspektywy tego drugiego świata.<br /><br /><br /></p>



<h2 class="wp-block-heading">Przyszłość Machine Learning <br /><br /><br /></h2>



<p><strong>Dzięki za te wszystkie wypowiedzi. Zbliżamy się do końca. Na koniec pobawmy się trochę w futurologa lub marzyciela i spróbujmy dokonać takiej predykcji co może się wydarzyć za jakiś czas. Wiadomo, że różnie z tym bywa, nie zawsze to jest łatwe, ale wydaje mi się, że jak słuchałem Twoją wypowiedź to rozważać tak o przyszłości lubisz, więc myślę, że to pytanie też będzie takie fajnie trafne: jak myślisz jakie kamienie milowe przekroczymy za 5 czy 10 lat w uczeniu maszynowym i co wtedy będzie osiągalne?</strong></p>



<p><br /><br /><br /></p>



<p>To jest bardzo dobre pytanie. Wspominałem, że wydaje mi się, że najbliższe 5 czy 10 lat może się różnić od tych obecnych. To już wydaje mi się powoli widać, chociażby w tym roku pierwszy raz mieliśmy mniejszą ilość aplikacji niż w zeszłym roku czyli pojawiły się pierwsze objawy saturacji też trzeciego świata, najbardziej dynamicznego. Więc mam wrażenie i po cichu liczę też na to, że możliwe, że zmienią się priorytety tego researchu. Wydaje mi się, że&nbsp; takie kolejne kroki milowe będą związane z takimi rzeczami, które teraz są mniej eksplorowane.</p>



<p><br /><br /><br /> Nie wiem czy przewiduję, na pewno bardzo chętnie bym widział z tej takiej perspektywy, np. stworzenie nawet nie kolejnych modeli rozwiązujących kolejne problemy, tylko np. modeli generatywnych (już teraz powstają tzw. work models czyli modele, w których przewidujemy zachowanie środowiska albo rzeczywistości). </p>



<p><br /><br /><br />Przewiduję, że jeśli faktycznie ten świat najbardziej bujnego rozwoju spowolni i przyjdzie świat refleksji to wydaje mi się, że takim jednym z bardziej kluczowych rzeczy będzie stworzenie takich modeli, które będą dosyć dobrze odwzorowywać pewne rzeczywistości. Przez pewne rzeczywistości myślę, że np. stworzenie modelu, który może nawet w jakimś ograniczonym stopniu, ale będzie mógł wnioskować w sposób zrozumiały dla człowieka i np. w oparciu o to generować obrazy albo teksty potencjalnie nowe.</p>



<p><br /><br /><br /></p>



<p>Wydaje mi się, że na początku to pewnie będzie w ograniczonym stopniu, ponieważ system symboli, nazw często jest dla nas bardzo nieczytelny. Ale liczę na to, że w ciągu 5 lat się uda tak to zrobić, żeby stworzyć takie modele rzeczywistości w jakiś taki sposób, który będzie korzystał ze sztucznej inteligencji. To jest taki kamień milowy w ogólnym rozwoju. </p>



<p><br /><br /><br /><br />Natomiast to na co bardzo liczę to to się aktualnie już toczy, ale wydaje mi się, że jest taki trochę problem z transferem do danych medycznych, też obrazowych. Np. wydaje mi się, że ten przełam tam następuje, jest coraz szybszy, ale nie jest na pewno aż tak widoczny i tak bujny jak w zdjęciowej wizji komputerowej. Więc liczę na to, że te modele dojadą do tego poziomu, szczególnie, że takie modelowanie obrazowe pójdzie znacznie do przodu.</p>



<p><br /><br /><br /></p>



<p>Trzeci taki kamień milowy to wspominaliśmy o tych systemach. Podejrzewam, że rzeczy związane z ryzykiem, niepewnością, dopuszczeniem, że jednak sztuczna inteligencja może się mylić i zapytaniem jej, kiedy się faktycznie myli i stworzenie technologii, która daje na to faktycznie rozsądną odpowiedź będzie kolejnym kamieniem. To są takie moje 3 przewidywania.</p>



<p><br /><br /><br /></p>



<p><strong>Fajnie, akurat nagraliśmy, zapisaliśmy, zobaczymy za 5-10 lat, sprawdzimy, skomentujemy. Brzmi bardzo ciekawie, w szczególności ten temat związany z obrazkami medycyny to temat, który wiem, że Ciebie bardzo mocno interesuje, więc też tam częściowo się przyłożysz, żeby to też się stało w jakimś tam stopniu.</strong></p>



<p><br /><br /><br /></p>



<p><strong>Marcin, dzięki wielkie za rozmowę. Wyszła troszkę dłuższa, ale bardzo ciekawa. Myślę, że wiele ciekawych wątków tu padło. Nie wszystko w sumie zdążyliśmy omówić, ale myślę, że to jest dobra okazja, aby jeszcze raz się spotkać i przedłużyć przy kolejnym nagraniu. Życzę Ci wszystkiego dobrego, z doktoratem i innymi rzeczami, które chcesz zrealizować. Do usłyszenia, do zobaczenia. Cześć.</strong></p>



<p><br /><br /><br /></p>



<p>Dzięki wielkie za zaproszenie i do zobaczenia, cześć. <br /><br /><br /><strong>Dziękuję za wysłuchanie tego odcinka, wspólnie spędzony czas. Mam nadzieję, że również dla Ciebie to było takie pozytywne doświadczenie. Ciekawy jestem, co myślisz właśnie o tym podejściu, rozważaniu o umiejętności nazywania rzeczy, o tych poradach, które wybrzmiały od Marcina. Czy to są takie rzeczy, które chcesz u siebie w jakiś tam sposób zastosować? Podziel się swoimi przemyśleniami. Zawsze chętnie posłucham Twojej opinii. To tyle na dzisiaj, dzięki wielkie, do usłyszenia.</strong></p>



<p><br /></p>
<p>Artykuł <a href="https://biznesmysli.pl/dobre-praktyki-w-machine-learning/">Dobre praktyki i sztuka nazywania rzeczy w Machine Learning</a> pochodzi z serwisu <a href="https://biznesmysli.pl">Biznes Myśli</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://biznesmysli.pl/dobre-praktyki-w-machine-learning/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Uczenie nienadzorowane oczami naukowca z DeepMind</title>
		<link>https://biznesmysli.pl/uczenie-nienadzorowane-oczami-naukowca-z-deepmind/</link>
					<comments>https://biznesmysli.pl/uczenie-nienadzorowane-oczami-naukowca-z-deepmind/#respond</comments>
		
		<dc:creator><![CDATA[Vladimir]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 03:00:00 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Adam Kosiorek]]></category>
		<category><![CDATA[DeepMind]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[Oxford]]></category>
		<category><![CDATA[praca naukowa]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[uczenie maszynowe]]></category>
		<category><![CDATA[unsupervised learning]]></category>
		<guid isPermaLink="false">https://biznesmysli.pl/?p=3045</guid>

					<description><![CDATA[<p>Z tego odcinka dowiesz się: Chcesz dowiedzieć się więcej o przyszłości AI i inspirujących badaniach? Przeczytaj cały artykuł! Uczenie nienadzorowane (unsupervised learning) to dziedzina uczenia maszynowego o ogromnym potencjale, która w bliskiej przyszłości będzie nas coraz bardziej zaskakiwać. O tym właśnie rozmawiałem z Adamem Kosiorkiem, doktorem nauk z Uniwersytetu Oksfordzkiego, który obecnie pracuje w DeepMind. Cześć Adam. Przedstaw się: kim jesteś, czym się zajmujesz, gdzie mieszkasz? Nazywam się Adam Kosiorek, jestem z Olsztyna. W tej chwili mieszkam w Londynie. Pracuję jako Research Scientist w Google DeepMind (po polsku &#8211; badacz). Pracuję nad sztuczną inteligencją i prowadzę badania w tym zakresie. Dzisiaj będziemy dużo mówić na temat sztucznej inteligencji oraz Twoich badań i publikacji. Zanim do tego przejdziemy, zdradź, co ostatnio ciekawego przeczytałeś? Niekoniecznie musi to być specjalistyczna publikacja.&#160; Czytać akurat lubię. Jedna z ostatnich książek, która bardzo mi się spodobała to &#8222;Sapiens&#8221; Yuval Noah Harari. Wydaje mi się, że to bardzo ostatnio popularna pozycja. Opowiada o tym, jak staliśmy się ludźmi ze zwierząt, jak wyewoluowaliśmy od małp i prostszych organizmów, jak znaleźliśmy się tu, gdzie teraz jesteśmy. Opowiada o różnych rewolucjach rolniczych, przemysłowych i religii w naszym życiu, roli technologii i wiele więcej. Naprawdę polecam, aczkolwiek jest to nieco dłuższa lektura. Obecnie, oprócz tego, że pracujesz w DeepMind, robisz doktorat w Oxford. Jak oceniasz te studia, uczelnię, doświadczenie? Czy ciężko jest się dostać? Zanim odpowiem, sprostuję jedną kwestię. Mniej więcej 2 tygodnie temu, obroniłem się, więc już nie jestem doktorantem, a świeżo upieczonym doktorem. Natomiast prawda, do tej pory byłem na Oxfordzie. Jak się tam dostać? Odpowiedź może brzmieć banalnie. Należy złożyć aplikację. Aplikacja taka wygląda trochę inaczej na studia na poziomie licencjackim, a trochę inaczej na doktorat. Wydaje mi się, że na doktorat jest dużo łatwiej się dostać, niż na licencjat.&#160; Aplikacja składa się z dwóch elementów: Faktycznie, brzmi to w miarę prosto. Czy było warto? Jak to oceniasz to teraz z perspektywy czasu? Wydaje mi się, że jest warto. Moją drugą najlepszą opcją byłoby zostać na doktoracie na Uniwersytecie Technicznym w Monachium, gdzie zrobiłem swoją magisterkę. Doktorat w Monachium też byłby bardzo dobry, natomiast różnica jest taka, że w Niemczech ludzie często traktują doktoraty jako taką zwykłą pracę, gdzie przychodzą na 09:00, wychodzą o 17:00, nie pracują w weekendy. Natomiast na Oxfordzie jest dużo większa presja, są zazwyczaj przyjmowani bardzo dobrzy ludzie, którzy osiągają bardzo dobre rezultaty. Poprzez chęć dorównania im wytwarza się presja i ludzie pracują nieco więcej. Niektórym może to nie odpowiadać, natomiast dla mnie jest to coś, czego akurat chciałem i potrzebowałem. Oxford, jeżeli chodzi o machine learning, jest również świetnym miejscem dlatego, że jest tu około 15 grup badawczych na światowym poziomie. Jest mnóstwo ludzi, mnóstwo różnych tematów, nad którymi te grupy pracują, więc jest dosyć duża swoboda pracy. Można też w dosyć łatwy sposób zbudować dobrą siatkę kontaktów z najlepszymi naukowcami na świecie. Brzmi jak środowisko, które po pierwsze da się łatwo zmobilizować, a po drugie ta sieć kontaktów robi potem swoje i naprawdę później te kilka lat w Oxfordzie procentuje.&#160; Na Twoim Twitterze jest takie zdanie: &#8222;próbuję zrozumieć, czym jest inteligencja i ją zaimplementować&#8221;. Gdzie jesteś teraz, jeżeli chodzi o inteligencję? Na ile udało Ci się zrozumieć, czym ona jest? Jak wyglądają postępy? Zacznę od tego, że to stwierdzenie jest nieco naciągane. Nie wiem, czy jest chociaż jedna osoba na świecie, która tak naprawdę rozumie, czym jest inteligencja. To pojęcie jest trudne do zdefiniowania. Wydaje mi się, że obecnie posiadane definicje są zbyt szerokie. Na przykład, niektórzy definiują inteligencję jako umiejętność rozwiązywania wszelkiego rodzaju problemów, bądź umiejętność szybkiego uczenia się rozwiązywania wszelkiego rodzaju problemów. Natomiast jeżeli pomyślimy o problemach wszelkiego rodzaju, jest to niesamowicie duża przestrzeń problemów. Jeżeli użyjemy tej definicji, okazuje się, że ludzie wcale nie są inteligentni. Możemy zaprojektować bardzo dużo problemów, które są prawie losowe, gdzie są losowe związki pomiędzy różnymi elementami. Okazuje się, że ludzie są bardzo kiepscy w rozwiązywaniu tego typu problemów. Nawet dosyć ciężko jest zawrzeć intuicyjne rozumienie inteligencji w prostej definicji. To jest jeden punkt widzenia. Z innego zaś rozumiemy na poziomie mechanicznym czy kalkulacyjnym, jak niektóre mechanizmy w mózgu ludzkim i innych zwierząt pracują. Natomiast bardzo często ta wiedza może nam dać pewną inspirację, jak budować system uczenia maszynowego. Zazwyczaj jest ona jednak zbyt mało precyzyjna, żeby naprawdę powiedzieć nam, jak pewne rzeczy powinny funkcjonować. Nawet jeżeli chodzi o intuicję, zazwyczaj dotyczy to bardzo niskopoziomowych podsystemów mózgu.&#160; Mówiąc krótko, tak naprawdę nie wiemy, czym jest inteligencja i jak ją osiągnąć. Natomiast wiemy, jakie podzespoły znajdują się w mózgu i mniej więcej jakie funkcje różne podzespoły pełnią, co daje nam pierwowzór, na którym możemy się wzorować i który możemy próbować zaimplementować.&#160; Twoje badania zwykle skupiają się na uczeniu nienadzorowanym, czyli unsupervised learning. W szczególności działasz sporo z autoenkoderami. Z jednej strony, domyślam się, że ten wybór podyktowany jest tym, że uczenie nadzorowane jest bardziej ograniczone. Chciałbym usłyszeć Twoją wersję, podziel się swoją motywacją, dlaczego uczenie tylko nienadzorowane? Jeżeli skupiasz się tylko na tym, to jaką przyszłość możesz zaprognozować tej dziedzinie? Jak to się rozwinie w ciągu najbliższych 3-5 lat na podstawie tej wiedzy, którą już teraz posiadasz?&#160; To prawda, że skupiam się głównie na uczeniu nienadzorowanym. Mam może 3 publikacje, które są również o uczeniu nadzorowanym, natomiast na pewno nie jest to główna część mojego badania. Tak, jak zauważyłeś, uczenie nadzorowane ma pewne ograniczenia, które wynikają głównie z tego, że do uczenia nadzorowanego potrzebujemy danych oznaczonych przez człowieka. Czyli potrzebujemy dane zebrane przez różne sensory (np. zdjęcia) i oznaczenia (czyli np. kwadraciki, narysowane na około twarzy, ludzi na tych zdjęciach). Żeby dostać takie kwadraciki, zazwyczaj potrzebujemy armii ludzi, która będzie takie kwadraciki rysować. Jest to drogi i czasochłonny proces. Za każdym razem kiedy dostaniemy nowe dane, musimy zatrudnić ludzi i zbierać te oznaczenia. Nie możemy np. wykorzystać setki tysięcy godzin filmów dostępnych na YouTube, żeby nauczyć nasz algorytm, ponieważ mimo że posiadamy dane w postaci tych filmów, to nie mamy do nich oznaczeń, co więcej z biegiem czasu często widziane przez algorytm dane zmieniają się. Np. jeżeli za tydzień mielibyśmy robota, który działa nieustannie i z biegiem czasu zmienia się sceneria, w której ten robot się przemieszcza (np. rozbudowuje się miasto, zmieniają się budynki itd.), to gdyby taki robot korzystał tylko i wyłącznie z uczenia z nauczycielem, to mógłby mieć problem z dostosowaniem się do nowego wizerunku otoczenia. Natomiast jeżeli taki robot mógłby uczyć się na bieżąco, to mógłby się dostosowywać. Uczenie na bieżąco oznacza, że nie ma oznaczeń wygenerowanych przez człowieka, w związku z tym musimy wykorzystać uczenie nienadzorowane.&#160; Te wspomniane etykiety są także często nieprecyzyjne. Człowiek sam w sobie jest niedeterministyczny. Ta sama osoba potrafi inaczej oznaczyć tę samą ramkę, a tym bardziej jak jest grono rozproszonych ludzi w świecie, to ten input jeszcze bardziej byłby zaszumiony. Zresztą słynny ImageNet też był robiony w taki sposób, że niektóre obrazki były robione po kilka razy, żeby upewnić się, że to jakoś w miarę się pokrywa, ale to też nie było proste zadanie.&#160; Teraz już wiemy, o co chodzi z uczeniem nienadzorowanym i jaka była Twoja motywacja. To chodźmy dalej w kierunku autoenkoderów. Wyjaśnij i podaj klasyczną definicję autoenkodera. Co to jest? Co on robi? Czy mógłbyś podać jakieś przykłady?&#160; Wydaje mi się, że taka ogólna definicja to byłby model, który potrafi skompresować dane i później dokonać ich&#160; dekompresji.&#160; Kompresja to według mnie dobre skojarzenie. Mamy w tym przypadku dwa czynniki. Wiele osób nie miało styczności z autoenkoderami, ale pewnie każdy używał zipa albo inny kompresora danych &#8211; czyli wtedy, kiedy pakujemy dany plik w jakąś taką postać “pomiędzy”. To jest nadal plik, ale nie ten oryginalny i zajmuje troszkę mniej miejsca. Później jakiś inny program albo funkcjonalność tego samego programu to odczytuje. Gdzie taki autoenkoder może być użyteczny? Prostym i dosyć powszechnym przykładem jest np. kompresja zdjęć. Dzisiaj jednym z najpopularniejszych formatów jest .jpg, który jest skompresowanym zdjęciem. Jest to kompresja stratna, która nie zawiera wszystkich informacji, natomiast zdekompresowane zdjęcie wygląda bardzo podobnie do tego przed kompresją. Jpg jest standardem ręcznie zaprojektowanym, co zajęło wiele lat. Ma jakieś właściwości, jeżeli chodzi o kompresję, natomiast okazuje się, że dzisiejsze autoenkodery wykorzystujące najnowsze osiągnięcia z uczenia maszynowego, potrafią nauczyć się kompresować zdjęcia dużo lepiej niż .jpg, w przeciągu minut, co może spowodować zaoszczędzenie olbrzymiej ilości danych (np. przy przesyłaniu zdjęć przez Internet).&#160; To bardzo fajny przykład. Google też to próbuje stosować, kiedy się wysyła mniejsze zdjęcie i komórka, która pobrała to zdjęcie, potrafi to zdjęcie rekonstruować. W ten sposób to funkcjonuje i faktycznie nie trzeba przesyłać dużych plików. Przy czym po otworzeniu zdjęcia wygląda ono bardzo podobnie do oryginalnego i nie ma za bardzo tej straty. Myślę, że też fajnie wspomnieć o przypadkach związanych z tym, że możemy zaszumić sobie to zdjęcie i potem otworzyć takie, które nie jest zaszumione. Albo np. przypadki związane z nakładaniem, coś jest na tym zdjęciu wycięte i później można to odtworzyć. Co prawda, to też ma negatywne skutki. Było dość głośno na ten temat, kiedy nagle się okazało, że wszystkie znaki wodne można wyeliminować &#8211; to, co potrafi autoenkoder zrobić, czyli odszumić od &#8222;niepotrzebnych&#8221; rzeczy. Więc teraz, jak ktoś myśli, że dodając znak wodny do zdjęcia może spać spokojnie, to już te czasy niestety minęły. To się wszystko rozwija, więc trzeba to robić bardziej dynamicznie, niż tylko poprzez dodanie statycznego znaku wodnego. Podsumowując, jeżeli chodzi o autoenkoder, mamy kawałek tej sieci na wejściu np. zdjęcie, które jest pobierane i robimy wszystko, żeby zredukować wymiary. Zostaje jakiś powiedzmy wektor. Później jest inny kawałek sieci, który próbuje z tego wektora odtworzyć zdjęcie oryginalne. Ale teraz przejdźmy do tego, nad czym pracujesz więcej, czyli variational autoenkoders (VAE). Wyjaśnij, dlaczego VAE używasz najczęściej? Na czym polega różnica od klasycznego autoenkodera? Główną różnicą jest to, że autoenkoder wariacyjny jest to model stochastyczny. Zazwyczaj zwykłe autoenkodery są deterministyczne tzn., że mamy coś na wejściu (np. zaszumiony obrazek), później mamy reprezentację tego zaszumionego obrazka na wejściu, który jest wektorem uzyskanym w sposób deterministyczny i później staramy się zrekonstruować z tego wektora odszumiony obrazek, bądź zaszumiony (w zależności od aplikacji). Jednym z problemów w tym autoenkoderze jest to, że jest tylko jedno poprawne rozwiązanie, czy też istnieje tylko jeden rodzaj poprawnej rekonstrukcji. Nie możemy zawrzeć w tym naszym wektorze, który reprezentuje to zdjęcie, niepewności związanej z tym obrazkiem czy z rekonstrukcją.&#160; Natomiast autoenkoder wariacyjny to model stochastyczny, gdzie ten wektor, który jest reprezentacją naszego obrazka, jest zaszumiony. Dodajemy do niego pewien szum, co pozwala nam zakodować pewną niepewność. Dzięki temu jeden konkretny wektor pozwala nam zrekonstruować wiele różnych wariantów tego obrazka, który mieliśmy na wejściu. Na tym polega nasz świat. Jak spróbujemy powtórzyć to samo działanie i np. jeżeli komuś przygotujemy przepis i powiemy: &#8222;Słuchaj, ja całe życie robiłem tak i tak, więc rób te same kroki, a osiągniesz to samo&#8221;, to zwykle tak nie działa, bo życie zawsze gdzieś nas zaskoczy. Tak tylko dodam, że jak mówisz &#8222;stochastyczne&#8221;, to myślę, że dla osób, które nie są w tej terminologii obeznane, to pewnie słowo &#8222;losowy&#8221; będzie bardziej zrozumiałe. Sprowadzamy się do tego, że w tym przypadku przepuszczając przez ten nasz model np. zdjęcie, to w klasycznym autoenkoderze dostajemy ten sam wynik (jeżeli model już jest wytrenowany), a w przypadku autoenkodera wariacyjnego przepuszczając za każdym razem model, wynik może być nieco inny. Czy to jest tak, że też mamy parametry, które umożliwiają ten rozrzut wyników, żeby można było ten model jakoś ograniczyć? Na tym właśnie polega trenowanie tego modelu, że dobieramy te parametry, prawda? Tak, oba modele zazwyczaj są to dwie sieci neuronowe. Jeżeli chodzi o implementację, to różnica sprowadza się do tego, że w autoenkoderze, enkoder jest jedną siecią neuronową, która daje nam ten wektor będący reprezentacją obrazka na wejściu. Natomiast w autoenkoderze wariacyjnym, enkoder daje nam nie jeden wektor, ale rozkład prawdopodobieństwa na przestrzeni różnych wektorów, które mogą opisywać bądź reprezentować obrazek na wejściu. W najprostszym przypadku ten rozkład&#160; jest tu po prostu wielowymiarowym rozkładem gaussowskim. Wtedy implementacja polega na tym, że ten enkoder daje nam wektor średni i kowariancję. Kowariancja jest w tym przypadku zazwyczaj macierzą diagonalną, więc możemy ją wyrazić jako wektor. Czyli enkoder daje nam te dwa wektory, dzięki czemu możemy uzyskać ten rozkład gaussowski,...</p>
<p>Artykuł <a href="https://biznesmysli.pl/uczenie-nienadzorowane-oczami-naukowca-z-deepmind/">Uczenie nienadzorowane oczami naukowca z DeepMind</a> pochodzi z serwisu <a href="https://biznesmysli.pl">Biznes Myśli</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-speaker-spotify-Z1dt4tq wp-block-lazyblock-speaker-spotify"><div class="wp-block-columns are-vertically-aligned-center">
<div class="wp-block-column is-vertically-aligned-center">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><a href="https://www.spreaker.com/user/9664330/bm-79-uczenie-nienadzorowane" target="_blank"><img decoding="async" src="https://biznesmysli.pl/wp-content/uploads/2020/02/spreaker.png" alt="" class="wp-image-2150" width="213" height="71"></a></figure></div>
</div>
<div class="wp-block-column is-vertically-aligned-center">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><a href="https://open.spotify.com/episode/3pIPH0BNKq5D2IVbZ4s7Zs" target="_blank"><img decoding="async" src="https://biznesmysli.pl/wp-content/uploads/2020/02/spotify-badge-button.png" alt="" class="wp-image-2149" width="192" height="93"></a></figure></div>
</div>
</div></div>


<h2 class="wp-block-heading">Z tego odcinka dowiesz się:</h2>



<ol>
<li><strong>Co to jest uczenie <span style="text-decoration: underline;">nienadzorowane</span>?</strong> Poznaj fascynujący świat uczenia nienadzorowanego (<em>unsupervised learning</em>) i dlaczego ma ogromny potencjał w przyszłości.</li>



<li><strong>Jak dostać się na doktorat na Oxfordzie?</strong> Adam Kosiorek, świeżo upieczony doktor z Uniwersytetu Oksfordzkiego, dzieli się radami, jak aplikować na doktorat i dlaczego warto to zrobić.</li>



<li><strong>Czym jest inteligencja?</strong> Odkryj, jak naukowcy, w tym Adam, próbują zrozumieć i zaimplementować inteligencję, oraz dlaczego jest to takie trudne.</li>



<li><strong>Uczenie nienadzorowane a uczenie nadzorowane. </strong>Dowiedz się, dlaczego Adam skupia się na uczeniu nienadzorowanym i jakie są jego przewagi nad uczeniem nadzorowanym.</li>



<li><strong>Autoenkodery &#8211; co to jest i do czego służą?</strong> Poznaj definicję autoenkoderów i ich praktyczne zastosowania, takie jak kompresja zdjęć.</li>



<li><strong>Capsule Networks &#8211; nowy sposób na rozpoznawanie obiektów.</strong> Odkryj, czym są sieci kapsułkowe (capsule networks) i jak mogą zrewolucjonizować rozpoznawanie obiektów.</li>



<li><strong>Jak eksperymentować w uczeniu maszynowym?</strong> Adam dzieli się swoimi doświadczeniami z eksperymentami w uczeniu maszynowym i opowiada o narzędziu Forge, które stworzył, aby je usprawnić.</li>
</ol>



<p>Chcesz dowiedzieć się więcej o przyszłości AI i inspirujących badaniach? Przeczytaj cały artykuł!</p>



<p></p>



<p class="has-normal-font-size"><strong>Uczenie nienadzorowane (<em>unsupervised learning</em>) to dziedzina uczenia maszynowego o ogromnym potencjale, która w bliskiej przyszłości będzie nas coraz bardziej zaskakiwać. O tym właśnie rozmawiałem z Adamem Kosiorkiem, doktorem nauk z Uniwersytetu Oksfordzkiego, który obecnie pracuje w DeepMind.</strong><br /></p>



<span id="more-3045"></span>



<p><strong>Cześć Adam. Przedstaw się: kim jesteś, czym się zajmujesz, gdzie mieszkasz?</strong><br /></p>



<p>Nazywam się <a href="http://akosiorek.github.io/">Adam Kosiorek</a>, jestem z Olsztyna. W tej chwili mieszkam w Londynie. Pracuję jako Research Scientist w Google <a rel="noreferrer noopener" aria-label="DeepMind (otwiera się na nowej zakładce)" href="https://deepmind.com/" target="_blank">DeepMind</a> (po polsku &#8211; badacz). Pracuję nad sztuczną inteligencją i prowadzę badania w tym zakresie.<br /><br /></p>



<p></p>



<p><strong>Dzisiaj będziemy dużo mówić na temat sztucznej inteligencji oraz Twoich badań i publikacji. Zanim do tego przejdziemy, zdradź, co ostatnio ciekawego przeczytałeś? Niekoniecznie musi to być specjalistyczna publikacja.&nbsp;</strong><br /><br /></p>



<p>Czytać akurat lubię. Jedna z ostatnich książek, która bardzo mi się spodobała to <strong>&#8222;Sapiens&#8221; Yuval Noah Harari</strong>. Wydaje mi się, że to bardzo ostatnio popularna pozycja. Opowiada o tym, jak staliśmy się ludźmi ze zwierząt, jak wyewoluowaliśmy od małp i prostszych organizmów, jak znaleźliśmy się tu, gdzie teraz jesteśmy. Opowiada o różnych rewolucjach rolniczych, przemysłowych i religii w naszym życiu, roli technologii i wiele więcej. Naprawdę polecam, aczkolwiek jest to nieco dłuższa lektura.<br /><br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Sapiens: A Brief History of Humankind - out now in paperback!" width="960" height="540" src="https://www.youtube.com/embed/B2H9Q92RkfE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption"> &#8222;Sapiens&#8221; Yuval Noah Harari </figcaption></figure>



<p><br /><br /><strong>Obecnie, oprócz tego, że pracujesz w DeepMind, robisz doktorat w Oxford. Jak oceniasz te studia, uczelnię, doświadczenie? Czy ciężko jest się dostać?</strong><br /><br /></p>



<p>Zanim odpowiem, sprostuję jedną kwestię. Mniej więcej 2 tygodnie temu, obroniłem się, więc już nie jestem doktorantem, a świeżo upieczonym doktorem. Natomiast prawda, do tej pory byłem na Oxfordzie. Jak się tam dostać? Odpowiedź może brzmieć banalnie. Należy złożyć aplikację. Aplikacja taka wygląda trochę inaczej na studia na poziomie licencjackim, a trochę inaczej na doktorat. Wydaje mi się, że na doktorat jest dużo łatwiej się dostać, niż na licencjat.&nbsp;<br /><br /></p>



<p>Aplikacja składa się z dwóch elementów:<br /><br /></p>



<ol>
<li>List opisujący, czym byśmy chcieli się zajmować, dlaczego właśnie na Oxfordzie, jakie tematy nas interesują itd.&nbsp;<br /></li>



<li>Druga część tej aplikacji to są referencje od ekspertów w dziedzinie. Najlepiej profesorów, z którymi wcześniej pracowaliśmy, którzy nas znają i dobrze, aby byli dosyć sławni w tej dziedzinie. Najlepiej jest znaleźć możliwości pracy z kimś, kto jest w miarę rozpoznawalny i dać się tej osobie poznać, żeby dostać taką referencję.<br /><br /></li>
</ol>



<p><strong>Faktycznie, brzmi to w miarę prosto. Czy było warto? Jak to oceniasz to teraz z perspektywy czasu?</strong><br /></p>



<p>Wydaje mi się, że jest warto. Moją drugą najlepszą opcją byłoby zostać na doktoracie na Uniwersytecie Technicznym w Monachium, gdzie zrobiłem swoją magisterkę. Doktorat w Monachium też byłby bardzo dobry, natomiast różnica jest taka, że w Niemczech ludzie często traktują doktoraty jako taką zwykłą pracę, gdzie przychodzą na 09:00, wychodzą o 17:00, nie pracują w weekendy. Natomiast na Oxfordzie jest dużo większa presja, są zazwyczaj przyjmowani bardzo dobrzy ludzie, którzy osiągają bardzo dobre rezultaty. <br /><br /></p>



<p>Poprzez chęć dorównania im wytwarza się presja i ludzie pracują nieco więcej. Niektórym może to nie odpowiadać, natomiast dla mnie jest to coś, czego akurat chciałem i potrzebowałem. Oxford, jeżeli chodzi o <em>machine learning,</em> jest również świetnym miejscem dlatego, że jest tu około 15 grup badawczych na światowym poziomie. Jest mnóstwo ludzi, mnóstwo różnych tematów, nad którymi te grupy pracują, więc jest dosyć duża swoboda pracy. Można też w dosyć łatwy sposób zbudować dobrą siatkę kontaktów z najlepszymi naukowcami na świecie.<br /><br /><br /></p>



<p><strong>Brzmi jak środowisko, które po pierwsze da się łatwo zmobilizować, a po drugie ta sieć kontaktów robi potem swoje i naprawdę później te kilka lat w Oxfordzie procentuje.&nbsp;</strong><br /></p>



<p><strong>Na Twoim Twitterze jest takie zdanie: &#8222;próbuję zrozumieć, czym jest inteligencja i ją zaimplementować&#8221;. Gdzie jesteś teraz, jeżeli chodzi o inteligencję? Na ile udało Ci się zrozumieć, czym ona jest? Jak wyglądają postępy?</strong><br /><br /></p>



<p>Zacznę od tego, że to stwierdzenie jest nieco naciągane. Nie wiem, czy jest chociaż jedna osoba na świecie, która tak naprawdę rozumie, czym jest inteligencja. To pojęcie jest trudne do zdefiniowania. Wydaje mi się, że obecnie posiadane definicje są zbyt szerokie. <br /></p>



<p><br />Na przykład, niektórzy definiują inteligencję jako umiejętność rozwiązywania wszelkiego rodzaju problemów, bądź umiejętność szybkiego uczenia się rozwiązywania wszelkiego rodzaju problemów. Natomiast jeżeli pomyślimy o problemach wszelkiego rodzaju, jest to niesamowicie duża przestrzeń problemów. <br /></p>



<p><br /><br />Jeżeli użyjemy tej definicji, okazuje się, że ludzie wcale nie są inteligentni. Możemy zaprojektować bardzo dużo problemów, które są prawie losowe, gdzie są losowe związki pomiędzy różnymi elementami. Okazuje się, że ludzie są bardzo kiepscy w rozwiązywaniu tego typu problemów. Nawet dosyć ciężko jest zawrzeć intuicyjne rozumienie inteligencji w prostej definicji. To jest jeden punkt widzenia.<br /><br /></p>



<p>Z innego zaś rozumiemy na poziomie mechanicznym czy kalkulacyjnym, jak niektóre mechanizmy w mózgu ludzkim i innych zwierząt pracują. Natomiast bardzo często ta wiedza może nam dać pewną inspirację, jak budować system uczenia maszynowego. Zazwyczaj jest ona jednak zbyt mało precyzyjna, żeby naprawdę powiedzieć nam, jak pewne rzeczy powinny funkcjonować. Nawet jeżeli chodzi o intuicję, zazwyczaj dotyczy to bardzo niskopoziomowych podsystemów mózgu.&nbsp;<br /><br /></p>



<p>Mówiąc krótko, tak naprawdę nie wiemy, czym jest inteligencja i jak ją osiągnąć. Natomiast wiemy, jakie podzespoły znajdują się w mózgu i mniej więcej jakie funkcje różne podzespoły pełnią, co daje nam pierwowzór, na którym możemy się wzorować i który możemy próbować zaimplementować.&nbsp;<br /><br /><br /></p>



<p><strong>Twoje badania zwykle skupiają się na uczeniu nienadzorowanym, czyli <em>unsupervised learning. </em>W szczególności działasz sporo z autoenkoderami. Z jednej strony, domyślam się, że ten wybór podyktowany jest tym, że uczenie nadzorowane jest bardziej ograniczone. </strong><br /></p>



<p><strong>Chciałbym usłyszeć Twoją wersję, podziel się swoją motywacją, dlaczego uczenie tylko nienadzorowane? Jeżeli skupiasz się tylko na tym, to jaką przyszłość możesz zaprognozować tej dziedzinie? Jak to się rozwinie w ciągu najbliższych 3-5 lat na podstawie tej wiedzy, którą już teraz posiadasz?&nbsp;</strong><br /><br /></p>



<p>To prawda, że skupiam się głównie na uczeniu nienadzorowanym. Mam może 3 publikacje, które są również o uczeniu nadzorowanym, natomiast na pewno nie jest to główna część mojego badania. Tak, jak zauważyłeś, uczenie nadzorowane ma pewne ograniczenia, które wynikają głównie z tego, że do uczenia nadzorowanego potrzebujemy danych oznaczonych przez człowieka. Czyli potrzebujemy dane zebrane przez różne sensory (np. zdjęcia) i oznaczenia (czyli np. kwadraciki, narysowane na około twarzy, ludzi na tych zdjęciach). <br /><br /></p>



<p>Żeby dostać takie kwadraciki, zazwyczaj potrzebujemy armii ludzi, która będzie takie kwadraciki rysować. Jest to drogi i czasochłonny proces. Za każdym razem kiedy dostaniemy nowe dane, musimy zatrudnić ludzi i zbierać te oznaczenia. Nie możemy np. wykorzystać setki tysięcy godzin filmów dostępnych na YouTube, żeby nauczyć nasz algorytm, ponieważ mimo że posiadamy dane w postaci tych filmów, to nie mamy do nich oznaczeń, co więcej z biegiem czasu często widziane przez algorytm dane zmieniają się. <br /></p>



<p>Np. jeżeli za tydzień mielibyśmy robota, który działa nieustannie i z biegiem czasu zmienia się sceneria, w której ten robot się przemieszcza (np. rozbudowuje się miasto, zmieniają się budynki itd.), to gdyby taki robot korzystał tylko i wyłącznie z uczenia z nauczycielem, to mógłby mieć problem z dostosowaniem się do nowego wizerunku otoczenia. <br /></p>



<p>Natomiast jeżeli taki robot mógłby uczyć się na bieżąco, to mógłby się dostosowywać. Uczenie na bieżąco oznacza, że nie ma oznaczeń wygenerowanych przez człowieka, w związku z tym musimy wykorzystać uczenie nienadzorowane.&nbsp;<br /><br /><br /></p>



<p><strong>Te wspomniane etykiety są także często nieprecyzyjne. Człowiek sam w sobie jest niedeterministyczny. Ta sama osoba potrafi inaczej oznaczyć tę samą ramkę, a tym bardziej jak jest grono rozproszonych ludzi w świecie, to ten <em>input</em> jeszcze bardziej byłby zaszumiony. Zresztą słynny ImageNet też był robiony w taki sposób, że niektóre obrazki były robione po kilka razy, żeby upewnić się, że to jakoś w miarę się pokrywa, ale to też nie było proste zadanie.&nbsp;</strong><br /><br /></p>



<p><strong>Teraz już wiemy, o co chodzi z uczeniem nienadzorowanym i jaka była Twoja motywacja. To chodźmy dalej w kierunku autoenkoderów<em>. </em>Wyjaśnij i podaj klasyczną definicję autoenkodera<em>.</em> Co to jest? Co on robi? Czy mógłbyś podać jakieś przykłady?&nbsp;</strong><br /><br /></p>



<p>Wydaje mi się, że taka ogólna definicja to byłby model, który potrafi skompresować dane i później dokonać ich&nbsp; dekompresji.&nbsp;<br /><br /><br /><br /></p>



<p><strong>Kompresja to według mnie dobre skojarzenie. Mamy w tym przypadku dwa czynniki. Wiele osób nie miało styczności z autoenkoderami, ale pewnie każdy używał <em>zipa</em> albo inny kompresora danych &#8211; czyli wtedy, kiedy pakujemy dany plik w jakąś taką postać “pomiędzy”. To jest nadal plik, ale nie ten oryginalny i zajmuje troszkę mniej miejsca. Później jakiś inny program albo funkcjonalność tego samego programu to odczytuje. Gdzie taki autoenkoder może być użyteczny?</strong><br /><br /></p>



<p>Prostym i dosyć powszechnym przykładem jest np. kompresja zdjęć. Dzisiaj jednym z najpopularniejszych formatów jest .jpg, który jest skompresowanym zdjęciem. Jest to kompresja stratna, która nie zawiera wszystkich informacji, natomiast zdekompresowane zdjęcie wygląda bardzo podobnie do tego przed kompresją. <br /></p>



<p>Jpg<em> </em>jest standardem ręcznie zaprojektowanym, co zajęło wiele lat. Ma jakieś właściwości, jeżeli chodzi o kompresję, natomiast okazuje się, że dzisiejsze autoenkodery wykorzystujące najnowsze osiągnięcia z uczenia maszynowego, potrafią nauczyć się kompresować zdjęcia dużo lepiej niż <em>.</em>jpg, w przeciągu minut, co może spowodować zaoszczędzenie olbrzymiej ilości danych (np. przy przesyłaniu zdjęć przez Internet).&nbsp;<br /><br /><br /><br /></p>



<p><strong>To bardzo fajny przykład. Google też to próbuje stosować, kiedy się wysyła mniejsze zdjęcie i komórka, która pobrała to zdjęcie, potrafi to zdjęcie rekonstruować. W ten sposób to funkcjonuje i faktycznie nie trzeba przesyłać dużych plików. Przy czym po otworzeniu zdjęcia wygląda ono bardzo podobnie do oryginalnego i nie ma za bardzo tej straty. Myślę, że też fajnie wspomnieć o przypadkach związanych z tym, że możemy zaszumić sobie to zdjęcie i potem otworzyć takie, które nie jest zaszumione. </strong><br /></p>



<p><strong>Albo np. przypadki związane z nakładaniem, coś jest na tym zdjęciu wycięte i później można to odtworzyć. Co prawda, to też ma negatywne skutki. Było dość głośno na ten temat, kiedy nagle się okazało, że wszystkie znaki wodne można wyeliminować &#8211; to, co potrafi autoenkoder zrobić, czyli odszumić od &#8222;niepotrzebnych&#8221; rzeczy. </strong><br /></p>



<p><strong>Więc teraz, jak ktoś myśli, że dodając znak wodny do zdjęcia może spać spokojnie, to już te czasy niestety minęły. To się wszystko rozwija, więc trzeba to robić bardziej dynamicznie, niż tylko poprzez dodanie statycznego znaku wodnego.</strong><br /><br /></p>



<p><strong>Podsumowując, jeżeli chodzi o autoenkoder, mamy kawałek tej sieci na wejściu np. zdjęcie, które jest pobierane i robimy wszystko, żeby zredukować wymiary. Zostaje jakiś powiedzmy wektor. Później jest inny kawałek sieci, który próbuje z tego wektora odtworzyć zdjęcie oryginalne.</strong><br /><br /></p>



<p><strong>Ale teraz przejdźmy do tego, nad czym pracujesz więcej, czyli <em>variational autoenkoders (VAE)</em>. Wyjaśnij, dlaczego <em>VAE</em> używasz najczęściej? Na czym polega różnica od klasycznego autoenkodera<em>?</em></strong><br /><br /></p>



<p>Główną różnicą jest to, że autoenkoder wariacyjny jest to model stochastyczny. Zazwyczaj zwykłe autoenkodery są deterministyczne tzn., że mamy coś na wejściu (np. zaszumiony obrazek), później mamy reprezentację tego zaszumionego obrazka na wejściu, który jest wektorem uzyskanym w sposób deterministyczny i później staramy się zrekonstruować z tego wektora odszumiony obrazek, bądź zaszumiony (w zależności od aplikacji). <br /></p>



<p>Jednym z problemów w tym autoenkoderze jest to, że jest tylko jedno poprawne rozwiązanie, czy też istnieje tylko jeden rodzaj poprawnej rekonstrukcji. Nie możemy zawrzeć w tym naszym wektorze, który reprezentuje to zdjęcie, niepewności związanej z tym obrazkiem czy z rekonstrukcją.&nbsp;<br /><br /></p>



<p>Natomiast autoenkoder wariacyjny to model stochastyczny, gdzie ten wektor, który jest reprezentacją naszego obrazka, jest zaszumiony. Dodajemy do niego pewien szum, co pozwala nam zakodować pewną niepewność. Dzięki temu jeden konkretny wektor pozwala nam zrekonstruować wiele różnych wariantów tego obrazka, który mieliśmy na wejściu.<br /><br /><br /><br /></p>



<p><strong>Na tym polega nasz świat. Jak spróbujemy powtórzyć to samo działanie i np. jeżeli komuś przygotujemy przepis i powiemy: <em>&#8222;Słuchaj, ja całe życie robiłem tak i tak, więc rób te same kroki, a osiągniesz to samo&#8221;, </em>to zwykle tak nie działa, bo życie zawsze gdzieś nas zaskoczy. Tak tylko dodam, że jak mówisz &#8222;stochastyczne&#8221;, to myślę, że dla osób, które nie są w tej terminologii obeznane, to pewnie słowo &#8222;losowy&#8221; będzie bardziej zrozumiałe. </strong><br /></p>



<p><strong>Sprowadzamy się do tego, że w tym przypadku przepuszczając przez ten nasz model np. zdjęcie, to w klasycznym autoenkoderze dostajemy ten sam wynik (jeżeli model już jest wytrenowany), a w przypadku autoenkodera wariacyjnego przepuszczając za każdym razem model, wynik może być nieco inny. Czy to jest tak, że też mamy parametry, które umożliwiają ten rozrzut wyników, żeby można było ten model jakoś ograniczyć? Na tym właśnie polega trenowanie tego modelu, że dobieramy te parametry, prawda?</strong><br /><br /></p>



<p>Tak, oba modele zazwyczaj są to dwie sieci neuronowe. Jeżeli chodzi o implementację, to różnica sprowadza się do tego, że w autoenkoderze<em>, </em>enkoder jest jedną siecią neuronową, która daje nam ten wektor będący reprezentacją obrazka na wejściu. </p>



<p>Natomiast w autoenkoderze wariacyjnym, enkoder daje nam nie jeden wektor, ale rozkład prawdopodobieństwa na przestrzeni różnych wektorów, które mogą opisywać bądź reprezentować obrazek na wejściu.<br /></p>



<p>W najprostszym przypadku ten rozkład&nbsp; jest tu po prostu wielowymiarowym rozkładem gaussowskim. Wtedy implementacja polega na tym, że ten enkoder daje nam wektor średni i kowariancję. Kowariancja jest w tym przypadku zazwyczaj macierzą diagonalną, więc możemy ją wyrazić jako wektor. Czyli enkoder daje nam te dwa wektory, dzięki czemu możemy uzyskać ten rozkład gaussowski, z którego próbki później opisują nam to, co mamy na wejściu (czyli ten obrazek). <br /></p>



<p>Ponieważ w tych próbkach jest niezerowa wariancja, możemy zrekonstruować nasz obrazek na wiele różnych sposobów, rekonstruując różne próbki z tego rozkładu prawdopodobieństwa.<br /><br /><br /></p>



<p><strong>Jak mawiali mądrzy ludzie: umiejętność rozpoznawania obiektów i zrozumienia relacji pomiędzy tymi obiektami jest kamieniem węgielnym ludzkiej inteligencji. Spróbujmy najpierw zrozumieć, co to oznacza w praktyce. Ważność rozpoznania obiektów i relacji &#8211; dlaczego akurat to jest taki ważny element? Jak to się robi, jeżeli chodzi o uczenie nadzorowane? Większość elementów się skupia na ten moment, używając <em>supervised learning, </em>w szczególności jeżeli mówimy o zastosowaniu w praktyce, bo ta gałąź nienadzorowana dopiero się rozkręca.</strong><br /><br /></p>



<p>My jako ludzie, ale także inne istoty (ożywione i nieożywione), musimy cały czas poruszać się w swoim środowisku i musimy nieustannie wchodzić z nim w interakcje. Wchodzenie w interakcje ze środowiskiem zazwyczaj polega na wchodzeniu w interakcje z różnymi obiektami w tym środowisku. Możemy to zrobić bezpośrednio, gdzie sami wchodzimy w interakcję z tymi obiektami (np. dotykamy ich, przesuwamy) bądź możemy używać do tego narzędzi. <br /></p>



<p>Użycie narzędzi jest to używanie innych obiektów do manipulowania otoczeniem. Żeby to było możliwe i żeby tak naprawdę życie było możliwe, musimy zrozumieć, co znajduje się w naszym otoczeniu. Musimy być w stanie wykryć obiekty, opisać je. Nie musi to być świadome, natomiast musimy wiedzieć, jakie właściwości mają różne obiekty oraz jakie są relacje między nimi. <br /></p>



<p>Na przykład: znamy prawa fizyki i wiemy, że jak coś zrzucimy ze stołu, to spadnie na ziemię, ale z drugiej strony oznacza to, że ten stół podpiera ten przedmiot, który na nim stoi. Używając relacji tego typu, możemy wykorzystywać obiekty w naszym otoczeniu jako narzędzia. Wtedy widząc np. banana wiszącego na drzewie, możemy wziąć krzesło bądź kamień, postawić go pod drzewem, wspiąć się i zerwać tego banana.&nbsp;<br /><br /><br /><br /></p>



<p><strong>A propos tych relacji, chciałem moją obserwację dotyczącą tego, jak się uczymy. Obserwując najpierw synka teraz już bardziej córkę (która ma ponad roczek), zauważyłem, jak uczy się małe dziecko. Najpierw jest w miarę czysta karta i później np. jak moja córka upadła i uderzyła się o łóżko, to trochę ją zabolało. </strong><br /></p>



<p><strong>Teraz jak próbuje położyć się na bok, to wie, że to może zaboleć, zamyka oczy i robi to bardziej delikatnie. Nauczyła się w ten sposób, że to boli. My jako ludzie bardzo często poznajemy ten świat poprzez eksperymenty. Część z nich faktycznie musimy dokonać swoimi rękoma, a części się po prostu domyślamy. Znajdując pewne analogie i wzorce, nie musimy całego świata spróbować, żeby go poznać. </strong><br /></p>



<p><strong>Nie poznamy go w całości, ale przynajmniej takie podstawowe rzeczy, które zdają się bardzo trywialne dla osoby dorosłej. Nie musimy ich wszystkich spróbować. Wiemy, że jak włożymy dwa palce do kontaktu, to kopnie nas prąd, a nie wszyscy to sprawdzili. To jest ciekawa rzecz, jak my jako ludzie uczymy się, jak wyciągamy te relacje. Nie mówię, że to jest kierunek, żeby zdefiniować inteligencję, ale to są powiązane punkt. </strong><br /></p>



<p><strong>Obecne modele, w szczególności związane z uczeniem nadzorowanym, zupełnie nie rozumieją tej relacji. Potrafią jeszcze wykrywać w taki sposób statystyczny, że na danym zdjęciu jest coś (kot, pies itd.), ale nie potrafią zrozumieć, że kot będzie uciekał za chwilę, bo tutaj jest także pies.&nbsp;</strong><br /><br /></p>



<p>W tym przypadku to bym powiedział, że to zależy od danych, jakich używamy do trenowania. Natomiast wydaje mi się, że to, co chciałeś powiedzieć to to, że dzisiejsze algorytmy uczą się wykrywać nie tyle związki przyczynowo-skutkowe, co zależności statystyczne. Dzisiaj to właśnie wykrywanie związków przyczynowo-skutkowych jest bardzo aktywnym obszarem badań. Bardzo wiele publikacji powstaje właśnie w tej dziedzinie.&nbsp;<br /></p>



<p><strong>W 2016 r. naukowcy z DeepMind opublikowali pracę o tzw. AIR (</strong><strong><em>Attend-Infer-Repeat)</em></strong><strong>, która przykuła Twoją uwagę. Zresztą też napisałeś potem swoją własną implementację tego algorytmu, który jest dostępny na GitHubie. Później to na tyle Cię zainspirowało, że napisałeś swoją publikację z tzw. </strong><strong><em>sequential</em></strong><strong>. Wyjaśnij troszkę bardziej kontekst &#8211; czym jest AIR? Jakie ma wady?</strong><br /></p>



<p>AIR reprezentuje bardzo dużą część moich zainteresowań sztuczną inteligencją i inteligencją jako taką. AIR jest to stochastyczny model, który potrafi opisać różne obrazki, różną ilością zmiennych. Oznacza to, że jeżeli mamy bardzo prosty obrazek np. jabłko na stole, możemy taki obrazek opisać tylko jedną zmienną, która w tym przypadku będzie opisywała to jabłko. Natomiast jeżeli mamy bardziej skomplikowaną scenę, możemy użyć większej ilości zmiennych, gdzie każda z nich będzie opisywała inny element tej sceny. <br /></p>



<p>Jest to fajne, ponieważ pozwala nam to skompresować zdjęcia do rozmiaru, który odpowiada ilości elementów na tym zdjęciu, czyli bardziej skomplikowane zdjęcie, będzie opisane większą ilością zmiennych. Inną równie ciekawą rzeczą jest to, że każda zmienna będzie opisywała inny przedmiot na tym zdjęciu. Jest to ciekawe dlatego, że AIR jest elementem, który uczy się bez nauczyciela. <br /></p>



<p>Żeby opisać różne przedmioty różnymi zmiennymi, AIR musi nauczyć się wykrywać te przedmioty, wyizolować je z tego zdjęcia i opisać. Co ciekawe, w odróżnieniu od innych modeli, które wykrywają obiekty, AIR opisuje obiekt, nie tylko opisując jego położenie na zdjęciu (czyli współrzędne x, y i rozmiary), ale również daje nam wektor, który opisuje bardzo dokładnie wygląd tego obiektu. <br /></p>



<p>Tego typu reprezentacja (tzn. reprezentacja zdjęcia złożona z wielu zmiennych, opisujących różne elementy na nim), pozwala nam wnioskować relacje pomiędzy obiektami na tym zdjęciu i odpowiadać na często dosyć skomplikowane pytania (o to zdjęcie, o przedmioty na nim).&nbsp;<br /><br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Attend, Infer, Repeat: Fast Scene Understanding with Generative Models" width="960" height="540" src="https://www.youtube.com/embed/4tc84kKdpY4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption"> Authors: S. M. Ali Eslami, Nicolas Heess, Theophane Weber, Yuval Tassa, Koray Kavukcuoglu, Geoffrey E. Hinton &#8211; <a href="http://arkitus.com/files/arxiv-attend-infer-repeat.pdf" target="_blank" rel="noreferrer noopener" aria-label=" (otwiera się na nowej zakładce)">Paper</a><a rel="noreferrer noopener" href="https://www.youtube.com/redirect?v=4tc84kKdpY4&amp;event=video_description&amp;redir_token=_LBek8GNTSsXiX-CuKCDJ_7SXEt8MTU4Njg2NDEzM0AxNTg2Nzc3NzMz&amp;q=http%3A%2F%2Farkitus.com%2Ffiles%2Farxiv-attend-infer-repeat.pdf" target="_blank">, </a><a href="http://arkitus.com/attend-infer-repeat/" target="_blank" rel="noreferrer noopener" label="Overview (otwiera się na nowej zakładce)" class="broken_link">Overview</a></figcaption></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Brzmi to ciekawie, prawie tak, jakby działa się jakaś magia, że nie mówimy modelowi, co jest na tym zdjęciu, a on sam potrafi się domyślić, zbadać lokalizację tych przedmiotów, a przy okazji reprezentację wektorową. Innymi słowy &#8211; jak mam zdjęcie, a którym jest stół, na nim klocki, to on jest w stanie wychwycić te poszczególne klocki i je przenieść, bo może robić różne manipulacje matematyczne, również geometryczne. Prawda?</strong><br /><br /></p>



<p>Tak, to prawda. Niestety ten model ma też sporo wad. Jedną z nich jest to, że ten model działa tylko na bardzo prostych zdjęciach, reprezentujących bardzo proste sceny np. obiekty leżące na stole, cyferki na czarnym tle. Niestety on nie działa z bardziej skomplikowanymi scenami. Natomiast w tej chwili są już publikacje, które prezentują rozszerzenia tego modelu, które są w stanie działać na dosyć skomplikowanych scenach. <br /><br /></p>



<p>Jest też trochę problemów technicznych z jego implementacją. Sam model zawiera wiele komponentów. Trudnością techniczną jest to, że różna ilość zmiennych do opisu różnych wejść (czy obrazków) oznacza, że musimy podjąć decyzję w pewnym momencie, ile tych zmiennych ma być. <br /></p>



<p>Decyzja ta jest związana z pracą z dyskretnym rozkładem prawdopodobieństwa. Obliczanie gradientów pochodnych w rozkładach dyskretnych jest dosyć trudne i wymaga dużej ilości plików. Da się to zrobić, natomiast trenowanie takich modeli jest dużo droższe i niestety te modele nie skalują się tak dobrze do dużych danych.&nbsp;<br /><br /><br /><br /></p>



<p><strong>Powiedziałeś też o kolejnych publikacjach, które te wady częściowo naprawiają. Skupmy się teraz na Twojej publikacji, czyli SQAIR (</strong><strong><em>Sequential Attend, Infer, Repeat)</em></strong><strong>. Co udało się osiągnąć? Co udało się naprawić z tej poprzedniej inspiracji, jeśli chodzi o pierwotny model AIR?</strong><br /></p>



<p>Po pierwsze AIR jest modelem, który działa na poszczególnych zdjęciach. Jeżeli użyjemy AIR do opisania zdjęcia kilkoma zmiennymi, dostaniemy zmienne, opisujące różne obiekty. Wszystko fajnie, ale teraz jeżeli mamy wideo i zastosujemy ten model do następnej klatki tego filmu, chcielibyśmy mieć zmienne, które znowu opisują te same obiekty i faktycznie AIR może nam to dać. Niestety nie będziemy mieli żadnego prostego sposobu, żeby powiązać zmienne z jednej klatki do zmiennych z następnej. <br /></p>



<p>Nie będziemy wiedzieli, które zmienne przyporządkować do tego samego obiektu. Jeżeli interesuje nas jakiś konkretny obiekt i chcemy wiedzieć, gdzie on się znajduje, jak się porusza, jak się zachowuje, jakie ma relacje w stosunku do innych obiektów widocznych na filmie, niestety AIR nie będzie nam w stanie tego dać.&nbsp;<br /></p>



<p>Po drugie ponieważ AIR pracuje ze zdjęciami, rozkład tego zdjęcia na różne obiekty jest niejednoznaczny, tzn. jeżeli mamy skomplikowany obiekt (nawet człowieka), AIR może rozbić go np. na nogi i tors, ale też może rozbić człowieka na pół, gdzie jedna zmienna będzie opisywała jedną nogę i jedną rękę, a druga będzie opisywała drugą nogę i drugą rękę. <br /></p>



<p>To dlatego że ten rozkład jest dokonywany tylko i wyłącznie na podstawie pikseli, na podstawie jednego zdjęcia. Jeżeli mielibyśmy algorytm, który działa bezpośrednio na video, moglibyśmy wziąć pod uwagę, które części zdjęcia poruszają się razem, a które nie. Biorąc to pod uwagę, moglibyśmy zaklasyfikować człowieka jako jeden obiekt i wtedy reprezentować go, używając tylko jednej zmiennej, która faktycznie wyrazi, jak ten obiekt zmienia się w czasie na różnych klatkach video. <br /></p>



<p>W SQAIR również dostajemy zmienne, które opisują ten sam obiekt w różnych punktach czasu. Możemy tego użyć do śledzenia obiektów.&nbsp;<br /><br /></p>



<p>Co udało nam się osiągnąć? Udało nam się to zastosować do wideo nagranych na kampusie uniwersyteckim, gdzie nauczyliśmy się wykrywać i śledzić ludzi. Udało nam się zrobić to bez nadzoru człowieka, co do tej pory nie było możliwe. <br /><br /><br /><br /></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="562" src="https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.49.01-1-1024x562.png" alt="" class="wp-image-3096" srcset="https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.49.01-1-1024x562.png 1024w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.49.01-1-300x165.png 300w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.49.01-1-768x421.png 768w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.49.01-1-1140x625.png 1140w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.49.01-1.png 1156w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Grafika podchodzi z artykułu: &#8222;<a href="https://arxiv.org/pdf/1806.01794.pdf">Sequential Attend, Infer, Repeat: GenerativeModelling of Moving Objects </a>&#8222;, którego Adam Kosiorek jest współautorem. </figcaption></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Tam jeszcze jest jedna rzecz, o której nie wspomniałeś, a mnie to też zaciekawiło w tej publikacji. Mam na myśli przewidywanie, czyli z jednej strony obserwowanie tych zmian w czasie rzeczywistym (że jakiś obiekt się porusza), ale również prognozowanie co będzie dalej. Czyli człowiek jest tam gdzie jest, ale za chwilę pójdzie w zupełnie inną stronę.&nbsp;</strong><br /></p>



<p>Tak, możemy również przewidywać przyszłość. Co ciekawe, ponieważ jest to model stochastyczny (czyli losowy), możemy przybliżyć wiele różnych przyszłości. Dzięki temu, możemy przewidzieć różne rozwiązania. Może to być bardzo istotne, np. w przypadku samojeżdżących samochodów, które muszą podejmować decyzje konserwatywne tak, żeby np. nie wpaść na pieszego. W takim przypadku, jeżeli możemy przewidzieć różne ścieżki, którymi pieszy może się poruszać w przyszłości, możemy mieć samochód, który będzie bardzo bezpieczny.&nbsp;<br /><br /><br /></p>



<p><strong>No właśnie, to już jest bardziej rzeczywiste, że ten świat może mieć wiele scenariuszy i ważne jest, aby umiejętnie się przygotować przynajmniej do części z nich. Uwiarygodni to rozwiązanie na większą skalę.</strong><br /><br /></p>



<p><strong>Zmienię temat i przybliżę się do Twojej ostatniej publikacji (przynajmniej z tych, które są publicznie dostępne, bo nie wiem nad czym jeszcze pracujesz teraz). W roku 2017 Hinton wraz ze swoim zespołem przedstawił światu tzw. <em>capsule networks</em>. Hinton jest słynny z tego, że bardzo mocno krytykuje CNN, czyli sieci konwolucyjne argumentując, że to ma swoje ograniczenia. </strong><br /><br /></p>



<p><strong>Akurat te argumenty, których używa, faktycznie przemawiają do mnie. Ciężko to nazwać inteligencją, to bardziej na poziomie statystyki. Zgaduje pewne rzeczy i dość często trafia. Teraz proszę wyjaśnij, czym są <em>capsule networks. </em>Do czego mogą być przydatne? Czy to działa?</strong><br /><br /></p>



<p>Zacznę od ostatniego pytania, czy to działa? Nie, niestety nie, ale cel jest godny podziwu i być może pewnego dnia zaczną działać. <em>Capsule networks (</em>po polsku byłaby to sieć kapsułkowa) mógłbym przedstawić z kilku punktów widzenia. Jeden z ciekawszych jest ten, że sieci neuronowe w tej chwili działają na podstawie poszczególnych neuronów. <br /></p>



<p>Każdy neuron jest to wartość skalarna, czyli po prostu jedna liczba. Natomiast w <em>capsule networks</em>, jeden neuron jest małym wektorem, który opisuje jakiś obiekt bądź jakąś abstrakcję.&nbsp;<br /></p>



<p>Wróćmy na chwilę do CNN. <em>Convolutional Neural Network </em>działa, ponieważ to, co mamy na wejściu, nie zależy od translacji, tego co dajemy na wejściu. Jeżeli mamy np. zdjęcie i zastosujemy CNN na nim, to jeżeli przesuniemy to zdjęcie, przesunie się również wyjście. Po angielsku mówimy, że CNN są <em>translation equivalent, </em>gdzie <em>translation </em>jest jednym z wielu stopni swobody, w stosunku do których zmiany chcielibyśmy modelować w ten sposób. <br /></p>



<p>Inne stopnie swobody tego typu, to jest np. skala, czyli powiększanie, zmniejszanie obiektów bądź rotacja, czyli obserwator monitoruje przedmiot z innego punktu widzenia itd. CNN tego niestety nie robią, choć ostatnio pojawiają się publikacje, które dają tego typu możliwości. Natomiast są one bardzo skomplikowane matematycznie. <br /></p>



<p>Główną ideą <em>capsule networks</em> jest to, że obiekt, skomplikowany przedmiot jest złożony z części. Relacje geometryczne pomiędzy tym obiektem a jego częściami, są niezależne od punktu widzenia obserwatora. Jeżeli powiedzmy, moja ręka jest przesunięta w jakiś sposób względem mojego środka ciężkości, to to przesunięcie nie zależy od tego, z którego punktu ktoś na mnie patrzy. <br /><br /></p>



<p>Jest to prawdą, tylko jeżeli weźmiemy pod uwagę geometrię trójwymiarową. Nie jest to natomiast prawda, jeżeli mówimy o dwuwymiarowych projekcjach, czyli zdjęciu. Jeżeli przyjmiemy to założenie, że obiekt składa się z części i te relacje między obiektami a częściami obiektu nie zależą od pozycji obserwatora i jeżeli założymy, że części i ich pozycje są łatwiejsze do wykrycia niż całe skomplikowane obiekty, to mogąc wykryć te części na zdjęciu, powinniśmy być w stanie użyć informacji o tych częściach do wykrycia obiektu, z których te części się składają.<br /><br /></p>



<p> Jest to dosyć skomplikowane i nie wiem, czy jestem w stanie to wyrazić w kilku zdaniach.<br /><br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Geoffrey Hinton – Capsule Networks" width="960" height="540" src="https://www.youtube.com/embed/x5Vxk9twXlE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption"> Geoffrey Hinton – Capsule Networks ,   York University </figcaption></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Gdzieś tam pojawia się też ten element interpretacji, że rozkładamy sobie na czynniki pierwsze albo na jakieś mniejsze części i coś tam z tym robimy, pojawiają się wektory, które próbują te części opisywać. Pewien kontekst z tego wybrzmiał. </strong><br /></p>



<p><strong>Dążę do tego, że pojawiła się Twoja najnowsza publikacja o nazwie <em>&#8222;Stacked Capsule Autoencoders&#8221;</em>, w której również Hinton brał udział (albo przynajmniej jest wpisany jako jeden z współautorów). Powiedz trochę więcej, co fajnego udało się osiągnąć tym razem?</strong><br /><br /></p>



<p>Wydaje mi się, że pomysł kapsułek jest nieco zbyt skomplikowany, żeby mógł działać. Natomiast to, co mnie zainteresowało to to, że kapsułki wykorzystują tzw. <em>routing</em>, czyli mamy części i obiekty. Części powinny w pewnym sensie zagłosować na niektóre obiekty. Powoduje to, że potrzebujemy znaleźć ścieżkę, którą informacje powinny popłynąć w takiej sieci neuronowej. Jest to podobne do modelu, który ostatnio stał się popularny w przetwarzaniu języka naturalnego &#8211; <em>transformer</em>. <br /></p>



<p>Ja byłem zainteresowany tymi dwoma związkami. Tak się zdarzyło, że akurat byłem na konferencji w Montrealu, gdzie wpadłem na Hintona. Hinton zaprosił mnie na staż do niego do labu. Tak powstało <em>Capsule autoencoders. </em>To, co staraliśmy się osiągnąć, to sieć neuronowa, która byłaby nieco bardziej elastyczna niż oryginalne kapsułki dlatego, że oryginalne kapsułki są bardzo skomplikowane pod względem całej używanej maszynerii. <br /><br /><br /></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="343" src="https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17-1024x343.png" alt="" class="wp-image-3088" srcset="https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17-1024x343.png 1024w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17-300x100.png 300w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17-768x257.png 768w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17-1536x514.png 1536w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17-1140x381.png 1140w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.17.png 1680w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Grafika pochodzi z publikacji: &#8222;<a href="https://arxiv.org/pdf/1906.06818.pdf" target="_blank" rel="noreferrer noopener" aria-label="Stacked Capsule Autoencoders (otwiera się na nowej zakładce)">Stacked Capsule Autoencoders</a> &#8222;, której współautorem jest Adam Kosiorek. </figcaption></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Chcieliśmy mieć model, który pozwoli nam nauczyć się interpretacji wejścia w taki sposób, żeby ta interpretacja dała nam wektory, które przestrzegają pewnych praw. Chcieliśmy mieć takie wektory, które będziemy mogli komponować ze sobą w sposób geometryczny. Trochę tak jak relacje pomiędzy obiektami i ich częściami oraz wektory, które będzie można transformować, używając geometrii trójwymiarowej. <br /></p>



<p>W związku z tym, wzięliśmy sieć neuronową bardzo podobną do kapsułek, natomiast zrobiliśmy ją nieco w drugą stronę.&nbsp;<br /></p>



<p>Kapsułki wcześniej szły od obrazka do wektora prawdopodobieństw przynależności tego obrazka do różnych klas i były wykorzystywane do klasyfikacji obiektów. My zaś odwróciliśmy tę kapsułkę tak, że mogliśmy zacząć od opisu obiektu i mając go, mogliśmy wykorzystać maszynerię podobną do tej, która była w kapsułkach, do wygenerowania obrazka tego obiektu, rozkładając obiekt na różne części i później mapując je bezpośrednio do małych obrazków. <br /></p>



<p>Robiąc to, mogliśmy wziąć tak naprawdę byle jaką sieć neuronową, która mogła się nauczyć reprezentacji oczekiwanych przez nasz dekoder. W związku z tym, otrzymaliśmy model, który uczył się opisywać obrazki bez nauczyciela, gdzie ta reprezentacja, wyuczona przez ten model, przestrzegała zasady geometrii trójwymiarowej.&nbsp;<br /><br /><br /><br /></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="360" src="https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38-1024x360.png" alt="" class="wp-image-3091" srcset="https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38-1024x360.png 1024w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38-300x105.png 300w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38-768x270.png 768w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38-1536x540.png 1536w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38-1140x401.png 1140w, https://biznesmysli.pl/wp-content/uploads/2020/04/Screen-Shot-2020-04-13-at-09.51.38.png 1662w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"> Grafika pochodzi z publikacji: &#8222;<a rel="noreferrer noopener" href="https://arxiv.org/pdf/1906.06818.pdf" target="_blank">Stacked Capsule Autoencoders</a> &#8222;, której współautorem jest Adam Kosiorek.  </figcaption></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Zostawiłem sobie na koniec jeszcze dwa pytania praktyczne, które myślę, że będą bardzo przydatne dla osób, które po pierwsze &#8211; pracują z uczeniem maszynowym, eksperymentują, a po drugie &#8211; zamierzają zbudować wokół tego swoją karierę. </strong><br /><br /></p>



<p><strong>Pierwsze pytanie dotyczy eksperymentów w uczeniu maszynowym, bo tego robisz sporo i zresztą jak wspomniałeś w poście na swoim blogu: z czasem jak się robi takie eksperymenty, to człowiek zaczyna się gubić, bo jest dużo wymiarów zmienności. Tutaj z jednej strony są różne dane, parametry, modele i w tym wszystkim można bardzo łatwo się pogubić.</strong><br /><br /><strong> </strong></p>



<p><strong>Są pewne biblioteki, które próbują ten problem rozwiązać, ale też zacząłeś implementować swoją własną o nazwie <em><a rel="noreferrer noopener" label=" (otwiera się na nowej zakładce)" href="http://akosiorek.github.io/ml/2018/11/28/forge.html" target="_blank" class="broken_link">Forge</a>. </em>Pojawiła się ona jakiś czas temu, ale sprawdzałem, że ostatni update był chyba 2 miesiące temu. Dlaczego w ogóle się zdecydowałeś napisać swoją bibliotekę? Co ona robi lepiej? Czy zamierzasz ją rozwijać dalej? Czy używasz jej we własnych projektach? Komu może być przydatna?</strong><br /><br /><br /></p>



<p>Eksperymenty w uczeniu maszynowym dosyć często przysparzają trudności:</p>



<ul>
<li>związanych z zapisywaniem rezultatów generowanych przez eksperymenty,</li>



<li>zapisywaniem parametrów użytych do przeprowadzenia tych eksperymentów,</li>



<li>zapisywaniem różnych pośrednich rezultatów z tych eksperymentów,</li>



<li>zapisywaniem dokładnego stanu kodu, który został użyty do puszczania tych eksperymentów.<br /><br /></li>
</ul>



<p>To wszystko powoduje, że czasami po tygodniu, czasami po miesiącu regularnego puszczania eksperymentów w nowym projekcie zostajemy ze stosem plików, który jest bardzo ciężki do obsługi, do jakiekolwiek interpretacji i bardzo ciężko się połapać, co jest gdzie oraz jak odtworzyć jakieś rezultaty. </p>



<p>W związku z tym, od kiedy zacząłem swój doktorat, zacząłem budować narzędzia, które pozwalają mi te wszystkie procesy ułatwić, uprzyjemnić. Są to narzędzia, które zacząłem używać ponownie w kolejnych projektach. Natomiast zazwyczaj to używanie ponowne sprowadzało się do tego, że kopiowałem część kodu z poprzedniego projektu do następnego. Niestety nie jest to skalowalne i z każdym projektem tych narzędzi było coraz więcej. </p>



<p>Cały proces zajmował coraz więcej czasu. Powodował, że miałem kilka różnych wersji tych narzędzi itd. W pewnym momencie postanowiłem napisać małą biblioteczkę, nazwałem ją <em>Forge, </em>która zawiera te wszystkie narzędzia.&nbsp;</p>



<p>Niestety nie ma na rynku narzędzia, które byłoby na tyle lekkie, na ile chciałem, a jednocześnie żeby było na tyle elastyczne i pozwalało użytkownikowi zrobić to, co tak naprawdę chce. </p>



<p>Tak powstał <em><a href="https://github.com/akosiorek/forge">Forge</a>.</em> Działa z różnymi frameworkami. <em>Forge </em>pozwala zapisać rezultaty, wszystkie zmiany w kodzie, parametry użyte do przeprowadzania danego eksperymentu. Gdy już mamy wytrenowany model, <em>Forge </em>pozwala w bardzo łatwy i przyjemny sposób uruchomić taki model, żeby sprawdzić, jak się zachowuje.<br /></p>



<p><strong>A komu polecasz? Jest to narzędzie dla osób, które zajmują się podobnymi rzeczami, które Ty robisz, czyli badaniami?</strong><br /></p>



<p>Tak, to jest głównie do badań. Wydaje mi się, że tego typu biblioteka w zasadzie nie ma zastosowania w produkcji.<br /><br /><br /></p>



<p><strong>Ciekawy jestem, takiego łańcucha wydarzeń. Najpierw była publikacja AIR stworzona z naukowcami z DeepMind. Zainteresowałeś się tą publikacją, zbadałeś, zaimplementowałeś ten kod, który był w niej pisany. Później pojawił się SQAIR, gdzie ta publikacja była całkiem udana i pojawiła się na konferencji NIPS (czyli już wyżej się nie da “skoczyć”). </strong><br /><br /></p>



<p><strong>Teraz pracujesz w DeepMind i tutaj nasuwają się pewne pytania. Czy ten łańcuch, o którym teraz powiedziałem, ma ciąg wydarzeń przyczynowo-skutkowy? Czyli jedno zdarzenie wpłynęło na drugie? Jeżeli tak, czy to był przypadek losowy, czy to jest jakiś plan, który sobie wymyśliłeś i tak budujesz swoją karierę? </strong><br /><br /></p>



<p><strong>Dlaczego o to pytam? Teraz pewnie też nas czytają młodsze osoby, które są przed wyborami życiowymi typu, czy zrobić doktorat, w jaki sposób się dostać do DeepMind. Być może to będzie podpowiedź dla nich. Jak to było u Ciebie?</strong><br /><br /></p>



<p>Nie ukrywam, że ja DeepMindem zainteresowałem się przynajmniej dwa lata wcześniej, zanim zacząłem swój doktorat w 2016 r. Wydaje mi się, że pierwsze publikacje DeepMind zacząłem czytać w 2013 r. W zasadzie od samego początku moim marzeniem było, żeby dostać się do DeepMind. Głównie dlatego, że publikacje, które DeepMind wtedy wypuszczał, były bardzo bliskie moim zainteresowaniom. <br /><br /></p>



<p>Gdy pojawił się AIR, był on również bardzo bliski moim zainteresowaniom i dlatego chciałem nad nim pracować. Natomiast nie wyobrażałem sobie, że praca nad tym przybliży mnie do DeepMind w jakiś sposób. Jak się okazało, bezpośrednią konsekwencją tego, że zaimplementowałem i wypuściłem tę implementację na moim GitHubie było to, że autor tej publikacji zauważył ją i polecił mnie wewnętrznie na staż. <br /><br /></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Sequential Attend, Infer, Repeat: Generative Modelling of Moving Objects" width="960" height="540" src="https://www.youtube.com/embed/-IUNQgSLE0c?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p><br />Dzięki temu, po pierwszym roku mojego doktoratu dostałem się na staż do DeepMind. Owocem stażu była oferta powrotu jako pełnoetatowy Research Scientist. Tak, ciąg przyczynowo-skutkowy jest tutaj bardzo wyraźny.&nbsp;<br /><br /></p>



<p>Nie wiem, czy w tej chwili implementacja publikacji DeepMind jest dobrą drogą dostania pracy w tej firmie. DeepMind się bardzo rozrósł i nie zatrudnia aż tyle osób, ile zatrudniał wcześniej, w związku z czym dostanie się może być trudniejsze. <br /><br /></p>



<p>Natomiast jeżeli ktoś jest zainteresowany publikacjami, bardzo polecam implementację publikacji naukowych od zera, bo uważam, że jest to jeden z najlepszych sposobów uczenia się i zdobywania doświadczenia w tym, jak tego typu projekty tworzyć, jak implementować modele uczenia maszynowego, co jest w nich tak naprawdę ważne. Tylko w ten sposób możesz zobaczyć, jak trudne to czasami może być.<br /><br /><br /></p>



<p><strong>A także jak często nie da się powtórzyć tego, co jest napisane w publikacji. Zresztą Andrew Ng zawsze mówi, że jak chcesz się rozwinąć, to bierz pierwszą lepszą publikację i spróbuj to powtórzyć. Często niestety jest tak, że to nie jest takie łatwe. Wynika to z różnych aspektów. Z jednej strony osobie, która próbuje to powtórzyć, brakuje umiejętności albo to, co jest w publikacji, nie zawsze jest powtarzalne, bo wynik jest w pewien sposób nakręcony.&nbsp;</strong><br /></p>



<p>Z tym, że jest nakręcony, w większości przypadków polega na tym, że autor publikacji uzyskał jakiś wynik przypadkowo. Część z tych modeli działa nieco losowo i niektóre wyniki są po prostu wyższe od innych. Nie przypisywał bym temu chęci oszukiwania, natomiast to też się na pewno zdarza.&nbsp;<br /><br /><br /></p>



<p><strong>Dobrze, że to podkreśliłeś. Tutaj miałem na myśli to, że często problemem jest oszacowanie na ile osiągnięty wynik nie jest przypadkowy. To jest jedno z wyzwań, z którym się mierzymy w uczeniu maszynowym.</strong><br /><br /></p>



<p><strong>Bardzo dziękuję Adamie, że znalazłeś czas, żeby podzielić się swoim doświadczeniem i opowiedzieć o tym, czym się zajmujesz. Życzę Ci, żeby udało Ci się zrozumieć, czym jest inteligencja i ją zaimplementować.</strong><br /><br /></p>



<p>Dziękuję bardzo Vladimir. Trzymaj się w tych dziwnych czasach.<br /><br /><br /></p>



<p></p>



<p><strong>Jeżeli chcesz coś osiągnąć, to naprawdę warto eksperymentować. Adam mówiąc o swojej drodze do DeepMind zaznaczył, że chciał tam się dostać, ale nie do końca wiedział którą ścieżką. Eksperymentował i próbował znaleźć otwarte drzwi, żeby ktoś go zauważył i zaprosił do środka.</strong><br /></p>



<p><strong> Nie zawsze da się ten proces zaplanować w 100%, zwykle w ogóle nie da się go zaplanować. Z drugiej strony, kiedy zaczynasz działać, eksperymentować, to nagle zauważasz, że któreś podejście zaczyna funkcjonować i świat naprawdę potrafi zaskoczyć tym, jak zareaguje na nasze działania.&nbsp;</strong><br /></p>



<p><strong>Życzę Ci dużo zdrowia przede wszystkim, ale również eksperymentuj, próbuj nowych rzeczy po to, żeby znaleźć to, co naprawdę potrafi Cię pozytywnie zaskoczyć.&nbsp;</strong></p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>Artykuł <a href="https://biznesmysli.pl/uczenie-nienadzorowane-oczami-naukowca-z-deepmind/">Uczenie nienadzorowane oczami naukowca z DeepMind</a> pochodzi z serwisu <a href="https://biznesmysli.pl">Biznes Myśli</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://biznesmysli.pl/uczenie-nienadzorowane-oczami-naukowca-z-deepmind/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
