wątku nie wywaliłem ja, ale mogę Ci powiedzieć dlaczego wyleciał: temat jest cokolwiek nic nie mówiący. popraw go.
co do samego posta: najpierw zapoznaj się z pojęciem neuronu i sieci neuronowej. jak już będziesz mniej-więcej wiedział o co chodzi, to robisz tak:
wejścia do sieci neuronowej - 6x6, czyli 36. sieć jest dwuwarstwowa, kilka-kilkanaście neuronów (najlepiej tyle, ile pikseli ma literka A) w pierwszej warstwie z sigmoidalną funkcją aktywacji, jeden w warstwie wyjściowej z liniową funkcją aktywacji.
sieć taką uczysz. nauka (w wersji z nauczycielem) polega na podawaniu pewnych danych (wartości wejść neuronów pierwszej warstwy) i poprawnej odpowiedzi, i zmienianiu wag wejść neuronów w taki sposób, żeby znaleźć minimum błędu (różnica pomiędzy wartością oczekiwaną od sieci - czyli poprawną - a wartością która jest zwracana przez sieć). Pokazujesz sieci kilkaset (lub więcej) obrazków, przy czym część z nich zawiera różne litery A (przesunięte, przekręcone), i dla tych obrazków wymagasz, aby sieć zwróciła np. wartość 1, a dla pozostałych 0. Oczywiście sieć nigdy nie zwraca idealnego wyniku, więc zakładasz, że jeśli sieć zwróciła > 0,5 to jest to A. Koniec filozofii.
W praktyce w zasadzie jedyny problem to efektywne znajdowanie odpowiednich wartości wag w funkcji błędu sieci (chodzi o to, żeby znaleźć taką wagę neuronu, dla którego błąd wyniesie jak najmniej). Problemem jest to, że bardzo trudno jest znaleźć położenie globalnego minimum funkcji (tu funkcji błędu). Istnieje do tego kilka algorytmów (niekoniecznie bezpośrednio szukających minimum), np.: wstecznej propagacji gradientu (GD), gradientu sprzężonego (CGB, CGF), quasi-Newtona (BFGS), Levenberga-Marquardta (LM) itp.
Proces "dostrajania" wag powtarza się wiele razy dla wszystkich neuronów i różnych obrazków, aż w końcu wagi przestają się zmieniać, lub osiąga się żądany poziom błędu (błednych klasyfikacji lub błędu aproksymacji). Nie można przesadzić z długościa nauki, bo sieć zamiast uczyć się i generalizować po prostu zapamięta dane, i dla nieznanych będzie robić głupoty, nie można też jej uczyć zbyt krótko, bo co prawda będzie dobrze generalizować (radzić sobie z nieznanymi danymi), ale i tak będzie się często mylić. Trzeba znaleźć kompromis, istnieją pewne wskaźniki pozwalające tego dokonać, ale trochę za dużo pisania by było.
Swojego czasu usiłowałem zaimplementować wielowarstwową sieć neuronową w Delphi, ale poległem na szukaniu globalnego minimum. Muszę powiedzieć, że dużo szukałem w necie kodów źródłowych sieci neuronowych napisanych w Delphi, i nie znalazłem nic interesujacego, więc masz lekki problem. Poza tym dopóki nie załapiesz jak działa sieć, nie masz szans jej zaimplementować. Do nauki polecam funkcje zaimplementowane w Matlabie (konkretnie Neural Network Toolbox).
Acha - pewnie będziesz mieć dalsze pytania. Nie odpowiem na nie, jeśli będą to pytania o ewidentne podstawy.