AI engineer, ML engineer kilka pytań na start

AI engineer, ML engineer kilka pytań na start

Wątek przeniesiony 2025-02-03 13:45 z Nietuzinkowe tematy przez pradoslaw.

MI
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:85
0

Czy są tu jacyś ludzie, którzy pracują w takich zawodach jak inżynier sztucznej inteligencji, uczenia maszynowego itd.?
Chciałbym się co nieco dowiedzieć nt. specyfiki zawodu oraz tego czy wcześniej używaliście takich narzędzi jak JMP czy od razu implementowaliście i testowaliście to w np. Pythonie.

edytowany 1x, ostatnio: Mirai
Grzegorz Wojciech Miącz
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:3
2

Ja się re-kwalifikowałem z Java Developera i piszę obecnie w pythonie. Jest dość wygodny choć hobbistycznie mam w planach popisać trochę sieci w Javie / C++. JMP Pro nie używałem nigdy.

Specyfika zawodu - masz problem, zastanawiasz się nad faktorami na które zwrócić uwagę (jak jesteś statystyką to sobie patrzysz i wybierasz co liczysz, jak jesteś siecią neuronową to w zależności od metody). Dzielisz set na 3 części (np 6:2:2) i sprwadzasz czy to co przewidziałeś na podstawie danych z zestawu dużego, sprawdza się w przypadku dwóch mniejszych.

Voila. To od strony technicznej. Od strony bardziej "is it fun"? Jeśli liczysz na tworzenie AI do robotów, to najwięcej co możesz otrzymać obecnie na rynku to NLP do np RUMBY, żeby dobrze odkurzała, tak mi się wydaje.

MI
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:85
0
Grzegorz Wojciech Miącz napisał(a):

Ja się re-kwalifikowałem z Java Developera i piszę obecnie w pythonie. Jest dość wygodny choć hobbistycznie mam w planach popisać trochę sieci w Javie / C++. JMP Pro nie używałem nigdy.

Specyfika zawodu - masz problem, zastanawiasz się nad faktorami na które zwrócić uwagę (jak jesteś statystyką to sobie patrzysz i wybierasz co liczysz, jak jesteś siecią neuronową to w zależności od metody). Dzielisz set na 3 części (np 6:2:2) i sprwadzasz czy to co przewidziałeś na podstawie danych z zestawu dużego, sprawdza się w przypadku dwóch mniejszych.

Voila. To od strony technicznej. Od strony bardziej "is it fun"? Jeśli liczysz na tworzenie AI do robotów, to najwięcej co możesz otrzymać obecnie na rynku to NLP do np RUMBY, żeby dobrze odkurzała, tak mi się wydaje.

Fajnie, że wreszcie ktoś odpisał. Może trochę zabrzmi to jak durne marzenie, ale marzy mi się zrobienie swego rodzaju bota, komunikatora takiego jak Siri czy Aleksa, ale niezależnego od platformy, który byłby w stanie pozytywnie przejść test Touringa.
Dlaczego dzielisz dane na trzy części a nie na dwie? Bo z tego co teraz się uczę to dane dzieli się na dwie części np. 60:40% tzw. na dane do wytrenowania i na dane testowe. Chyba, że coś jest jeszcze przede mną.

Co do drugiej części to nie rozumiem skrótu NPL do np. RUMBY. To są jakieś frameworki do Pythona pokroju Tensorflow czi Pandas?
Chcę ogólnie zrobić taką wlasną appkę, żeby móc uprzyjemnić różne nudne rzeczy np. możliwość dyktowania SMS'ów czy tłumaczenia w czasie rzeczywistym skanu dokumentu w obcym języku.

Wybacz, za śmiałość jeśli to zbyt osobiste pytanie, ale dlaczego zdecydowałeś się przekwalifikować z Javy? Ogólnie wszędzie jest polecana jako dość rozwojowy język, dużo jest ofert pracy no i przedział wynagrodzenia również dość duży (od 3-4 do nawet ponad 20 tys. złotych). Za granicą pewnie to większe kwoty nawet.

edytowany 1x, ostatnio: Mirai
Grzegorz Wojciech Miącz
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:3
2

Poczytaj o RASA framework. Naprawdę fajny framework (do chatbotowania) i ma też voice recognition z tego co pamiętam.

Zbiór na 3 części bo mam treningowy, testowy i weryfikacyjny. To w przypadku sieci neuronowych kiedy sprawdzasz metryki podczas uczenia (co którąś tam epokę). Wtedy na treningowym się uczy, na testowym sprawdza podczas uczenia a weryfikacyjny to ten już ostateczny, który daje Ci najwięcej informacji o szeroko pojętej skuteczności modelu.

