Przeszukaj forum
Pokazywanie wyników dla tagów 'AI'.
Znaleziono 10 wyników
-
Jak wykorzystać AI do doboru komponentów elektronicznych?
H1M4W4R1 opublikował temat w Artykuły użytkowników
Pewnie niejednemu z Was zdarzyło się wpaść na pomysł ciekawego urządzenia, ale już na etapie planowania stracić sporą część zapału. Nie dlatego, że projekt był szczególnie trudny, ale przez konieczność znalezienia odpowiednich komponentów. W końcu wybór właściwego mikrokontrolera, czujników, modułów komunikacyjnych i pozostałych elementów potrafi zająć więcej czasu niż samo złożenie urządzenia. Do tego dochodzi jeszcze kwestia dostępności i ceny. Często okazuje się, że jeden komponent jest dostępny w jednym sklepie, drugi w zupełnie innym, a trzeci można zamówić wyłącznie z zagranicy. Ostatecznie człowiek zaczyna dobierać elementy nie tylko pod kątem parametrów, ale również po to, aby osiągnąć próg darmowej dostawy. Na szczęście z pomocą przychodzi sztuczna inteligencja, która może znacząco przyspieszyć poszukiwanie odpowiednich komponentów. Postanowiłem sprawdzić, jak ChatGPT radzi sobie z tym zadaniem w praktyce, wykorzystując dwa rzeczywiste przykłady: budowę przenośnego miernika wibracji oraz dobór elementów elektronicznych do własnej płytki PCB. Banner wygenerowany przez AI Artykuł powstał we współpracy z firmą Botland. Dobór gotowych modułów – budujemy wibrometr Na pierwszy ogień wybrałem stosunkowo prosty projekt, do którego większość komponentów można kupić w formie gotowych modułów. Chodzi o przenośny wibrometr, czyli urządzenie pozwalające mierzyć drgania mechaniczne. Pomysł pojawił się podczas pracy nad urządzeniem wykorzystującym wibracje do przemieszczania i przetrząsania materiałów sypkich. Po rozdrobnieniu materiału w młynku powstają cząstki o różnych rozmiarach, co utrudnia ich równomierne przemieszczanie. Aby dobrać odpowiednie parametry mechanizmu, potrzebowałem możliwości pomiaru częstotliwości oraz intensywności drgań. Co ciekawe, taki miernik nie musiałby ograniczać się do jednego zastosowania. Można go również wykorzystać do badania wibracji silników, wentylatorów, maszyn CNC czy drukarek 3D. Szczególnie interesująca byłaby możliwość obserwowania zmian drgań przy różnych prędkościach pracy urządzenia. Zamiast samodzielnie przeszukiwać katalogi sklepów, postanowiłem poprosić ChatGPT o zaproponowanie odpowiedniego zestawu modułów. Pierwsza propozycja AI ChatGPT całkiem dobrze poradził sobie z doborem najważniejszego elementu, czyli czujnika. Zaproponował moduł Adafruit ISM330DHCX, wyposażony w trójosiowy akcelerometr oraz żyroskop. Przy odpowiednio dobranej częstotliwości próbkowania i oprogramowaniu możliwe jest nie tylko obserwowanie chwilowych przyspieszeń, ale również wyznaczanie dominujących częstotliwości drgań, np. za pomocą szybkiej transformaty Fouriera (FFT). Co ważne, AI nie ograniczyło się do zaproponowania samego czujnika. Na liście zakupowej znalazły się również elementy potrzebne do jego podłączenia, a nawet opcjonalna karta pamięci SD umożliwiająca zapisywanie wyników pomiarów. To właśnie jedna z ciekawszych zalet takiego rozwiązania. Sztuczna inteligencja potrafi zasugerować dodatkowe funkcjonalności, o których niekoniecznie pomyśleliśmy podczas tworzenia początkowej koncepcji. Niestety pierwsza propozycja nie była idealna. Doprecyzowanie wymagań Największy problem dotyczył konstrukcji mechanicznej urządzenia. Zależało mi na tym, aby sam czujnik znajdował się w niewielkiej, lekkiej głowicy pomiarowej, natomiast ekran i elektronika sterująca były umieszczone w osobnym urządzeniu połączonym przewodem. Dlaczego to takie ważne? Gdybyśmy zamocowali do badanego elementu cały miernik, jego masa mogłaby wpłynąć na charakterystykę drgań. Szczególnie w przypadku lekkich elementów mechanicznych dodatkowe obciążenie może wyraźnie zmienić wynik pomiaru. Znacznie lepszym rozwiązaniem jest więc zastosowanie niewielkiego modułu pomiarowego z magnesem neodymowym lub odpowiednim uchwytem zaciskowym. Dodatkowo zależało mi na stosunkowo dużym, czytelnym wyświetlaczu, dlatego zaproponowałem wykorzystanie M5Stack Tab5 jako głównej jednostki urządzenia. Po przedstawieniu tych uwag ChatGPT zmodyfikował swoją propozycję, uwzględniając nową konstrukcję. Zaproponował połączenie czujnika z jednostką główną za pomocą przewodów Grove oraz Qwiic. Schemat miernika wibracji zaprojektowanego przez GPT Tutaj pojawiło się jednak niewielkie niedopatrzenie. Na liście zakupowej zabrakło przelotki Grove-Grove, potrzebnej do połączenia przedłużacza z przewodem prowadzącym do czujnika. Co ciekawe, odpowiednia złączka została wspomniana w dalszej części odpowiedzi, ale nie trafiła do zestawienia komponentów. Ostatecznie proponowana konstrukcja składała się z M5Stack Tab5, modułu Adafruit ISM330DHCX, przewodu Grove o długości około 50 cm, odpowiednich adapterów i krótkiego przewodu Grove-Qwiic. Opcjonalnie można również zastosować akumulator i kartę pamięci SD. Warto przy tym zaznaczyć, że takie rozwiązanie wymaga jeszcze sprawdzenia jakości komunikacji I2C na zastosowanych przewodach. Sama zgodność złączy nie gwarantuje niezawodnej transmisji, szczególnie przy większych długościach przewodów i podwyższonych częstotliwościach magistrali. Wniosek? W przypadku gotowych modułów ChatGPT spisał się bardzo dobrze. Wystarczyło kilka dodatkowych informacji, aby otrzymać propozycję konstrukcji zgodną z moimi oczekiwaniami. Co ważne, nie musiałem samodzielnie przeglądać dziesiątek produktów i porównywać sposobów ich podłączenia. Całą rozmowę dotyczącą tego projektu można zobaczyć tutaj: Dobór modułów do wibrometru – rozmowa z ChatGPT Dobór komponentów do własnej płytki PCB Skoro sztuczna inteligencja tak dobrze poradziła sobie z gotowymi modułami, postanowiłem nieco podnieść poprzeczkę. Tym razem zadaniem był dobór pojedynczych komponentów elektronicznych, które można byłoby wykorzystać podczas projektowania własnej płytki PCB. W teorii zasada działania jest taka sama. Podajemy wymagania, a ChatGPT wyszukuje odpowiednie komponenty i porównuje ich parametry. W praktyce okazuje się jednak, że jest to znacznie trudniejsze zadanie. O ile liczba popularnych modułów rozwojowych jest stosunkowo niewielka, o tyle samych układów scalonych, czujników i innych komponentów są tysiące. Dodatkowo wiele z nich występuje w licznych wariantach różniących się zakresem pomiarowym, obudową, interfejsem czy sposobem zasilania. Projekt szybkiego czujnika ciśnienia Jako przykład wykorzystałem urządzenie podobne do jednego z moich wcześniejszych projektów. Jego zadaniem jest pomiar ciśnienia w przewodzie pneumatycznym, a konkretnie wykrywanie zmian ciśnienia występujących z częstotliwością około 11–14 Hz. Początkowo nie podałem wszystkich szczegółów konstrukcyjnych, aby sprawdzić, jak ChatGPT poradzi sobie z samodzielnym doborem podzespołów. Wymagania były dość specyficzne. Typowe ciśnienie robocze wynosi około 30–40 kPa, ale chwilowo może wzrosnąć nawet do 80 kPa. Zdecydowałem więc, że interesujący mnie zakres pomiarowy powinien obejmować 0–100 kPa. Zależało mi również na możliwie szybkiej odpowiedzi czujnika, ponieważ urządzenie miało wykrywać stosunkowo krótkie zmiany ciśnienia. Sama częstotliwość 11–14 Hz nie oznacza jeszcze, że wystarczy czujnik o paśmie 14 Hz. Jeżeli chcemy analizować kształt impulsów, a nie tylko ich częstotliwość, potrzebujemy odpowiednio większego pasma pomiarowego. Kolejnym wymaganiem była dobra rozdzielczość przetwarzania sygnału. Wbudowany przetwornik ADC w ESP32 nie jest szczególnie dobrym rozwiązaniem do precyzyjnych pomiarów analogowych, dlatego rozważałem wykorzystanie zewnętrznego ADC oraz odpowiedniego toru wzmacniającego. Teoretycznie można byłoby samodzielnie zaprojektować wzmacniacz, podobnie jak w jednej z wcześniejszych konstrukcji wykorzystujących wzmacniacz operacyjny i potencjometr cyfrowy. Niestety takie podejście komplikuje projekt, a ceny i dostępność niektórych potencjometrów cyfrowych nie zachęcają do ich stosowania. Pierwszy problem – zbyt drogie komponenty I tutaj zaczęły się schody. ChatGPT początkowo zaproponował przede wszystkim komponenty znanych zachodnich producentów. Pod względem parametrów były to interesujące rozwiązania, jednak ich ceny okazały się stosunkowo wysokie, szczególnie w kontekście niewielkiej produkcji urządzeń. Nie potrzebowałem przecież czujnika przeznaczonego do bardzo specjalistycznej aparatury laboratoryjnej. Zależało mi przede wszystkim na dobrej relacji parametrów do ceny. Poprosiłem więc AI o ponowne przeanalizowanie dostępnych rozwiązań, tym razem ze szczególnym uwzględnieniem tańszych komponentów chińskich producentów dostępnych w katalogu LCSC. Takie doprecyzowanie istotnie zmieniło kierunek poszukiwań. Zamiast ograniczać się do popularnych marek, ChatGPT zaczął proponować mniej znane rozwiązania, które potencjalnie mogły spełnić te same wymagania przy znacznie niższym koszcie. Nie oznacza to oczywiście, że tańszy komponent będzie automatycznie równie dobry. Nadal trzeba sprawdzić jego dokładność, powtarzalność, stabilność temperaturową i pozostałe parametry. Drugi problem – niewłaściwy typ czujnika Kolejny problem wynikał z niedostatecznie precyzyjnego opisu zastosowania. ChatGPT proponował też między innymi czujniki przeznaczone do pomiaru ciśnienia gazu bezpośrednio w otoczeniu płytki PCB. Tymczasem moje urządzenie miało mierzyć ciśnienie w przewodzie pneumatycznym. Różnica jest istotna. W takim zastosowaniu znacznie wygodniejsze są czujniki wyposażone w odpowiedni króciec, do którego można podłączyć przewód. W przypadku innych konstrukcji konieczne byłoby projektowanie dodatkowej komory pomiarowej. Po zwróceniu uwagi na ten szczegół AI zmieniło proponowane rozwiązania. W tym miejscu warto zauważyć, że trudno uznać pierwszą odpowiedź za całkowicie błędną. Nie przekazałem przecież wszystkich informacji dotyczących konstrukcji urządzenia. ChatGPT zaproponował więc komponenty, które pasowały do ogólnego opisu, ale niekoniecznie do rzeczywistego zastosowania. To dobry przykład pokazujący, jak ważne jest odpowiednie sformułowanie zapytania. Schemat modułu ciśnienia (z dodatkowym procesorem tłumaczącym) Trzeci problem – zakres pomiarowy Nawet po doprecyzowaniu sposobu podłączenia czujnika pojawiły się kolejne niedogodności. ChatGPT nadal proponował niektóre układy o zbyt małym zakresie pomiarowym, np. 0–40 kPa. Teoretycznie wystarczałyby one do pomiaru typowego ciśnienia roboczego, ale nie pozwalałyby poprawnie obsłużyć sytuacji, w której ciśnienie wzrosłoby do 80 kPa. Dopiero jednoznaczne wskazanie wymaganego zakresu 0–100 kPa pozwoliło znacząco zawęzić listę proponowanych komponentów. Ostatecznie udało się znaleźć kilka interesujących czujników, które pod względem deklarowanych parametrów były znacznie bliższe oczekiwaniom. Niestety pojawił się jeszcze problem dostępności, ponieważ nie wszystkie można było bez problemu zamówić. To również istotna kwestia. Komponent może być wręcz idealny pod względem parametrów, ale jeżeli jego dostępność jest ograniczona lub wymaga zakupu dużej liczby sztuk, niekoniecznie będzie najlepszym wyborem. Pełną rozmowę dotyczącą poszukiwania czujników można znaleźć tutaj: Dobór czujnika ciśnienia i komponentów PCB – rozmowa z ChatGPT Jak skutecznie szukać komponentów z pomocą AI? Po tych dwóch eksperymentach można zauważyć pewną zależność. ChatGPT jest w stanie bardzo szybko znaleźć interesujące rozwiązania, ale jakość odpowiedzi w dużym stopniu zależy od tego, ile informacji otrzyma na początku. Nie trzeba oczywiście przygotowywać kompletnej dokumentacji technicznej. Warto jednak przekazać przynajmniej najważniejsze wymagania. Przede wszystkim należy określić: Zastosowanie – co urządzenie ma mierzyć lub wykonywać i w jakich warunkach będzie pracować. Parametry techniczne – np. zakres pomiarowy, częstotliwość próbkowania, dokładność czy napięcie zasilania. Ograniczenia mechaniczne – rozmiary, rodzaj złącza, sposób montażu i ewentualne wymagania dotyczące obudowy. Budżet i dostawcę – maksymalną cenę komponentu oraz preferowany sklep, np. Botland lub LCSC. Dodatkowe wymagania – np. dostępność, kompatybilność z konkretnym mikrokontrolerem czy możliwość zastosowania zamienników. Dobrym pomysłem jest również poproszenie o przygotowanie tabeli porównawczej. Dzięki temu można zestawić kilka rozwiązań, sprawdzić ich zalety i wady, a następnie samodzielnie wybrać najbardziej odpowiedni komponent. Co ważne, nie zawsze warto wprowadzać zbyt wiele ograniczeń już w pierwszym zapytaniu. Czasami lepiej pozwolić AI zaproponować kilka różnych rozwiązań, również takich, których początkowo nie braliśmy pod uwagę. Dopiero później można stopniowo zawężać kryteria i eliminować komponenty niespełniające wymagań. Czy AI może zastąpić czytanie not katalogowych? Niestety nie, przynajmniej na obecnym etapie rozwoju tej technologii. Jedną z największych zalet ChatGPT jest możliwość analizy informacji pochodzących z różnych źródeł. Możemy zapytać po polsku o komponent opisany w angielskiej lub chińskiej dokumentacji, a następnie poprosić o porównanie konkretnych parametrów. Jest to szczególnie przydatne w przypadku mniej popularnych układów, których noty katalogowe bywają trudne do znalezienia lub zawierają informacje przedstawione w mało czytelny sposób. Sztuczna inteligencja może też znacznie przyspieszyć poszukiwanie zamienników. Zamiast ręcznie porównywać kilkanaście dokumentacji, można poprosić o wskazanie układów o zbliżonych parametrach. Problem polega jednak na tym, że AI potrafi również popełniać błędy. Może pomylić warianty jednego czujnika, przypisać mu niewłaściwy zakres pomiarowy, przeoczyć wymagania dotyczące zasilania albo niepoprawnie zinterpretować informacje zawarte w nocie katalogowej. W przypadku projektowania PCB nawet niewielka pomyłka może mieć poważne konsekwencje. Zamówienie układu o niewłaściwej obudowie, niezgodnym rozkładzie wyprowadzeń czy zbyt niskim dopuszczalnym napięciu może oznaczać konieczność przeprojektowania całej płytki. Dlatego każdy wybrany komponent powinien zostać samodzielnie zweryfikowany w dokumentacji producenta. Szczególną uwagę warto zwrócić na parametry graniczne, rozkład wyprowadzeń, wymagane elementy zewnętrzne oraz warunki, w których producent gwarantuje określone parametry. AI może znacząco skrócić proces poszukiwania, ale nie powinno być jedynym źródłem informacji przy podejmowaniu ostatecznej decyzji. Podsumowanie Moim zdaniem sztuczna inteligencja doskonale sprawdza się jako rozbudowana wyszukiwarka komponentów elektronicznych. Szczególnie przydatna okazuje się możliwość opisywania wymagań zwykłym językiem, bez konieczności znajomości dokładnych oznaczeń produktów. W przypadku gotowych modułów rezultaty były naprawdę dobre. ChatGPT nie tylko zaproponował odpowiedni czujnik, ale również uwzględnił dodatkowe akcesoria i zasugerował funkcje, których początkowo nie planowałem. Przy doborze komponentów do PCB pojawiło się znacznie więcej problemów. Początkowe propozycje były zbyt drogie lub nie odpowiadały dokładnie wymaganiom, a znalezienie odpowiednich rozwiązań wymagało kilku dodatkowych pytań. Nie zmienia to jednak faktu, że cały proces może być znacznie szybszy niż tradycyjne przeszukiwanie katalogów i porównywanie dokumentacji. Na szczególną uwagę zasługuje możliwość ograniczenia wyszukiwania do konkretnego dostawcy. Pozwala to uniknąć zamawiania pojedynczych elementów z kilku różnych sklepów, a tym samym oszczędzić na kosztach transportu, a dodatkowym atutem jest możliwość wyszukiwania zamienników oraz proponowania elementów, o których mogliśmy zapomnieć podczas planowania projektu. Najważniejsze jest jednak zachowanie zdrowego rozsądku. ChatGPT powinien pełnić rolę pomocnika podczas projektowania, a nie samodzielnego konstruktora, któremu bezkrytycznie powierzamy wszystkie decyzje. Ostatecznie to projektant odpowiada za prawidłowy dobór komponentów, poprawność schematu i działanie gotowego urządzenia. AI może wykonać sporą część żmudnej pracy związanej z wyszukiwaniem informacji, ale ich weryfikacja nadal pozostaje po naszej stronie. A Wy korzystacie już z AI podczas projektowania elektroniki? A może macie przykłady komponentów, które sztuczna inteligencja dobrała wyjątkowo dobrze albo wręcz przeciwnie – całkowicie błędnie? -
Mit o naszym poznawczym uniwersalizmie, o naszej gotowości odebrania i zrozumienia informacji całkowicie, przez jej pozaziemskość, nowej - trwa niewzruszony, chociaż, otrzymawszy posłanie z gwiazd, zrobiliśmy z nim nie więcej, niżby zrobił dzikus, który, ogrzawszy się u płomienia podpalonych dzieł najmędrszych, uważa, że doskonale owe znalezisko wykorzystał! - Stanisław Lem Głos Pana Tymi słowami Stanisław Lem konkludował próbę odszyfrowania przez Człowieka tajemniczego sygnału z kosmosu, którego odkrycie było dziełem przypadku. Sygnał, pochodzący najprawdopodobniej od obcej cywilizacji z krańca Kosmosu stał się zagadką, poddającą w wątpliwość ludzką poznawczość. Pomimo licznych prób i wzajemnej współpracy grona naukowców, wiadomość udało się rozpracować tylko częściowo, a nawet uzyskany wynik stanowił dalsze ogniwo niezrozumienia i zdumienia. Chcąc opowiedzieć czym był sygnał, jak został odkryty i do jakich odkryć poprowadził grupę uczonych należy sięgnąć do książki Stanisława Lema „Głos Pana”. Ten wpis brał udział konkursie na najlepszy artykuł o elektronice lub programowaniu. Sprawdź wyniki oraz listę wszystkich prac » Partnerem tej edycji konkursu (marzec 2020) był popularny producent obwodów drukowanych, firma PCBWay. Dlaczego przytoczone zostały właśnie te słowa i w jaki sposób korespondują one z tematem artykułu? Jeżeli miałeś nadzieję, że przedstawione zostaną kulisy pierwszego kontaktu z obcą cywilizacją, to niestety możesz się lekko rozczarować, ale ta era (jeszcze) nie nadeszła - jakkolwiek byśmy tego nie chcieli i próbowali zaklinać czasoprzestrzeń. Pozwólmy, rzucić sobie światło na niemniej, a nawet równie ciekawą materię. Komunikacja Powracając do powieści Stanisława Lema, komunikacja, choć jednostronna przebiega tam zdalnie. Z otchłani kosmosu dobiega sygnał w postaci ciągu neutrin – cząstek nie posiadających masy, zdolnych do przenikania materii. Cząstki te nadawane są w pewnych odstępach czasowych. Uważnie przyglądając się całości emisji dostrzec można, pewne zależności powodujące, że w procesie widoczna jest pewna wiadomość. Komunikatu zostaje zapętlony, a zarówno nadawca jak i odbiorca kosmicznego komunikatu nie widzą się wzajemnie. Są przekonani o wzajemnym istnieniu, ale fizycznie, poza komunikatem nie mają ze sobą jakiegokolwiek innego kontaktu. Czy cała idea tego procesu nie wygląda w pewien sposób znajomo? Tak, to Test Turinga! Obca cywilizacja przesyłając komunikat zainicjowała proces Testu Turinga, w oczekiwaniu na sprzężenie zwrotne, które miało udowodnić naszą inteligencję. Barierą oddzielającą „komputer” od człowieka jest ogromna przestrzeń kosmiczna, a sam sygnał przyjmuje nieco inną formę, niż tą jaką przewidział w swoich założeniach Alan Turing. Niestety, cały mistycyzm pierwszego kontaktu sprowadzony zostaje do trochę bardziej prozaicznego, wcześniej znanego pojęcia. Ale czy spoglądanie w niebo to jedyny sposób na nawiązanie dialogu z przyszłością? Schodzimy na ziemię Dialog już trwa, rozmówcą jesteś również Ty, ale to Alan Turing jako jeden z pierwszych dostrzegł możliwość rozmowy Człowieka z maszyną. Tak, sztuczna inteligencja, bo o niej mowa, choć nieco bardziej ziemska posiada kosmiczne możliwości. To sztuczna inteligencja ma nasze dane, potrafi nimi skutecznie manipulować, gromadzić i na podstawie ich podejmować poważne decyzje. Prowadzi nasze auta, wynajduje nowe lekarstwa, decyduje czy będziesz wiarygodnym kredytobiorcą, a nawet bywa „zwyczajnym rozmówcą”. Komunikacja z SI przybiera różne formy, choć dysponujemy szeregiem języków programowania, gotowymi rozwiązaniami informatycznymi, a sama wiedza jest niemalże powszechnie dostępna to właśnie komunikacja stanowi najważniejsze zagadnienie rozwoju sztucznej inteligencji. O ile, gdy stworzone przez nas oprogramowanie zawarte w ryzach algorytmów jest nam niemal całkowicie posłuszne, o tyle sztuczna inteligencja w swojej idei zaczyna „żyć własnym życiem” – życiem tak autonomicznym, że język cyfrowy schodzi momentami na drugi plan, a nawet może nie być samodzielnie wystarczający. Oczywiście nic nie wskazuje na to, abyśmy mieli w całości zrezygnować z języków programowania na rzecz… no właśnie czego? Rozmowy? Siri, Asystent Google czy Alexa to systemy bazujące na sztucznej inteligencji, które uprzednio zaprogramowane dalszą część cybernetycznego życia spędzają komunikując się poprzez komunikację werbalną. Całość procesu: gromadzenie danych, przetwarzanie czy wydawane przez nią komunikaty to głównie wiadomości głosowe. Jest to oczywiste i zrozumiałe, ale pod postacią wygodnej dla nas funkcjonalności rozpoznawania głosowego oraz syntezatora mowy, ukryty pozostaje znaczący krok w rozwoju komunikacji na linii człowiek – maszyna. W sposób nowoczesny, komfortowy, ale jednocześnie pionierski przeszliśmy z zerojedynkowej narracji do „języka człowieka”. Choć nie zawsze precyzyjnie i składnie, to rzeczywiście – maszyna rozmawia z człowiekiem. Wygląda to jak pierwszy krok w drodze do tego czym zwykliśmy nazywać świadomością. Doskonale operuje liczbami, w przeciągu ułamka sekundy zna odpowiedzi na liczbowe problemy, tworzy skomplikowane modele cyfrowe, wszystko co deterministyczne i natury arytmetycznej jest w jej zasięgu. Ma natomiast problem z pojęciami, które ironicznie, człowiekowi przychodzą nieco łatwiej – pojęciami abstrakcyjnymi. Czy w milionach tranzystorów może popłynąć rewolucyjna idea, zupełnie abstrakcyjna myśl, zakodowana jako „kilka zer i jedynek” ? Wszystkie wyniki pracy systemów sztucznej inteligencji, a w konsekwencji jej osiągnięcia bazują na dużych ilościach danych którymi jest „karmiona” i kolejno trenowana. Choć ten ciąg przyczynowo-skutkowy wydaje się pozostawać niewzruszony to ludzki umysł, również wiedziony ogromną ilością danych, popularniej zwanych bagażem doświadczeń potrafi myśleć w sposób abstrakcyjny, definiować swój byt i być samoświadomy. Czy samoświadomość sztucznej inteligencji to kwestia większej ilości danych i nowych połączeń sieci neuronowej? Jeżeli tak, to hipotetycznie moglibyśmy wskazać konkretny punkt, w którym owa sieć osiąga świadomość. Czy jest to wykonalne - jest nam ciężko określić, chociaż sam temat świadomości cyfrowej stanowi nie tylko obiekt: badań specjalistów, westchnień futurologów, ale także.. Rozważań filozofów Czy prekursorzy inżynierii elektronicznej tworząc pierwsze układy scalone, mogli doszukiwać się głębszego metafizycznego sensu w sygnałach? Jest to wątpliwie, jednak przyszłość przygotowała własną wizję - mariaż teorii informacji z humanizmem. Dwie dziedziny należące do przeciwległych biegunów nauki, połączyła potrzeba współpracy na rzecz ustalenia wspólnych mianowników etycznych dla człowieka i maszyny. Choć z pozoru nierealna wizja potrzeby dzielenia się wykuwaną przez lata ludzką moralnością, z pieśni przyszłości staje się prozą współczesności. Autonomiczne auta wyposażane są w systemy decyzyjne, których zadaniem jest podjęcie odpowiedniego wyboru w sytuacji zagrożenia życia. Ale czy faktycznie potrafimy zdefiniować odpowiedni wybór? Czy nie jest tak, że już na przestrzeni dialogu międzyludzkiego napotykamy problem z jasnym zdefiniowaniem systemu norm, który byłby spójny? Subiektywność, rozumiana bliżej jako doświadczenia życiowe i system wyznawanych przez nas wartości powodują dywersyfikację wersji algorytmu prawidłowego działania. Czy w niemożliwym do uniknięcia przypadku potrącenia pieszego system postanowi potrącić dziecko czy osobę starszą, osobę schorowaną czy kobietę w ciąży? Odpowiedź nie jest prosta, o ile w ogóle takowa istnieje. Wizja Elon Musk – właściciel firmy Tesla, produkującej innowacyjne samochody elektryczne do projektowania systemów autonomicznej jazdy wśród specjalistów z dziedzin IoT, Data Science, programistów systemów embedded rekrutuje osoby odpowiedzialne za moralne uposażenie systemów decyzyjnych – ekspertów z dziedziny filozofii. To oni są odpowiedzialni za wszystkie potencjalne dylematy natury moralnej. Zatrudnienie filozofów, ale również humanistów ogólnie w sektorze AI (Artificial intelligence – ang. Sztuczna Inteligencja) będzie niewątpliwie rosło. Urzeczywistnia się coś, o czym wcześniej nawet nie myśleliśmy – cykl technologiczny zatacza koło, a my uczłowieczamy technologię. Nie chodzi tu o podniosłe zwroty i patetyczne doszukiwanie się archetypu stwórcy w programiście – technologia brnie do przodu, a wraz z nią rola nas – jej głównych odbiorców i współrozmówców ulega ewolucji.
- 53 odpowiedzi
-
- 5
-
-
Sztuczna inteligencja jest jednym z najbardziej dynamicznie rozwijających się obszarów współczesnej technologii. Od momentu jej powstania, AI (ang. Artificial intelligence) nieustannie ewoluuje, przekształcając sposób, w jaki żyjemy i pracujemy. W dzisiejszym świecie AI jest obecna niemal wszędzie - od inteligentnych asystentów w naszych telefonach, przez systemy rekomendujące treści w mediach społecznościowych, aż po zaawansowane algorytmy wykorzystywane w analizie danych. W dobie rozwijających się algorytmów sztucznej inteligencji warto wiedzieć, czym ona tak właściwie jest i jak działa. W tym artykule przedstawię Ci: Czym jest sztuczna inteligencja. Problemy sztucznej inteligencji. Zastosowania sztucznej inteligencji. Wstęp do algorytmów uczenia maszynowego: Podział algorytmów. Regresja liniowa. Algorytm genetyczny. Sztuczne sieci neuronowe. Algorytmy i modele sztucznej inteligencji mogą być fascynujące i bardzo efektywne. Źródło zdjęcia. Czym jest sztuczna inteligencja Frazę sztuczna inteligencja należy rozdzielić na sztuczna oraz inteligencja. Przyjrzyjmy się drugiemu rzeczownikowi. Inteligencja - zdolność rozumienia, uczenia się oraz wykorzystywania posiadanej wiedzy i umiejętności w sytuacjach nowych ~ sjp.pwn.pl. Jest to abstrakcyjne pojęcie, któremu filozofowie, psycholodzy i inni uczeni przypisywali różne definicje, takie jak: Ogólna zdolność jednostki do świadomego dostosowywania swojego myślenia do nowych wymagań. ~ William Stern. Źródło definicji. [...] Wszystkie asymilacyjne i akomodacyjne interakcje między organizmem a środowiskiem. ~ Jean Piaget. Źródło definicji. Zdolność osoby do przenoszenia swojej wiedzy i zgromadzonego doświadczenia z jednej sytuacji do drugiej. ~ George Ferguson. Źródło definicji. Max Tegmark, profesor fizyki w MIT w swojej książce Życie 3.0 przyjmuje bardzo szeroką definicję, tj. Inteligencja = zdolność do osiągania złożonych celów. Wszystkie te definicje obejmują słowa kluczowe, jakimi są dostosowywanie, akomodacja i przenoszenie. Zatem za inteligencję możemy przyjąć zdolność do nauki, zrozumienia i adaptacji do nowych warunków. Sztuczna inteligencja - dział informatyki badający reguły rządzące zachowaniami umysłowymi człowieka i tworzący programy lub systemy komputerowe symulujące ludzkie myślenie. ~ sjp.pwn.pl. Zatem sztuczną inteligencją są modele, które starają się naśladować ludzkie myślenie. Mając na uwadze szeroko pojętą definicję inteligencji, możemy też powiedzieć, że sztuczną inteligencją jest rozwiązanie technologiczne/program komputerowy, który potrafi uczyć się i dostosowywać do nowych sytuacji, znajdując rozwiązania na zadany problem. Istnieje wiele rodzajów ludzkiej inteligencji: emocjonalna, społeczna i twórcza. Źródło zdjęcia. Problemy sztucznej inteligencji Algorytmy AI (szczególnie uczenia maszynowego) opierają się na danych, co oznacza, że jakość ich działania w dużej mierze zależy od jakości i kompletności danych, którymi są trenowane i weryfikowane. Jeśli dane uczące są niepełne lub zawierają błędy, sztuczna inteligencja może powielać te same niedoskonałości. Może to prowadzić do niepoprawnych rozwiązań. Przykładem może być ChatGPT i generowanie obrazu kieliszka wypełnionego w pełni winem. Istnieje względnie mało zdjęć, obrazów i innych źródeł, które przedstawiają kieliszek wypełniony po brzegi winem, dlatego prawdopodobnie brakuje takich źródeł w danych, którymi był trenowany ChatGPT. Skutkuje to tym, że model językowy nie potrafi generować takich obrazów. Oczywiście pojawia się tutaj problem z interpretacją samego polecenia. Chociaż pojawiają się głosy, że sztuczna inteligencja już potrafi to robić… Zapytanie o wygenerowanie obrazu. Wniosek jest jeden. Sztuczna inteligencja może się mylić. Nie bez powodu algorytmy te ocenia się i poddaje się testom i innym zabiegom, żeby były jak najdoskonalsze. O błędach informują twórcy modeli językowych w krótkich komunikatach, zazwyczaj w obrębie pola do wpisywania poleceń. Komunikat na stronie ChatGPT. Komunikat na stronie MS Copilot. Błędy, które popełniają modele językowe, nie zmieniają faktu, że sztuczna inteligencja to bardzo obiecująca i efektywna dziedzina, która znajduje zastosowanie w wielu branżach. Zastosowania sztucznej inteligencji 1. LLM i tłumaczenie tekstów Tematem na topie od ostatnich kilku lat są duże modele językowe (ang. Large Language Models), które zrewolucjonizowały sposób, w jaki korzystamy z internetu. Potrafią analizować, rozumieć i generować tekst w sposób zbliżony do ludzkiego. Oczywistymi przykładami, których chyba nie muszę wyjaśniać są ChatGPT oraz DeepSeek. Warto przedstawić polski model językowy: Bielik. W 2017 roku powstało narzędzie DeepL – start-up, który założył Polak dr Jarosław Kutyłowski. Według strony DeepL tłumacz korzysta po części z Transformer Model. DeepL wykorzystuje algorytmy sztucznej inteligencji do tłumaczenia tekstów. Źródło zdjęcia. 2. Rozpoznawanie obrazów i elementów na obrazach Dzięki zastosowaniu sieci neuronowych algorytmy wykorzystujące sztuczną inteligencję potrafią identyfikować twarze, przedmioty, znaki drogowe, a nawet emocje na ludzkich twarzach. Rozpoznawanie elementów na obrazie to nie tylko identyfikowanie, co znajduje się na zdjęciu, ale też gdzie dokładnie dany obiekt się znajduje oraz jakie relacje zachodzą między różnymi elementami sceny. Sztuczna inteligencja jest w stanie rozpoznać twarz, oko, a nawet źrenicę oka. Źródło zdjęcia. 3. Pomoc przy diagnozowaniu chorób Sztuczna inteligencja może znajdować zastosowanie w medycynie, szczególnie w obszarze diagnozowania chorób. Jednym z najbardziej obiecujących obszarów jest onkologia. Algorytmy sztucznej inteligencji coraz skuteczniej analizują obrazy i wykrywają zmiany nowotworowe. Naukowcy z Harvard Medical School opracowali innowacyjne narzędzie o nazwie CHIEF, które wykorzystuje sztuczną inteligencję do diagnozowania nowotworów. Model ten analizuje cyfrowe obrazy tkanek nowotworowych, identyfikując komórki rakowe i przewidując profil molekularny guza na podstawie cech widocznych na obrazach. CHIEF został przetestowany na 19 różnych typach nowotworów, osiągając dokładność wykrywania raka na poziomie niemal 94%. Miejmy nadzieję, że w przyszłości sztuczna inteligencja będzie służyła do ratowania życia. Źródło zdjęcia. 4. Sztuczna inteligencja w elektronice Implementację algorytmów sztucznej inteligencji umożliwiają coraz bardziej wydajne platformy sprzętowe, takie jak rozwiązania NVIDIA Jetson, które umożliwiają uruchamianie aplikacji korzystających z uczenia maszynowego. Warto zwrócić uwagę na projekty, takie jak reComputer lub reCamera, które stanowią wygodną bazę do pracy z AI w praktyce. Takie urządzenia umożliwiają tworzenie autonomicznych systemów wizyjnych, robotów czy inteligentnych czujników. Rozwój technologiczny przyczynił się do konstrukcji takiego sprzętu jak Nvidia Jetson. Na zdjęciu widać Nvidia Jetson Nano developer kit. Źródło zdjęcia. Wstęp do algorytmów uczenia maszynowego Sercem każdego z tych zastosowań są konkretne algorytmy, które przetwarzają dane, uczą się na ich podstawie i podejmują decyzje. Przybliżę Ci zasadę działania kilku algorytmów uczenia maszynowego. Skoncentrujemy się na aspektach formalnych, tworząc bazę pod dalszą analizę tych metod. Podział algorytmów Pojęcie sztuczna inteligencja dzieli się na różne kategorie: Klasyfikacja sztucznej inteligencji. Źródło zdjęcia. Powyżej wyróżniono uczenie maszynowe (ang. Machine Learning), czyli dziedzinę sztucznej inteligencji zajmującą się algorytmami, które samodzielnie doskonalą swoje działanie na podstawie zebranych doświadczeń. Najpopularniejszym podziałem tych algorytmów jest podział na: Uczenie nienadzorowane - algorytmy samodzielnie odkrywają wzorce w zbiorze danych. Uczenie nadzorowane - człowiek przedstawia algorytmowi, jakie wyjście powinno pojawić się przy odpowiednim wejściu. Uczenie przez wzmacnianie - algorytm uczy się na podstawie własnych doświadczeń w pewnym środowisku. Podział algorytmów uczenia maszynowego. Źródło zdjęcia. Przykłady algorytmów uczenia maszynowego 1. Regresja liniowa Jeden z podstawowych algorytmów uczenia maszynowego i statystyki, używany do modelowania zależności między zmiennymi. Jego głównym celem jest przewidywanie wartości zmiennej na podstawie jednej lub wielu zmiennych wejściowych. Celem regresji jest dopasowanie takiej prostej, która najlepiej opisuje dane, czyli minimalizuje różnice (błędy) między przewidywanymi a rzeczywistymi wartościami. Przykład rozwiązania zadania regresji liniowej. Niebieskie punkty to zbiór danych, dla którego należy znaleźć prostą najlepiej opisującą te dane. W tym przypadku jest to czerwona prosta. Źródło zdjęcia. Szczegóły matematyczne zostawiam dla ciekawskich. W tym przypadku przedstawiamy algorytmowi, jakie jest wejście (oś x) i wyjście (oś y). Algorytm na tej podstawie uczy się co może być pomiędzy jedną, a drugą wartością. Jest to zatem uczenie nadzorowane. 2. Algorytm genetyczny Algorytmy genetyczne (ang. Genetic Algorithms, GA) to techniki optymalizacyjne oparte na zasadach ewolucji biologicznej, takich jak selekcja naturalna, krzyżowanie i mutacja. Algorytm minimalizuje zdefiniowaną funkcję celu, krzyżując i modyfikując osobniki z populacji. Natura jest inspiracją do różnych rozwiązań technicznych. W tym wypadku inspiracją do stworzenia algorytmu genetycznego była ewolucja. Źródło zdjęcia. Algorytm genetyczny działa następująco: Definicja funkcji celu: należy matematycznie określić, co algorytm będzie minimalizował w celu ulepszenia populacji osobników. Generacja populacji początkowej: jako populację rozumiemy zbiór osobników posiadających cechy, które w każdej iteracji będziemy poddawali ocenie funkcją celu. Obliczenie wartości funkcji celu dla każdego osobnika: każdemu osobnikowi przypisujemy ocenę, która wskazuje na to, jak silny jest osobnik. Ocena, czy algorytm powinien zostać zakończony: jest to uzależnione od czynników, które zdefiniujemy. Algorytm może zakończyć się po konkretnej liczbie iteracji lub, gdy stworzymy osobnika o satysfakcjonującej wartości funkcji celu. Generacja populacji potomnej: w tym kroku może (nie musi) dziać się wiele rzeczy. Głównym celem tego kroku jest stworzenie kolejnej populacji osobników, które będą lepsze od poprzednich. Stosuje się tu kilka metod: Selekcja: spośród osobników wybieramy tylko te, które są dla nas satysfakcjonujące. Istnieje kilka metod, które pozwalają na selekcję, w tym metoda progowa bądź ruletki. Krzyżowanie: łączenie ze sobą najsilniejszych osobników, które przeszły selekcję. Jeżeli cechy osobników definiujemy liczbowo, to możemy analizować ich wartość binarną. Krzyżowanie polega na mieszaniu cech osobników. Np. binarną wartość osobnika dzieli się na pół. Powstają dwie połówki. Te połówki łączy się z połówkami drugiego osobnika. Tak powstają kolejne dwa osobniki. Mutacja: polega na odwróceniu pojedynczego bitu osobnika. Inwersja: odwrócenie ciągu bitów osobnika. Schemat blokowy algorytmu genetycznego. Algorytm genetyczny wykonuje zadanie optymalizacji. 3. Sztuczne sieci neuronowe Sztuczne sieci neuronowe to modele matematyczne inspirowane strukturą i działaniem ludzkiego mózgu. Budowa neuronu. Źródło zdjęcia. W 1943 Warren McCulloch oraz Walter Pitts zaproponowali model matematyczny neuronu, zwany Neuronem McCullocha-Pittsa. Model ma wejścia i wyjście binarne. Model McCulloch Pittsa. Źródło zdjęcia. W powyższym modelu wejścia ‘x’ są mnożone przez wagę, a następnie sumowane ze sobą. Ta wartość przechodzi przez funkcję aktywacji, której wyjście daje odpowiedź w postaci 0 lub 1. Ewolucją powyższego modelu jest perceptron sformułowany przez Rosenblatta. Jego główną innowacją było wprowadzenie możliwości uczenia się na podstawie danych - perceptron potrafi dostosowywać swoje wagi w taki sposób, by lepiej dopasowywać się do zadania klasyfikacyjnego. W perceptronie dane wejściowe mogą być wartościami rzeczywistymi, a każdemu wejściu przypisana jest waga, czyli liczba, która określa znaczenie danego sygnału. Perceptron oblicza ważoną sumę wejść i dodaje do niej tzw. bias (wartość przesuwająca próg aktywacji). Następnie ta suma przechodzi przez funkcję aktywacji. Podstawą działania perceptronu jest reguła uczenia. Wagi są aktualizowane na podstawie różnicy między oczekiwanym wynikiem a wynikiem uzyskanym. Jeśli perceptron popełnia błąd, modyfikuje swoje wagi, by w przyszłości lepiej klasyfikować dane. Perceptron. Źródło zdjęcia. Pojedynczy perceptron ma ograniczone możliwości. Jest w stanie rozwiązywać jedynie problemy liniowo separowalne, czyli takie, w których dane można oddzielić prostą linią (lub hiperpowierzchnią w przestrzeni wielowymiarowej). Aby poradzić sobie z bardziej złożonymi zależnościami, wiele takich neuronów łączy się w sieć. Sztuczna sieć neuronowa składa się z warstw: Warstwa wejściowa – przyjmuje dane wejściowe. Warstwa (lub warstwy) ukryta – zawiera wiele perceptronów, które przetwarzają dane na coraz wyższym poziomie abstrakcji. Warstwa wyjściowa – generuje końcową decyzję, np. klasyfikację lub wartość liczbową. Przykład sieci neuronowej. Źródło zdjęcia. Przykładem uczenia sieci neuronowej jest algorytm propagacji wstecznej. Oprócz klasycznej sieci feedforward przedstawionej powyżej istnieje jeszcze wiele innych np. sieć rekurencyjna lub rozszerzenie sztucznej sieci neuronowej - splotowa sieć neuronowa. Gorąco zachęcam do rozszerzenia tematu. Podsumowanie Sztuczna inteligencja przestała być futurystycznym pojęciem rodem z filmów science fiction, a stała się realnym narzędziem zmieniającym sposób, w jaki postrzegamy technologię, biznes i codzienne życie. To fascynująca dziedzina, która nie tylko stawia przed nami nowe możliwości, ale również wyzwania, ucząc nas pokory wobec potęgi danych i algorytmów. AI nieustannie się rozwija – zarówno w zakresie prostych rozwiązań wspomagających naszą codzienność, jak i w obszarach wymagających głębokiej analizy i precyzji, jak medycyna czy analiza obrazu. Dodajmy też kontekst: dlaczego właśnie teraz sztuczna inteligencja zyskała taką popularność i realną wartość użytkową? Kluczowy przełom nastąpił dzięki połączeniu kilku czynników: potężnych modeli językowych trenowanych na ogromnych zbiorach danych, rosnącej mocy obliczeniowej (szczególnie dzięki GPU), oraz rozwoju technik uczenia głębokiego (deep learning). To one sprawiły, że AI zaczęła nie tylko rozumieć i generować język na poziomie zbliżonym do ludzkiego, ale również przetwarzać obrazy, kod, dźwięk czy nawet rozumowanie w zupełnie nowej jakości. Warto jednak podchodzić do tematu z rozsądkiem. Na fali popularności łatwo wpaść w pułapkę marketingowego nadużywania pojęcia „sztuczna inteligencja”, które często wykorzystywane jest tylko jako chwytliwe hasło – nawet wtedy, gdy rzeczywistość technologiczna danego rozwiązania nie ma z AI zbyt wiele wspólnego. I na koniec ważne zastrzeżenie: wyłącznie to podsumowanie zostało napisane przeze mnie - ChatGPT. Pozdrawiam czytelników Forbota!
-
- 5
-
-
- informatyka
- Programownie
- (i 1 więcej)
-
Witam. Już od bardzo długiego czasu (jeszcze zanim był chat gpt) próbuję stworzyć sieć neuronową w pythonie. Bardzo dużo się w tym temacie nauczyłem przez ten czas, jednak nie na tyle dużo by stworzyć własną sieć neuronową która wykonywałaby jakieś zaprojektowane przeze mnie zadanie. Próbowałem bibliotek: pytorch, tensorflow, keras, scikit-learn, stable baselines, gymnasium, a nawet pisania sieci od podstaw bez żadnej z tych bibliotek, ale dotychczas moje największe osiągnięcie to napisanie kodu (z tutoriala) który pracuje z environmentami z gymnasium, ale nie całkiem go rozumiałem i nie mogłem go dostosować do swoich zastosowań. Jeśli jest ktoś kto orientuje się w temacie i byłby skłonny podzielić się wiedzą byłbym niezmiernie wdzięczny za wskazówki. Pozdrawiam.
-
Polecenie dla kreatora obrazków: two old men drinking beer and playing simple game on old computer, in the pub, anime Co jest nie tak na tym obrazku?
-
trochę się bawię w programowanie symulacji 2 wymiarowego świata z 2 wymiarowymi istotami, które same uczą się i dostosowują do zmian, nie są uczone na dużych zbiorach danych a jedynie na zasadzie własnych prób i błędów. Taki rodzaj uczenia maszyn określa się jako nienadzorowany (unsupervised machine learning). Symulacja nie jest efektowna graficznie (nie o to chodziło) ale jak się wpatrzeć to widać jak bez niczyjej pomocy uczą się zasad świata i interakcji z innymi stworzeniami (atak, ucieczka, nieatakowanie swojego gatunku), szukanie pożywienia. Aktualnie przepisuję całość w Pythona na Rust więc projekt trochę w zawieszeniu, ale docelowo myślę o tym jako o alternatywnym uczeniu robotów. Zaletą jest to że nie bazujemy na karmieniu sieci neuronowej gigantycznym zbiorem danych - czyli nie trzeba "mistrza", uczeń uczy się na zasadzie prób i błędów. Poza tym jest bardzo elastyczny, na starcie nie wie nawet jakie prawa rządzą światem. Nie wie że trzeba jeść i unikać zjedzenia. W dodatku jest bardzo elastyczny, można diametralnie zmienić zasady rządzące światem i z biegiem czasu gatunki się dostosują. Ostatnio dodałem receptor który rozróżnia czy inny stworek należy do tego samego gatunku. Okazało się że niektóre gatunki wykształciły zachowanie polegające na odstępowaniu od ataku swoich! szare poligony - skały, przeszkody zielone okręgi - rośliny czerwone okręgi - mięso niebieskie stworki z zielonym środkiem - roślinożercy niebieskie stworki z czerwonym środkiem - mięsożercy po lewej na dole wizualizacja działania sieci neuronowej wybranej istoty Zostawiam link dla zainteresowanych:
-
- 7
-
-
- neuroewolucja
- alg. genetyczny
- (i 3 więcej)
-
Cześć, napotkałem dziś dziwny problem. Po dodaniu do projektu STM32H743IIT6 pakietu X-CUBE-AI przestała działać komunikacja USART. Mam na PCB wyprowadzone USART2 oraz USART3 i żaden z nich nie działa. Zdaje się, że pozostała część programu działa, ale dokładnie tego nie sprawdzałem, jedynie miganie diod. Sprawdzałem wersje 7.3 oaz 8.0 pakietu AI. Najdziwniejsze jest to, że już samo zaznaczenie Core w Select Components (STM32CubeIDE) powoduje problemy. Późniejsze odznaczenie tego nie przywraca działania. Problem nie tkwi w pliku main.c. Przywrócenie pliku sprzed zmian nic nie daje. Komunikacja po USART realizowana jest poprzez programator z Nucleo F1. Wcześniej korzystałem z pakietu AI razem z USART na rdzeniu F7 i nie było problemów. Czy macie jakieś pomysły, gdzie szukać problemu?
-
Wstęp Tematyka uczenia maszynowego, sieci neuronowych oraz sztucznej inteligencji jest w ostatnich latach bardzo popularna nie tylko w środowisku naukowym, ale również wśród programistów i elektroników amatorów. Często jednak zdarza się, że znamy te zagadnienia z praktyki i umiemy je wykorzystywać przy pomocy popularnych bibliotek takich jak Keras, jednak nie wiemy co dzieje się na niższym poziomie. W artykule tym postaramy się jednak to zmienić. Naszym celem będzie zrozumienie podstaw teoretycznych i poznanie działania sztucznej inteligencji od pojedynczego neuronu, przez proces uczenia, aż do gotowej i wyuczonej sieci. Ten artykuł bierze udział w naszym konkursie! Na zwycięzców czekają karty podarunkowe Allegro, m.in.: 2000 zł, 1000 zł i 500 zł. Potrafisz napisać podobny poradnik? Opublikuj go na forum i zgłoś się do konkursu! Czekamy na ciekawe teksty związane z elektroniką i programowaniem. Sprawdź szczegóły » Pojedynczy neuron Sztuczne sieci neuronowe składają się z węzłów (pojedynczych neuronów), warstw tworzonych przez węzły oraz połączeń między węzłami. Pojedynczy węzeł składa się z funkcji wejściowej, funkcji aktywacji oraz wyjścia. Połączenia między węzłami natomiast posiadają przypisane im wagi, przez które przemnażany jest sygnał przez nie płynący. Wyróżniamy również trzy warstwy węzłów: wejściową, ukrytą oraz wyjściową. Matematyczny model węzła, czyli pojedynczego sztucznego neuronu pokazano poniżej. Na początek skupmy się jednak na działaniu pojedynczego neuronu. Posiada on dowolną liczbę wejść oraz jedno wyjście. Wejściami mogą być, w zależności od warstwy w jakiej znajduje się nasz neuron, dane wejściowe lub wyjścia innego neuronu. Na rysunku mamy sześć sygnałów wejściowych opisanych x0-x5. Z reguły sygnały te powinny przyjmować wartości od 0 do 1 i następnie być przemnożone przez odpowiadające im wagi θ0-θ5. Wielkość tych wag jest dowolna (mogą być dodatnie oraz ujemne) i jest uzależniona od tego jak istotne dla działania naszej sieci jest dane połączenie. Podczas procesu uczenia sieci to właśnie te wagi ulegają zmianie tak by efekt działania sieci był jak najtrafniejszy. Wszystkie przemnożone przez swoje wagi wejścia są w kolejnym kroku sumowane i podawane jako wejście (czyli argument) funkcji aktywacji. Funkcja aktywacji jest niezwykle istotna. Z reguły wykorzystuje się tu funkcję sigmoidalną. Jej wykres przedstawiono na rysunku poniżej. Funkcja ta na podstawie swojego argumentu przyjmuje wartości z zakresu od 0 do 1. Zazwyczaj przyjmuje ona jednak tylko swoje skrajne wartości. Dlaczego więc stosujemy funkcję sigmoidalną zamiast zwykłego określania, że dla ujemnych argumentów funkcja aktywacji przyjmuje wartość 0, a dla dodatnich 1? Otóż funkcja ta jest w prosty sposób różniczkowalna1 co ma znaczący wpływ w procesie uczenia całej sieci, znacznie ułatwiając potrzebne obliczenia. Nie będziemy jednak tego tu dokładniej omawiać, temat doboru funkcji aktywacji mogłyby posłużyć na osobny artykuł. Wracając do działania neuronu wystarczy dodać, że wyjście funkcji aktywacji jest zarazem wyjściem całego węzła. Mówimy więc, że neuron jest w stanie spoczynku, gdy wartość funkcji aktywacji jest równa 0, lub w stanie pobudzenia gdy jest równa 1. W skrócie: Neuron jest w stanie spoczynku lub pobudzenia w zależności od wartości zsumowanych wejść tego neuronu pomnożonych przez przypisane im wagi. Od neuronu do sieci Mamy już pojedynczy neuron i wiemy jak on działa, ale co dalej? Teraz stworzymy całą sieć. W tym celu wyjścia jednego neuronu połączymy z wejściami innych. Warto jednak pamiętać, że część neuronów jako wejścia będzie posiadać dane wejściowe na podstawie których nasza sieć będzie wyliczać swoje wyjście. Neurony te stanowią warstwę wejściową. Z drugiej strony część neuronów będzie posiadała wyjścia nie podłączone do innych neuronów, lecz stanowiące wyjście całej sieci. Neurony te tworzą więc warstwę wyjściową. Cała reszta, która może łączyć się ze sobą w dowolny sposób (zaprojektowany oczywiście przez projektanta) nazywana jest warstwą ukrytą. W warstwie tej z reguły jest najwięcej połączeń oraz węzłów i od niej w dużej mierze zależy prawidłowość działania całej sieci. Schemat bardzo prostej sieci pokazano poniżej. Podsumowanie Wiemy już z czego składa się cała sieć, aż do pojedynczych części pojedynczego neuronu. Wiemy, że sieć składa się z wielu połączeń i każde z nich ma swoją wagę. Pozostaje nam więc jedynie odpowiedzieć na pytanie na czym polega proces uczenia maszynowego? Otóż polega on tylko i wyłącznie na doborze najoptymalniejszych wag dla każdego połączenia. Jest to proces który wymaga nieprawdopodobnej liczby obliczeń nawet przy niewielkich sieciach, lecz raz “wyuczona” sieć już tak skomplikowanych obliczeń nie potrzebuje dla prawidłowego działania. Dlatego też proces uczenia często wymaga dużej mocy obliczeniowej i zajmuje niemało czasu, natomiast sama sieć potrafi działać szybko nawet na mniej wydajnym sprzęcie. Jeśli interesuje Was ten temat i chcielibyście, abym opisał cały proces projektowania i uczenia sieci, dajcie proszę znać w komentarzach. Na koniec chciałbym jeszcze przedstawić Wam cytat jednego z największych naukowców 2. połowy XX w.: "Gdy (AI) osiągnie IQ 100 czy 150, nie będzie problemu. Ale gdy 1000 albo 10000, to co wtedy? To może być największe osiągnięcie ludzkości. Ale zarazem jej koniec." Stephen Hawking Bibliografia i inspiracje: Brain-wiki contributors, https://brain.fuw.edu.pl/edu/index.php/Uczenie_maszynowe_i_sztuczne_sieci_neuronowe (data dostępu 10.04.2021 r.) Smith Steven W.: Cyfrowe przetwarzanie sygnałów, BTC,Warszawa 2007 https://www.youtube.com/watch?v=aircAruvnKk https://www.youtube.com/watch?v=437dvcP-09E 1-od tego momentu matematyczny bełkot wszedł na ten poziom, że zacząłeś przewijać dalej?
-
Witam Od około półtora roku interesuję się sztuczną inteligencją, zwłaszcza zastosowaną w robotyce. Jest to dla mnie niezwykle ciekawy temat Kilka miesięcy temu zacząłem pracować nad moim prywatnym projektem, który cały czas jest w fazie rozwoju. Pewne elementy, takie jak uczenie się poprzez rozmowę z człowiekiem są gotowe, więc postanowiłem nagrać poniższe filmy: AgeBot podłączony jest do internetu. Platforma to gotowa konstrukcja - AlphaBot-PI. Użyłem jej, aby szybciej skupić się na oprogramowaniu. W ostatnim czasie domykałem widoczne na filmach możliwości robota i w międzyczasie zacząłem pracę nad wykorzystaniem kamery (aktualny stan to ~30%). W bliskiej przyszłości platformę mam zamiar wymienić na coś bardziej zaawansowanego lub zbudować swoją, ponieważ ta zaczyna mnie powoli ograniczać (pod względem hardware'u). Jej specyfikacja dostępna jest w internecie (np. na stronie firmy Waveshare), więc nie będę kopiował Jak już zauważyliście - używam Raspberry PI. Oprogramowanie na malinkę napisałem w C++, pozostała część to C++ oraz Python. Systemem jest Raspbian. Do zautomatyzowania instalacji niektórych zależności w systemie (akurat w przypadku samej malinki) używam narzędzia Ansible, a o te krytyczne dla działania aplikacji dba manager pakietów (apt, buduję paczki .deb). Do przetwarzania tekstu użyłem biblioteki Tensorflow, natomiast w procesie uczenia się, robotowi asystuje wnioskowanie. Kamera i przetwarzanie obrazu otworzy wiele nowych drzwi, ułatwi również pracę przy kolejnej domenie - planowaniu zadań. Sam robot jest stosunkowo małą częścią projektu, ale o tym... w przyszłości Każdy feedback mile widziany Pozdrawiam PS: W ciągu kilku dni napiszę posta z trochę bardziej szczegółowymi informacjami odnośnie przetwarzania tekstu - czatowania z robotem
- 27 odpowiedzi
-
- 5
-
-
- AI
- Raspberry Pi
-
(i 1 więcej)
Tagi:
-
Cześć. Robię projekt rozpoznawania jednego z kilku ruchów za pomocą akcelerometru, żyroskopu, STM32F467ZG i pakietu X-CUBE-AI. Opieram się na artykule @Elvis Sztuczna inteligencja na STM32, czyli przykład użycia X-CUBE-AI, ale mam kłopot z jego rozszerzeniem. Próbowałem różnych sposobów, ale nie mogę zrobić sieci, która zamiast wartości binarnej (ruch - brak ruchu) zwróci mi prawdopodobieństwa każdego z 6 wyjść (na razie chciałbym tyle różnych ruchów rozpoznawać). Mam książkę, którą poleca Elvis ("Deep Learning" autorstwa Chollet'a), ale brak doświadczenia z SSN, czy nawet językiem Python mocno mnie ogranicza. Chciałbym też, żeby zamiast jednego wejścia będącego prostą funkcją odczytów z czujników (suma kwadratów odczytów z akcelerometru), f = open('data1.csv','r') values = [] results = [] for line in f: fields = line.strip().split(',') if len(fields) == 4: x = float(fields[0]) y = float(fields[1]) z = float(fields[2]) values.append([math.sqrt(x**2 + y**2 + z**2)]) results.append(float(fields[3])) f.close() układ bezpośrednio korzystał ze wszystkich 6 (3ACC i 3 GYRO). Tutaj fragment kodu Elvisa z STM'a: void MX_X_CUBE_AI_Process(void) { /* USER CODE BEGIN 1 */ float nn_input[AI_FORBOT_AI_IN_1_SIZE]; float nn_output[AI_FORBOT_AI_OUT_1_SIZE]; aiRun(nn_input, nn_output); /* USER CODE END 1 */ } static uint32_t next_ms = 1000; static float nn_input[AI_FORBOT_AI_IN_1_SIZE]; float nn_output[AI_FORBOT_AI_OUT_1_SIZE]; while (HAL_GetTick() < next_ms) {} next_ms += READ_DELAY_MS; lsm6_value_t acc; acc = lsm6_read_acc(); for (int i = 0; i < AI_FORBOT_AI_IN_1_SIZE - 1; i++) nn_input[i] = nn_input[i + 1]; nn_input[AI_FORBOT_AI_IN_1_SIZE - 1] = sqrt(acc.x * acc.x + acc.y * acc.y + acc.z * acc.z); aiRun(nn_input, nn_output); if (nn_output[0] >= 0.5f) HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); else HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); Pomożecie mi zmienić kod Python'a i STM'a, bym mógł go użyć do swoich potrzeb? Naprawdę długo szukałem sposobu i próbowałem wielu rozwiązań, ale albo nie działa mi sieć neuronowa, albo nie kompiluje się projekt w SW4STM32.
