Gboard – jak działa jedna z najlepszych klawiatur na Androida?
Coraz więcej czasu spędzamy korzystając z urządzeń mobilnych i coraz więcej czasu marnujemy z powodu niedoskonałości ich klawiatur. Okazuje się bowiem, że przeciętny użytkownik pisze na klawiaturze mobilnej średnio o 35% wolniej niż na klawiaturze fizycznej. Chcąc zaradzić temu problemowi inżynierowie Google'a ciągle ulepszają Gboard, wirtualną klawiaturę dla Androida. Ich celem jest opracowanie inteligentnego mechanizmu, który pozwoli na szybsze pisanie, będzie udzielał bardziej trafnych podpowiedzi i korygował błędy, a wszystko to w dowolnym języku.
25.05.2017 10:53
W realizacji tego zamierzenia bardzo pomocne jest spostrzeżenie, że sposób, w jaki wirtualna klawiatura przekłada dotknięcia palców na tekst jest podobny do sposobu, w jaki systemy rozpoznawania mowy przekładają dźwięki na tekst. Stąd też pomysł na wykorzystanie doświadczeń z rozwoju mechanizmów do rozpoznawania mowy.
Eksperci z Google'a najpierw stworzyli rozwinięte modele przestrzenne mapujące sekwencje, w jakich użytkownicy dotykają klawiatury. Następnie, bazując na skończonym przetworniku stanu (FST), zbudowali silnik dekodujący, który – na podstawie już naciśniętych klawiszy – pozwolił na określenie najbardziej prawdopodobnego wyrazu, jaki chcemy wpisać. Z doświadczeń z mechanizmami rozpoznawania mowy wynikało bowiem, że FST zapewnia dużą elastyczność, wymaganą przy tego typu systemach.
Każdy, kto pisał na wirtualnej klawiaturze wie, że błędy pojawiają się na niej najczęściej dlatego, że nasze palce są zbyt grube i próbując dotknąć konkretnego punktu trafiamy w inny, który powoduje wyświetlenie się innej litery niż zamierzona. Korekcji tego typu błędów ma służyć właśnie wspomniany już model przestrzenny, który szybko je wyłapuje błędy na poziomie znaków i je poprawia.
Jeszcze do niedawna system korekcji takich błędów bazował na modelach gaussowskich, które oceniały prawdopodobieństwo tego, że chcieliśmy dotknąć innego klawisza niż dotknęliśmy oraz na modelach uwzględniających błędy poznawcze i motoryczne. Modele te są proste, jednak nie pozwalają na zbyt daleko posuniętą optymalizację. Dlatego też w najnowszych badaniach zostały zastąpione wykorzystywanym w sieciach neuronowych modelem LSTM (long short-term memory – długa pamięć krótkotrwała), który ćwiczono za pomocą używanego w systemach akustycznych algorytmu Connectionist Temporal Classification (CTC).
Trening okazał się jednak znacznie trudniejszy, niż przypuszczali specjaliści. Systemy rozpoznawania mowy można ćwiczyć używając w tym celu stworzonych przez ludzi tekstów, zatem maszyna ma tutaj do czynienia i z dźwiękiem i z tekstem. Nie można jednak łatwo przełożyć na reprezentację graficzną milionów możliwych kombinacji punktów, jakie dotykamy pisząc na wirtualnej klawiaturze. Podczas trenowania setek nowych modeli wykorzystano infrastrukturę TensorFlow, dzięki której udało się zoptymalizować różne sygnały generowane przez dotykaną wirtualną klawiaturę. Po ponad roku pracy udało się stworzyć modele, które były około 6-krotnie szybsze i około 10-krotnie mniejsze od swoich pierwotnych wersji. Okazało się również, że występuje w nich o 15% mniej niewłaściwych autopoprawek i 10% mniej błędnie rozpoznanych gestów.
Trening dotyczący rozkładu przestrzennego służy do określenia, co zostało dotknięte czy po czym przeciągnięto palcem. Nie rozwiązuje jednak wszystkich problemów. Istnieją bowiem kwestie leksykalne i gramatyczne, które należy wziąć pod uwagę. Dzięki leksyce wiemy, jakie wyrazy występują w danym języku, a gramatyka probabilistyczna pozwala określić prawdopodobieństwo, z jakim po określonym wyrazie wystąpi inny wyraz. Tutaj przydały się skończone przetworniki stanu (FSM). Od dawna są one jednym z głównych składników Google'owskich systemów rozpoznawania i syntezy mowy. Dzięki probabilistycznym modelom FSM i ich matematycznej optymalizacji możliwe jest wzięcie pod uwagę ograniczeń gramatycznych czy leksykalnych językach i uwzględnienie tych danych podczas sugestii dotyczących pisanego teksu.
Olbrzymią zaletą metod zastosowanych przez Google'a jest fakt, że umożliwiają one łatwą transliterację. Dla wielu języków, które korzystają ze złożonych alfabetów stworzono systemy umożliwiające zapis za pomocą liter alfabetu łacińskiego. Zaimplementowane przez inżynierów Google'a mechanizmy radzą sobie z tym problemem. Nie tylko umożliwiają wykorzystanie znanego nam wszystkim alfabetu i automatycznie przekładają pisane za jego pomocą wyrazy na alfabet np. chiński czy hindi, ale również korygują błędy, przewidują kolejne litery i wyrazy.
Badacze Google'a nie poszli jednak na łatwiznę. O ile np. język mandaryński ma swoją oficjalną transkrypcję na alfabet łaciński, to z wieloma innymi językami nie jest już tak łatwo. Inżynierowie wzięli na warsztat 22 języki indoaryjskie i w ciągu pół roku dostosowali Gboard do ich użycia. Trzeba przyznać, że nie mieli łatwego zadania, gdyż niektóre z tych języków posługują się wieloma alfabetami. Na przykład język bodo zwykle jest zapisywany w dewangari, ale używa się też alfabetu bengalskiego. W sumie dla wspomnianych 22 języków konieczne było stworzenie 57 metod ich wprowadzania.
Jednak ciężka praca się opłaciła. Nowe mechanizmy spowodowały skrócenie opóźnienia w dekodowaniu o 50%, o ponad 10% zmniejszyły odsetek wyrazów, które użytkownicy muszą ręcznie skorygować i pozwoliły na wprowadzenie wielu nowych funkcji dla użytkowników 22 języków z Indii.