Pytanie jest przestrzenią
Każde pytanie rysuje przestrzeń
Pytanie nie pyta tylko o jedną rzecz. Otwiera przestrzeń możliwych odpowiedzi, a każda kandydująca odpowiedź jest punktem gdzieś w tej przestrzeni.
„Wybierz miejsce na jedzenie” otwiera ogromną przestrzeń: każdy restaurację, kawiarnię, wózek z jedzeniem i kuchnię na Ziemi. „Wybierz wegetariańskie miejsce w zasięgu spaceru, otwarte teraz, poniżej piętnastu dolarów” otwiera miniaturową przestrzeń: może trzy punkty.
Ten sam zamiar, radykalnie inna geometria. Drugie pytanie wykonało realną pracę: zmniejszyło przestrzeń zanim ktokolwiek zaczął przeszukiwać.
Cała lekcja w jednym zdaniu: dobre pytanie to takie, które zawęża przestrzeń odpowiedzi do regionu wartego przeszukania. Niejasne pytanie zostawia ogromną przestrzeń i wymusza powolne, błądzące szukanie. Precyzyjne pytanie daje Ci małą przestrzeń, którą możesz przeskanować jednym rzutem oka.
Zdefiniujemy to precyzyjnie za pomocą czterech elementów geometrii: podział przestrzeni, cięcie jej ograniczeniami oraz halwowanie jej za pomocą dobrze dobranych pytań tak/nie.
Szerokie versus Wąskie
Rozważmy dwa sposoby poproszenia o pomoc w debugowaniu programu:
- Q1: „Dlaczego mój kod nie działa?”
- Q2: „Dlaczego ta pętla wypisuje 9 elementów, gdy lista ma 10, w Pythonie 3.12?”
Podział Przestrzeni na Regiony
Rozbijanie dużego pytania na regiony
Gdy przestrzeń jest zbyt duża, aby przeszukiwać ją bezpośrednio, partycjonujesz ją: dzielisz na nie nakładające się na siebie regiony, które razem pokrywają całość. Odpowiedzenie na pytanie podzakresowe oznacza wybranie jednego regionu i zignorowanie pozostałych.
Załóżmy, że pytanie brzmi: „Dlaczego przychody spadły w ostatnim kwartale?” Przestrzeń odpowiedzi jest ogromna. Podziel ją: (a) mniej klientów, (b) ci sami klienci wydają mniej, (c) zmiana w cenniku lub fakturowaniu, (d) błąd w danych. Te cztery regiony pokrywają przestrzeń i nie nakładają się na siebie. Każdy z nich to mniejsze pytanie, z którym można się zmierzyć samodzielnie.
Dobra partycja ma dwie właściwości wprost zaczerpnięte z geometrii: regiony pokrywają całą przestrzeń (nic nie jest pomijane) oraz są rozłączne (nic nie jest liczone dwukrotnie). Pominiesz część przestrzeni, a prawdziwa odpowiedź może ukrywać się w tej lukie. Nakładasz regiony na siebie, a marnujesz wysiłek, przeszukując ten sam teren dwukrotnie.
Każde podpytanie zawęża Cię do jednego regionu. Odpowiesz na nie, a odrzucisz wszystko poza tym regionem: to duże, tanie zmniejszenie przestrzeni przeszukiwania.
Czysta partycja
Miasto pyta: „Dlaczego czas reakcji służb ratunkowych się wydłuża?”
Analityk proponuje podzielić to na: (a) wezwania dłużej docierają do załogi, (b) załogi dłużej jadą na miejsce po zadysponowaniu oraz (c) załogi dłużej kończą interwencję i zwalniają się.
Każde wymaganie tnie przestrzeń
Ograniczenia jako półpłaszczyzny
Wyobraź sobie przestrzeń odpowiedzi jako płaską płaszczyznę, w której każdy punkt jest kandydatem na odpowiedź. Ograniczenie to wymaganie, a każde wymaganie rysuje linię na płaszczyźnie i zachowuje tylko jedną stronę. W geometrii ta zachowana strona to półpłaszczyzna.
„Mniej niż piętnaście dolarów” to jedna linia; zachowujemy stronę tańszą. „W zasięgu spaceru” to druga linia; zachowujemy stronę bliższą. „Otwarte teraz” to trzecia. Każde dodane wymaganie to kolejny cięcie.
Odpowiedź spełniająca wszystkie wymagania znajduje się w przecięciu wszystkich zachowanych stron. Przekręcając wystarczająco dużo półpłaszczyzn, otrzymujemy mały obszar ograniczony: uporządkowany region, wewnątrz którego znajduje się jedna prawidłowa odpowiedź.
Dwa tryby awarii
Niedostateczne ograniczenie (za mało cięć): obszar pozostaje nieograniczony. Wyciąga się w nieskończoność, więc nieskończenie wiele niejasnych odpowiedzi „pasuje”. „Daj mi dobry pomysł” jest nieograniczone. Otrzymujesz szum, ponieważ nic nie zostało wykluczone.
Nadmierne ograniczenie (zbyt wiele cięć lub sprzeczne): obszar staje się pusty. Półpłaszczyzny nie mają punktu wspólnego, więc żadna odpowiedź nie pasuje w ogóle. „Liczba, która jest jednocześnie parzysta i nieparzysta” wycina przestrzeń do niczego.
Dobrze postawione pytanie znajduje się między tymi dwoma: wystarczająco dużo ograniczeń, aby ograniczyć obszar, ale nie tak wiele, aby się wzajemnie wykluczały i pobrały go.
Ograniczony, Nieograniczony, Pusty
Menedżer prosi projektanta o „logo”. Później prosi o „logo, które jest jedną literą, w jednym kolorze, działa w rozmiarze 16 pikseli, a jednocześnie używa co najmniej czterech kolorów”.
Najlepszy cięcie dzieli przestrzeń na pół
Wyszukiwanie binarne: Każde tak/nie połowi przestrzeń
Niektóre pytania są typu tak/nie. Geometrycznie pytanie tak/nie rysuje jedną linię i mówi, po której stronie znajduje się odpowiedź: odrzuca cały obszar jednym pociągnięciem.
Najlepsze pytanie tak/nie to takie, które dzieli przestrzeń na dwie równe połowy, ponieważ niezależnie od otrzymanej odpowiedzi, odrzucamy dokładnie połowę tego, co pozostało. Zadawanie pytania „czy to w górnej połowie?” raz za razem powoduje, że przestrzeń zawęża się bardzo szybko geometrycznie.
To jest wyszukiwanie binarne. Zaczynamy od N kandydatów. Po jednym dobrym pytaniu zostaje N/2. Po dwóch, N/4. Po k pytaniach, N / 2^k. Zakończymy, gdy zostanie jeden kandydat, więc potrzebujemy najmniejszego k, dla którego 2^k jest co najmniej równe N.
To najmniejsze k to zaokrąglenie w górę log2(N). Dla tysiąca kandydatów: 2^9 = 512 (za mało) & 2^10 = 1024 (wystarczająco), więc log2(1000) wynosi około 9,97 & potrzebujesz 10 pytań. Miliard kandydatów? log2 miliarda wynosi około 30. Dzielenie na pół jest tak potężne, że przejście od tysiąca do miliarda dodaje tylko około dwadzieścia pytań.
Lekcja z zadawania pytań: ostre pytanie tak/nie jest najbardziej wartościowe, gdy dzieli pozostałą przestrzeń równomiernie. Nierównoważne pytanie, które wyklucza tylko ułamek, marnuje turę.
Gwarancja znalezienia
Grasz w grę zgadywania. Ktoś wybiera liczbę całkowitą od 1 do 1000. Możesz zadawać tylko pytania tak/nie, & grasz optymalnie (każde pytanie dzieli pozostałych kandydatów tak równomiernie, jak to możliwe).
Gdy odpowiedzi są tanie, cięcia są cenne
Pytanie jest teraz pracą
Połączmy te cztery elementy. Pytanie otwiera przestrzeń. Dekompozycja ją partycjonuje. Ograniczenia tną ją do ograniczonego obszaru wykonalności. Dobre pytania typu tak/nie dzielą ją na pół. Każde z tych działań to akt zmniejszania obszaru poszukiwań przed szukaniem odpowiedzi.
Przez większość historii droga była odpowiedź. Płaciło się ekspertowi, przeprowadzało eksperyment, grzebało w archiwum. Dlatego ceniliśmy ludzi, którzy potrafili dostarczać odpowiedzi.
Ta równowaga się odwróciła. Systemy zautomatyzowane generują teraz wiarygodne odpowiedzi tysiącami, niemal za darmo. Gdy odpowiedzi są tanie i obfite, wygenerowanie kolejnej nie jest już osiągnięciem. Tym, co pozostaje rzadkie, jest wiedza o tym, która odpowiedź jest warta posiadania: to umiejętność zadawania pytań, a nie generowania odpowiedzi.
W geometrii: maszyna chętnie poda Ci dowolny punkt w przestrzeni. Wartość, którą dodajesz, polega na narysowaniu ograniczeń, które zawężają przestrzeń do jednego obszaru, w którym musi znajdować się dobra odpowiedź. Jeśli ograniczysz ją zbyt słabo, utoniesz w wiarygodnym szumie (obszar nieograniczony). Jeśli ograniczysz ją zbyt mocno, nie otrzymasz niczego (obszar pusty). Formułowanie cięć, które ograniczają obszar do dokładnie odpowiedniego rozmiaru, to rzadka, ludzka umiejętność.
Zatem dźwignią nie jest „uzyskanie odpowiedzi”. Jest nią „sformułowanie ograniczeń, które sprawiają, że przestrzeń odpowiedzi jest wystarczająco mała, aby każdy punkt w niej był wart posiadania”.
Gdzie przemieściła się wartość
Analityk może teraz wygenerować sto szkiców strategii w kilka minut za niemal zerowy koszt.
Geometria pytań: Podsumowanie
Czego się nauczyłeś
Pytanie nie jest prośbą o jedną odpowiedź. Jest to przestrzeń możliwych odpowiedzi, a sztuka zadawania pytań to sztawa zmniejszania tej przestrzeni:
- Przestrzeń wyszukiwania: każde pytanie otwiera zbiór kandydackich odpowiedzi. Ostre pytanie otwiera mały zbiór; niejasne otwiera ogromny zbiór, po którym musisz błądzić.
- Dekompozycja jako partycjonowanie: podziel dużą przestrzeń na obszary, które pokrywają ją bez nakładania się; każde podpytanie zawęża Cię do jednego obszaru.
- Ograniczenia jako granice: każde wymaganie jest półpłaszczyzną; odpowiedź znajduje się w ich przecięciu. Za mało cięć pozostawia nieograniczony obszar (nieskończenie wiele niejasnych odpowiedzi); sprzeczne cięcia pozostawiają pusty obszar (nic nie pasuje).
- Wężenie przez dzielenie na pół: dobrze dobrane pytanie typu tak/nie dzieli przestrzeń na dwie części. Zlokalizowanie liczby w zakresie od 1 do 1000 wymaga ceil(log2(1000)) = 10 pytań; miliard wymaga jedynie około 30.
A nagroda: gdy systemy automatyczne czynią odpowiedzi tanimi, rzadką umiejętnością nie jest generowanie odpowiedzi, ale formułowanie ograniczeń, które zawężają przestrzeń do jednego regionu warty uwagi. Naucz się wykonywać te cięcia, a zamienisz rozległe, błądzące poszukiwania w krótkie.