NLP - Natural Language Processing. Żeby program "rozumiał" co do niego mówisz. Do realizacji NLP służy wiele narzędzi. Tu przydatne są szczególnie Rekurencyjne Sieci Neuronowe, głównie ze względu na to, że pamiętają "context". Algorytmy to na przykład LSTM, GRU, czy bardziej wyrafinowane - BERT, ELMO, RoBERTa itp. Ich implementacje są dostępne np. w Kerasie, ale też w dedykowanym frameworku do NLP - FLAIR.

Do dyktowania SMS-ów wystarczy Ci API google. Do tłumaczenia w czasie rzeczywistym cóż... Pewnie trzeba by jakiegoś prostego OCR-a napisać (ogarnij przykład zbioru MNIST, tam są cyfry 0-9 kategoryzowane - skanowane).

Jeśli chodzi o podjęcie decyzji, chodziło o przeniesienie się z działu wdrożeń do działu Core. Po 6 latach w jednym miejscu człowiek czasem ma ochotę na zmianę. No i chciałem nauczyć się czegoś o AI/ML, a że pojawiła się taka możliwość (ja coś dam wiedzy na pewne tematy od siebie, oni mi dadzą możliwość nauczenia się). To skorzystałem.

Generalnie nie licz na ogromny odzew - mało jest specjalistów od ML w Polsce. Ja sam siedzę w tym od września zeszłego roku dopiero, ale odnalazłem się ideolo.

Z moich propozycji co mógłbyś zrobić żeby ogarnąć temat to:

  1. Napisz prostą sieć od podstaw (bez żadnego frameworka typu tensorflow/keras). Naprawdę dużo łatwiej Ci będzie.
  2. Napisz rozpoznawanie obrazków (zbiór danych MNIST w kerasie). Tu też jest do tego tutorial
  3. Następnie możesz poczytać (jeśli jeszcze nie ogarniesz do końca) co to jest funkcja aktywacji, optimizer. To tak w kontekście Sieci neuronowych
  4. No a dalej to już możesz iść albo w sieci CNN (to głównie do rozpoznawania obrazu albo np spektrum dźwięku - np do rozpoznawania mowy) albo RNN (tu wspomniane wcześniej rozpoznawanie tekstu i kontekstu).

No i generalnie bierz się i rób. Wymyśl sobie projekt i konsekwentnie realizuj :)

MI
Zastanawiam się od czego zacząć, żeby stworzyć prostą sieć. Python'a w miarę rozumiem.
MI
Mały odzew od ML to dla mnie zaleta. W javie jest mnóstwo ludzi i trochę ciężko się przebić jako junior. Już łatwiej jako web developer.
Grzegorz Wojciech Miącz
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:3
1

Tak jak napisałem wyżej.
Ten gość ma całkiem fajne tutoriale: https://victorzhou.com/blog/intro-to-neural-networks/

MI
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:85
0
Grzegorz Wojciech Miącz napisał(a):

Tak jak napisałem wyżej.
Ten gość ma całkiem fajne tutoriale: https://victorzhou.com/blog/intro-to-neural-networks/

Dzięki. Mam ogólnie jeden przedmiot związany z uczeniem maszynowym, tylko jest on prowadzony, mówiąc delikatnie, w specyficzny sposób. Nie umniejszając roli wykładowców, po prosku jest położony największy nacisk na podstawy teoretyczne, natomiast implementacja wg zasady ,,znasz teorię to implemementuj".
Korzystam obecnie również z jednego z kursów na udemy bodajże się nazywa Machine Learning from A to Z czy jakoś tak. Dosyć dobrze do mnie trafia, no i lubię jak ktoś używa pewnego słownictwa w oryginale, a nie na siłę próbuje niektóre skróty i zwroty tłumaczyć na polski.

Ogólnie to dotychczas moim głównym obiektem nauki była Java. Teraz trochę spodobało mi się grzebanie w web-devie. Ale to uczenie maszynowe jest fajne, bo jak sam stwierdziłeś mało jest osób u nas które się tym zajmują. A jeśli chodzi o javę to niezły poziom trzeba reprezentować, żeby się wybić zwłaszcza wśród zalewie projektów typu ,,lista do zrobienia", ,,kalkulator". Albo jakiś kopiuj-wklej z bootcampów

RE
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 4 godziny
1

ku potomności, ogólny przegląd różnego typu sieci bez wchodzenia w szczegóły przy wykorzystaniu keras
https://helion.pl/ksiazki/deep-learning-praca-z-jezykiem-python-i-biblioteka-keras-francois-chollet,delepy.htm#format/d
Książka na początek w porządku.
z kolei w tej są nie tylko NN ale i starsze metody oparte o SVM itp. Tylko tu trochetrudniej bo to w tensorflow.
https://helion.pl/ksiazki/uczenie-maszynowe-z-uzyciem-scikit-learn-i-tensorflow-aur-lien-g-ron,uczema.htm#format/e


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)