I. Kropki kwantowe — kolor z uwięzienia
🔵Kropki kwantowe — równanie Brusa i emisja strojona rozmiarem
Przeciągnij suwak promienia od 1 do 10 nm i obserwuj, jak świecenie kropki zmienia się z niebieskiego na czerwony w czasie rzeczywistym. Pokazuje diagram pasm przewodnictwa/walencyjnego, próg promienia Bohra i gotowe presety materiałów.
Kawałek objętościowego selenku kadmu jest pomarańczowy. Zmielony do kryształu o rozmiarze 3 nm zaczyna świecić niebiesko-zielono. Zmielony do 6 nm — czerwono. Kolor nie ma nic wspólnego ze składem chemicznym — kryształ jest tym samym materiałem w obu przypadkach. Zmienia się stopień uwięzienia kwantowego.
W objętościowym półprzewodniku elektrony i dziury istnieją w ciągłych pasmach energetycznych, a przerwa między tymi pasmami — przerwa energetyczna — jest stałą właściwością struktury krystalicznej. Ale gdy kryształ kurczy się poniżej charakterystycznej długości zwanej promieniem Bohra ekscytonu, elektron i dziura zostają wciśnięte w tak małe pudełko, że kwantowanie ich energii kinetycznej — jak w modelu cząstki w pudełku — staje się znaczące. Efektywna przerwa energetyczna się poszerza. Szersza przerwa oznacza fotony o wyższej energii emitowane przy rekombinacji ekscytonu — krótszą długość fali, bardziej niebieskie światło.
Równanie Brusa ujmuje tę zależność od rozmiaru w dwuskładnikowej poprawce nałożonej na objętościową przerwę energetyczną. Pierwszy składnik to energia uwięzienia kwantowego, traktująca elektron i dziurę jako niezależne cząstki w sferycznej studni potencjału, ważone ich masami efektywnymi. Drugi składnik to ujemna poprawka kulombowska — elektron i dziura przyciągają się nawzajem, nieznacznie obniżając energię, przy czym efekt ten skaluje się odwrotnie proporcjonalnie do promienia, ponieważ uwięzienie zbliża je do siebie.
E_gap(r) = E_bulk + h^2/(8r^2) * (1/m_e* + 1/m_h*) - 1.8 * e^2/(4*pi*eps*eps_0*r)
E_bulk : objętościowa przerwa energetyczna (np. 1.74 eV dla CdSe)
r : promień nanokryształu (m)
m_e* : efektywna masa elektronu (ułamek masy swobodnego elektronu)
m_h* : efektywna masa dziury
eps : względna przenikalność elektryczna półprzewodnika (~10 dla CdSe)
Pierwszy składnik : energia uwięzienia (poszerza przerwę)
Drugi składnik : poprawka kulombowska (zwęża przerwę)
lambda_emit = h*c / E_gap(r) (długość fali emisji)
Symulacja obejmuje presety CdSe, ZnS, InP i PbS, każdy z własną objętościową przerwą energetyczną, masami efektywnymi i promieniem Bohra. Wyświetlany kolor świecenia jest odwzorowany z długości fali emisji na przybliżoną wartość sRGB przy użyciu funkcji dopasowania barw CIE, więc zmiana koloru, którą widzisz, jest fizycznie uzasadniona, a nie tylko estetyczna. Kropki kwantowe są dziś komercyjnie wykorzystywane w wyświetlaczach QLED, sondach obrazowania medycznego i koncentratorach słonecznych, właśnie dlatego, że pik emisji można umieścić w dowolnym miejscu widma widzialnego i bliskiej podczerwieni, dobierając rozmiar cząstki.
Promień Bohra ekscytonu a_B = eps * (m_e/mu) * a_0, gdzie mu jest masą zredukowaną pary elektron-dziura, a a_0 to promień Bohra wodoru (0,053 nm). Dla CdSe a_B ≈ 5,6 nm — poniżej tego promienia efekty uwięzienia stają się znaczące.
II. Samoorganizacja molekularna — porządek za darmo
🧬Samoorganizacja molekularna — CMC, parametr upakowania i diagram fazowy
Reguluj geometrię molekuły suwakiem parametru upakowania i obserwuj, jak system przełącza się między micelami, pęcherzykami, cylindrami i dwuwarstwami. Pokazuje próg CMC oraz rozkład wielkości agregatów.
Życie działa dzięki samoorganizacji. Błony komórkowe, rybosomy, kapsydy wirusowe — żadne z nich nie zostało zszyte przez maszynę. Powstają samorzutnie, ponieważ ich składniki są zaprojektowane (przez ewolucję) tak, aby jako izolowane molekuły były termodynamicznie niekorzystne, a jako zorganizowane agregaty — termodynamicznie korzystne.
Kluczowymi graczami są amfifile: molekuły z głową kochającą wodę (hydrofilową) i ogonem nienawidzącym wody (hydrofobowym). W wodzie stają przed wyborem: wystawić ogony na kontakt z wodą i zapłacić dużą cenę entropową/entalpową, albo ukryć ogony, agregując się. Poniżej progowego stężenia zwanego krytycznym stężeniem micelizacji (CMC) molekuł jest za mało, by utworzyć stabilne agregaty, więc istnieją jako monomery i adsorbują się na granicy powietrze-woda, obniżając napięcie powierzchniowe. Powyżej CMC nowe molekuły preferencyjnie dołączają do agregatów zamiast zwiększać stężenie monomerów — dlatego napięcie powierzchniowe roztworu surfaktantu osiąga plateau powyżej CMC.
To, jaka geometria agregatu powstaje, zależy od geometrii molekuły, ujętej w bezwymiarowym parametrze upakowania p:
p = v / (a_0 * l_c)
v : objętość ogona (ogonów) hydrofobowego
a_0 : optymalna powierzchnia grupy głowowej (ustalana przez elektrostatykę i hydratację)
l_c : krytyczna długość łańcucha (mniej więcej 0,8 * w pełni rozciągniętego łańcucha)
p < 1/3 : micele sferyczne
1/3 < p < 1/2 : micele cylindryczne (robakowate)
1/2 < p < 1 : pęcherzyki / elastyczne dwuwarstwy
p ~= 1 : płaskie dwuwarstwy (błony komórkowe, dwuwarstwy lipidowe)
p > 1 : micele odwrócone (woda w oleju)
Jednołańcuchowe detergenty z dużymi głowami mieszczą się w okolicach p ≈ 0,3 i tworzą micele sferyczne — te same, które czyszczą naczynia, enkapsulując kropelki tłuszczu. Fosfolipidy z dwoma łańcuchami mają p ≈ 1 i tworzą płaskie dwuwarstwy będące podstawą każdej błony komórkowej na Ziemi. Symulacja pozwala przesuwać p od 0,2 do 1,2 i obserwować, jak morfologia agregatu w komórce zgrubnie ziarnistej dynamiki molekularnej przełącza się między wszystkimi pięcioma reżimami.
Podstawową siłą napędową jest efekt hydrofobowy — nie bezpośrednia siła przyciągania między ogonami, lecz wzrost entropii otaczających cząsteczek wody, gdy ogony przestają zaburzać ich sieć wiązań wodorowych. Dlatego samoorganizacja jest wrażliwa na temperaturę: ogrzewanie osłabia hydrofobową siłę napędową i może rozpuścić micele powyżej punktu zmętnienia.
III. Drzewo decyzyjne (CART) — podział według nieczystości
🌳Drzewo decyzyjne — CART, nieczystość Giniego i kontrola głębokości
Trenuj na 2D-zbiorze danych, kontroluj maksymalną głębokość i minimalny rozmiar liścia. Wizualizuje kawałkami zdefiniowaną granicę decyzyjną, diagram drzewa i wykres słupkowy ważności cech.
Drzewo decyzyjne odpowiada na pytanie klasyfikacyjne, zadając sekwencję pytań tak/nie dotyczących cech wejściowych. Każdy węzeł wewnętrzny testuje jedną cechę względem progu; dwie gałęzie dzielą dane treningowe; rekurencja trwa, aż liście staną się wystarczająco czyste lub drzewo osiągnie wystarczającą głębokość.
Algorytm CART (Classification And Regression Trees) wybiera każdy podział, minimalizując nieczystość Giniego — miarę tego, jak bardzo pomieszane są etykiety klas w węźle. Węzeł idealnie czysty (wszystko jednej klasy) ma Gini = 0. Węzeł maksymalnie nieczysty (równe proporcje klas) ma Gini = 1 − 1/K dla K klas. W każdym węźle CART sprawdza każdą cechę i każdą wartość progową w danych treningowych, po czym wybiera parę (cecha, próg), która daje największą ważoną redukcję nieczystości Giniego w obu węzłach potomnych.
Gini(węzeł) = 1 - sum_k p_k^2
p_k : ułamek próbek klasy k w tym węźle
Zysk z podziału = Gini(rodzic) - (n_L/n)*Gini(lewy) - (n_R/n)*Gini(prawy)
n_L, n_R : liczba próbek w lewym i prawym dziecku
n : łączna liczba próbek w węźle rodzica
Zysk informacji (tryb entropii):
H(węzeł) = - sum_k p_k * log2(p_k)
Zysk = H(rodzic) - (n_L/n)*H(lewy) - (n_R/n)*H(prawy)
Predykcja liścia: klasa dominująca wśród próbek treningowych w tym liściu
Przycinanie: zatrzymaj, jeśli depth >= max_depth lub n < min_samples_leaf
Symulacja żywo ilustruje problem przeuczenia. Drzewo wyhodowane do maksymalnej głębokości na zaszumionym zbiorze danych wycina maleńkie wysepki wokół każdego wartościowego odstającego punktu — postrzępioną, nierówną granicę decyzyjną, która zawiedzie na nowych danych. Ograniczenie głębokości do 3 lub 4 daje grubszą, ale znacznie lepiej generalizującą się granicę. Towarzysząca symulacja lasu losowego (z devlogu #95) pokazuje, jak uśrednienie 50 takich drzew wygładza tę wariancję.
CART jest też wykorzystywane do regresji (minimalizując błąd średniokwadratowy zamiast Giniego) i stanowi bazowy algorytm uczący, na którym opierają się zespoły drzew wzmacnianych gradientowo, takie jak XGBoost i LightGBM. Wynik ważności cech drzewa CART (mierzony jako łączna redukcja nieczystości przypisana każdej cesze) daje intuicyjny, choć obciążony, ranking tego, które dane wejściowe mają największe znaczenie.
IV. Uczenie Q — nauka przez działanie
🤖Agent uczenia Q — równanie Bellmana i świat siatki
Obserwuj, jak mapa cieplna tabeli Q aktualizuje się w czasie rzeczywistym, gdy agent eksploruje siatkę ze ścianami, nagrodami i karami. Reguluj współczynnik uczenia, współczynnik dyskontowania i zanik epsilon.
Uczenie ze wzmocnieniem to nauka o uczeniu się na podstawie konsekwencji. W przeciwieństwie do uczenia nadzorowanego, które potrzebuje oznaczonych danych treningowych, agent RL uczy się, próbując działań, otrzymując nagrody lub kary i odpowiednio aktualizując swoje zachowanie. Uczenie Q to jeden z najstarszych i najbardziej eleganckich algorytmów RL — jego zbieżność do optymalnej polityki w środowiskach tabelarycznych jest dowiedziona, bez potrzeby posiadania modelu działania środowiska.
Agent utrzymuje tabelę Q(s, a) szacującą oczekiwaną łączną zdyskontowaną nagrodę za wykonanie działania a w stanie s, a następnie postępowanie optymalnie. To jest funkcja wartości działania Q*. Po każdym przejściu (s, a) → (r, s′) równanie Bellmana daje wartość docelową: natychmiastową nagrodę r plus najlepszą możliwą przyszłą wartość z s′, zdyskontowaną przez γ. Wartość Q jest aktualizowana w kierunku tego celu małym krokiem α.
Cel Bellmana: y = r + gamma * max_{a'} Q(s', a')
Aktualizacja TD: Q(s, a) += alpha * [y - Q(s, a)]
alpha : współczynnik uczenia (np. 0,1 -- mniejszy = wolniejszy, ale stabilniejszy)
gamma : współczynnik dyskontowania (0,9 = ceni nagrody odległe o 10 kroków)
r : sygnał nagrody (+1 za cel, -1 za pułapkę, 0 w innym przypadku)
Polityka: epsilon-zachłanna
z prawdopodobieństwem epsilon : wykonaj losowe działanie (eksploracja)
z prawdopodobieństwem 1-epsilon : wykonaj argmax_a Q(s, a) (eksploatacja)
epsilon zanika co epizod: eps *= decay_rate
Symulacja wizualizuje tabelę Q jako mapę cieplną: każda komórka pokazuje maksymalną wartość Q spośród wszystkich działań, którą można interpretować jako „jak dobrze jest znajdować się w tym stanie?”. Na wczesnym etapie treningu mapa jest jednolita. W miarę gromadzenia doświadczenia przez agenta wartości propagują się wstecz od nagrody poprzez rekurencję Bellmana — proces zwany przypisywaniem zasługi różnicą czasową — a mapa cieplna rozwija gradient wskazujący cel.
Polityka ε-zachłanna rozwiązuje dylemat eksploracja-eksploatacja w najprostszy możliwy sposób: wstrzykuje losowość, aby eksplorować nieznane stany, ale przez większość czasu wykorzystuje zgromadzoną wiedzę. Ustawienie ε zbyt wysoko sprawia, że agent nigdy się nie zbiega; zbyt nisko — utyka w lokalnym optimum. Symulacja pozwala bezpośrednio zaobserwować to napięcie, zamrażając ε na różnych wartościach i sprawdzając, czy agent znajduje optymalną ścieżkę.
Uczenie Q jest algorytmem off-policy: aktualizuje się w kierunku zachłannego działania max_a' Q(s', a') niezależnie od tego, jakie działanie faktycznie wybrała polityka zachowania. To właśnie umożliwia uczenie się z trajektorii eksploracyjnych bez obciążenia — kluczowa przewaga teoretyczna nad metodami on-policy, takimi jak SARSA.