Matematyka od podstaw

0

Hej!
Pytanie na dziś mam takie, jak ugryźć matematykę od podstaw, żeby móc zacząć rozumieć notację matematyczną w książkach o algorytmach i żeby móc wystartować z czymś więcej niż programowanie aplikacji?

Prośba o info, wskazówki i czy będę musiał się cofnąć do czasów maturalnych?

PS: Nigdy nie miałem wiele wspólnego z matematyką.

0

Na początek dużo nie trzeba, wstęp do CLRS Ci wystarczy.

0

@lion137: myślałem, żeby sobie kupić wszystkie podręczniki z matematyki podstawowej + rozszerzonej do liceum, a po przerobieniu, przejść na literaturę akademicką.
Inaczej nie widzę szansy porobić coś hobbystycznie z AI czy ML, bo nie rozumiem matematycznej terminologii.
Programować potrafię, ale zarabiam na Web devie, nie chciałbym już zawsze klepać aplikacyjek, które korzystają z gotowych rozwiązań. Sam bym chciał popracować nad algorytmem kompresji, rozpoznawaniem obrazów etc.

3

Wydaje mi się, że nie wiesz na co się piszesz. :) Jeżeli studiowałeś jakiś techniczny kierunek to powinieneś mieć podstawy algebry, analizy i statystyki. Jest szansa, że nie miałeś matematyki dyskretnej więc to musiałbyś nadrobić. Jeżeli jednak nie studiowałeś niczego technicznego to daleka droga przed Tobą. Najłatwiej po prostu iść na studia, dostajesz wtedy plan, motywacje, weryfikacje a na końcu potwierdzenie, że rzeczywiście coś umiesz. Jeżeli jednak chodzi o hobbystyczne zajmowanie się tematem, to powinieneś zagłębić działy matematyki które wymieniłem wcześniej. Ze statystyki nie pomogę, ale źródła które mogą Cię interesować to:
Analiza:

Oczywiście to wszystko do tego, żeby rozumieć to co inni stworzyli. Jeżeli przez popracować nad algorytmem kompresji, rozpoznawaniem obrazów etc. masz na myśli wynajdywanie czegoś swojego, to bez doktoratu może być ciężko. Powodzenia. :)

1

@tdudzik: poleciałeś z materiałem ;)

Najpierw zapoznaj się tym co jest wymagane na wstępie (do przyjęcia do college)
Po angielsku bo i tak albo się nauczysz na tyle języka żeby swobodnie z materiałów korzystać albo pójdziesz na polską uczelnię;

Zgrabna playlista, zobacz też inne playlisty z tego kanału:

https://www.princetonreview.com/college/sat-information
The SAT is an entrance exam used by most colleges and universities to make admissions decisions.

https://theswanschool.edu.pl/aktualnosci/matura-amerykanska-sat-wszystko-co-warto-wiedziec/

Oczywiście nie mam na myśli zdawanie testów ale materiał do ogarnięcia na start, przed rozpoczęciem właściwej nauki jaką planujesz.

5

Studiowałem matematykę 5 lat i nawet skończyłem z sukcesem. Dodatkowo i na studiach i przez 20 lat po często coś doczytywałem i przerabiałem (nie że dużo, ale trochę zawsze).
I nie ma lekko - nadal męcze dość wolno wszelkie papiery. Jak coś na chwilę opanuje (krypto, finansowke, rachunek lambda, type systems) - to za pół roku tracę biegłošć... i od nowa.

I do tego... nadal zasadniczo - piszę proste aplikacje.

1

@NeutrinoSpinZero: Warto by było abyś napisał Nam dlaczego chcesz się uczyć matematyki: grafika, AI, optymalizacja, kryptografia, coś innego?

Niestety, będą "angielskie" sugestie, ponieważ uważam, że gdy zerkniesz do kodu opartego o model matematyczny (np. scikit-learn), to ucząc się matematyki w tej wersji będzie Ci w przyszłości szybciej i wygodniej się w nim zorientować. Poczynając od notacji (p, q, etc), po nazwy operatorów, funkcji, transformacji itp - przejście z aparatu matematycznego na kod będzie też dla Ciebie bardziej naturalne (szczególnie jeśli i tak już zapomniałeś materiały z szkoły średniej). Przy okazji, starałem się wybrać darmowe materiały.

Na dziś dziejszy, jeśli czujesz, że nie masz podstaw, zabrałbym się za, już polecany, Khan Academy. Możesz znaleźć statystykę albo algebrę i idąc wstecz (po wymaganiach) uzupełnić braki. Super się sprawdza taki sposób nauki, jeśli nie masz za dużo czasu, chcesz powrócić do materiałów, itd. Brilliant jest na trochę wyższym poziomie, ale niestety bez sporej inwestycji nie za bardzo można z niego skorzystać codzień.
Poparłbym to Schaum's Outline of Essential Computer Mathematics - mam schowane w szufladzie bo koledzy się ze mnie śmieją (Schaum's Outline - to takie coś jak seria 'dla kretynów') - może ktoś to już nawet przetłumaczył na polski? Dość skondensowana wiedza, ale podana w strawny sposób.

Teraz taka moja wersja, bardziej rozwinięta, sugestie szerokie - bo mam nadzieję, że może ktoś w wątku się dołączy i swoje sugestie i/lub krytykę poczyni. To z doświadczenia, czyli nauki matematyki na potrzeby dogadania się z modelarzami rzeźb abstrakcyjnych w masie ryzyka; zwanego także podejściem statystycznym, wieśniaka kiszącego dane w sosie ery-pre-tensorowej, na potrzeby inteligencji ręcznie wyskrobanej spomiędzy scalaków. ;-)

U mnie praca (potrzeba komunikowania się z quantami) wymusiła szybkie poduczenie się języka (i matematyki). Zabrałem się za to z YouTube i MIT OpenWare - wciąż uważam, że to jedne z lepszych kursów, ale są typowo akademickie, siedzisz i kujesz dopóki nie załapiesz, tak jak poprzednio podlinkowane:Single Variable Calculus, Multivariable Calculus, Linear Algebra i Differential Equations.
Wersje na YouTube trochę to łatwiej tamże konsumować. Nauka zabrała mi 8 miesięcy, praktycznie co wieczór, i przez jakieś 2 lata spokojnie mogłem podjąć się tłumaczenia nawet dość zaawansowanych koncepcji, ale że takiej potrzeby nie było i nie używam już tej wiedzy od kilku dobrych lat, nie polecałbym Ci od tego zaczynać. Raczej z dystansu pooglądać, tak tylko żeby się zorientować o co biega w algebrze (przed algebrą liniową, bardzo trudno teraz uciec).

Statystykę podciągałem z The Little Handbook of Statistical Practice i Introduction to Statistical Thought. Przeglądałem i do dziś przeglądam https://en.wikibooks.org/wiki/Statistics i https://www.openintro.org/stat/textbook.php
Przerobiłem też Think Stats - szczerze polecam. Do dziś nie skończyłem Think Bayes, które już nie jest takie przyswajalne, mam kompleksy z tego powodu ;-) i chyba już nie rozciągnę czasu aby zabrać się za kompleksowe myślenie (z tejże serii).

Jakieś 3-4 lata temu, już pod AI, zabrałem się za The Elements of Statistical Learning, An Introduction to Statistical Learning, Bayesian Reasoning and Machine Learning i Gaussian Processes for Machine Learning. W każdej z nich utknąłem, gdziś tak w 1/4 - jeśli mam jakiś projekt, szukam konkretnej wiedzy pod niego. Trochę czuję, że Gaussian Processes warto byłoby skończyć, bo drzemie tam wiedza iście tajemna.
(edit, bo zapomiałem) Mathematics for Machine Learnig jest całkiem sprawnie dostarczone.

Zrobiłem jedną z poprzednich wersji kursu Essential Math for Machine Learning: Python Edition - polecam, praktycznie i na temat. Kursów z resztą (szczególnie statystyki) jest na Coursera, edX i w wielu, wielu innych platformach MOOC całem mnóstwo (o dość dużym skew jakości niestety), Introduction to Computational Thinking and Data Science jest całkiem spoko w tym temacie.

Polecam Math Adventures with Python autora Hacking Math Class, dzięki tej książce dzieciaki które w ramach takiego klubu kodowania męczyłem nie umarły z nudów (a ja z upokorzenia).

Przeczytałem niedawno Good Math, a właściwie przekartkowałem, poziom dość podstawowy, ale napisane w miarę żwawo, na temat i myślę, że jeśli wpadnie Ci w ręce warto poświęcić na nią czas. Co chwila zaglądam do Guide to Essential Math, ma książka ta wiele wad, ale nagromadzenie materiału w jedym miejscu robi z niej całkiem dobry punk odniesienia (można ją też wykorzystać w pomniejszych konfliktach biurowych, o ile ktoś nie wyciągnie Numerical recipes lub jaką matematykę konkretną albo pleśniejący tom Knuth'a).

Także jak widzisz, życie można na tym stracić, a nerwy i wzrok zdrowy to już na 99.(9)% - zastanów się więc Waść po cóż Ci to?

1

Możesz poszukać wśród opublikowanych wykładów z MIT, jak uwielbiam tego pana

0

@stic: tak jak napisałem wcześniej. Chciałbym zrobić coś więcej niż operowanie na istniejącym dorobku.
Stale tylko używam i łączę biblioteki, które już ktoś napisał.

Chciałbym najpierw zdobyć ogólne rozeznanie, a później zdecydować co zgłębiać.

Moje motywy to:

  • zmniejszenie przepaści wiedzy z zakresu CS między mną i innymi pracownikami branży/firmy i pozbycie się kompleksu niższości
  • hobbystyczne zajęcie się czymś znaczącym, trudnym i złożonym
  • aplikacje piszę w pracy, potem optymalizuję ten system i tyle, działam na abstrakcji, na czymś już wymyślonym i dobrze funkcjonującym
  • nie wiem jak to wszystko się łączy, mam w głowie tylko hasła typu algorytmika, matematyka dyskretna, równania różniczkowe... i jak jeleń siedzę i słucham, jak ktoś o tym mówi ;/

Tak na dobrą sprawę to nie wiem czego chcę :) Może bardziej właściwym będzie kurs from nand to tetris, do którego nie miałem czasu przysiąść.

Także jak widzisz, życie można na tym stracić, a nerwy i wzrok zdrowy to już na 99.(9)% - zastanów się więc Waść po cóż Ci to?
Zostań tu gdzie jesteś, rób jenkinsy, kubernetesy i się ciesz :) No może, może.

1
NeutrinoSpinZero napisał(a):

Chciałbym najpierw zdobyć ogólne rozeznanie, a później zdecydować co zgłębiać.
Moje motywy to:

  • zmniejszenie przepaści wiedzy z zakresu CS między mną i innymi pracownikami branży/firmy

@MateInf jak pisał, kończy studiować matematykę, więc się nim za bardzo nie sugeruj, bo dla niego cormenologia stosowana to przekąska przed obiadem ;)

Nie sugeruj się wykładami MIT ani Ważniakiem.
Jak chcesz sięgać o fajne źródła "for mere mortals" to orientuj się co oferuje (YT, edX, itp) UCLA Berkeley. Bez licencjatu z matmy da radę.

0
NeutrinoSpinZero napisał(a):

@stic: tak jak napisałem wcześniej. Chciałbym zrobić coś więcej niż operowanie na istniejącym dorobku.
Stale tylko używam i łączę biblioteki, które już ktoś napisał.

Chciałbyś pisać biblioteki, które ktoś będzie wykorzystywał? Pisać więcej swojego kodu? - to raczej wygląda na aspiracje związane z Twoją wymarzoną pracą ;-)

Chciałbym najpierw zdobyć ogólne rozeznanie, a później zdecydować co zgłębiać.

Proponuję najpierw określić cel - temat jest cholernie szeroki i samo rezeznawanie się może zająć dobrych kilka miesięcy. Jakiego typu aplikacje / systemy chciałbyś pisać, jeśli nie interesuje Cię już integracja. Wysoko (np. ML), czy nisko poziomowe (np.kernel, kryptografia), czy też może coś pomiędzy (np.bazy danych, biblioteki wszelkiej maści, kompilatory, silniki 3D, narzędzia które inni koderzy będa używać, etc). Ostrzegam z doświadczenia ciekawsze tematy w IT często gorzej płacą - skubani na górze się zorientowali, że jest więcej chętnych do takiej roboty.

Moje motywy to:

  • zmniejszenie przepaści wiedzy z zakresu CS między mną i innymi pracownikami branży/firmy i pozbycie się kompleksu niższości

Hym, jeżeli już robisz coś dla innych a nie dla siebie (nie wiem po co, ale Twoja to decyzja i życie), to poleciłbym coś do przyszpanowania z branży. Jeśli (ze zrozumieniem) przeczytasz wspomiane przez Ciebie The Elements of Computing Systems (choć to trochę bardziej sprzętowe podejście), Types and Programming Languages, Understanding Computation, The New Turing Omnibus, The Little Schemer czy Structure and Interpretation of Computer Programs - to już będziesz ponad poziom przeciętnego Kazimierza, Ryśkom zaś zaczniesz dorastać do pięt. Coś mi się wydaje że to już taki zawód, zawsze można się więcej nauczyć, coś tam wyszperać, w czymś wyspecjalizować i zagiąć kolegów - pytanie tylko czy warto?

  • hobbystyczne zajęcie się czymś znaczącym, trudnym i złożonym

W jakiej dziedzinie? Spokojnie mogę polecić przyłączenie się do PostgreSQL, OpenCV czy Firefox'a, nudzić się też nie będziesz pracując nad którymkolwiek z kompilatorów / interpreterów. Niestety, jeżeli ktoś Ci za tą pracę nie płaci, nie za bardzo wiem jak mógłbyś dorobić się znaczącej kontrybucji (chyba, że masz wszystkie weekendy i popołudnia wolne).

  • aplikacje piszę w pracy, potem optymalizuję ten system i tyle, działam na abstrakcji, na czymś już wymyślonym i dobrze funkcjonującym

I nie możesz tego wykorzystać jako odskoczni? Nie da się tego przetestować lepiej, zautomatyzować czegoś w CD/CI, poczyścić domeny, przeczyścić tych kilku klas narzędziowych, których wszyscy boją się dotknąć? etc, etc...

  • nie wiem jak to wszystko się łączy, mam w głowie tylko hasła typu algorytmika, matematyka dyskretna, równania różniczkowe... i jak jeleń siedzę i słucham, jak ktoś o tym mówi ;/

No ale w jakim kontekście to mówią? System analizje mowę, rozpoznaje obrazy, nietypowy ruch w sieci? Coś jest waszą domeną, jakiś jej matematyczny model wykorzystujecie (tj. rozumuję tak z haseł, które przywołujesz) - jeżeli chcesz temat ogarnąć, spróbowałbym dobrać słowa kluczowe - jakaś teoria, czyjaś funkcja/transformata, zestaw bibliotek. Stąd w miarę prosta droga do https://arxiv.org/ i szukasz prac na ten temat - zaczynasz czytać, nie kumasz, Wikipedia, nie kumasz, cofasz się kilka kroków i zadajesz pytania (ale już w konkretnym kontekście). Tylko w cykl nie wpadnij ;-)

Tak na dobrą sprawę to nie wiem czego chcę :) Może bardziej właściwym będzie kurs from nand to tetris, do którego nie miałem czasu przysiąść.
Też dobry, a Teris jeszcze lepszy..

Także jak widzisz, życie można na tym stracić, a nerwy i wzrok zdrowy to już na 99.(9)% - zastanów się więc Waść po cóż Ci to?
Zostań tu gdzie jesteś, rób jenkinsy, kubernetesy i się ciesz :) No może, może.

Czyli mówisz, że z DevOps'a na takiego back-end kodera chciałbyś?

0

Coursera i edx oferują kursy z uczelni wyższych. Jenak pójście na studia to też dobry pomysł, poznasz trochę ludzi, chociaż na topowe uczelnie może być ciężko się dostać na matmę (na inf nawet nie licz).

0

@discoStar: podjąłem decyzję o nauce na własną rękę z materiałów uczelnianych {MIT, Princeton}.
Wezmę też książki do analizy po polsku, żeby lepiej zrozumieć.

I ważne pytanie, którego nie zdałem:
Czy mogę olać zaległości że szkoły średniej?
Bardziej mi zależy na abstrakcji, umiejętności czytania wzorów matematycznych oraz wyciagania wniosków niż liczenie sinusa czy pola trapezu.
A jeśli coś powtórzyć to który zakres wiedzy?

1
NeutrinoSpinZero napisał(a):

I ważne pytanie, którego nie zdałem:
Czy mogę olać zaległości że szkoły średniej?

Olej. Dajesz radę, tylko czasem nie rozumiesz? Nie wracaj do kursu maturalnego.
Olej. Nie dajesz rady co trochę. Sam widzisz, nie ma co brnąć dalej, bo braki masz w podstawach. Więcej czasu zaczynasz tracić z powodu braków (i będziesz tracić jescze więcej aż zupełnie utkniesz) niż byś raz a dobrze nadrobił te braki.

Musisz umieć wybrać ścieżkę między "perfekcyjną panią domu" a "utoniemy w bałaganie". Nie masz być wykuty na blachę bo kolokwium z tego pisać nie będziesz, ale masz z mała pomocą internetu mieć wiedzę wystarczającą na korzystanie z niej i jej poszerzanie.

Nie rób sobie repetytorium z matury, bo szkoda czasu. Zobacz co będzie ci potrzebne do obecnej nauki i na tym polu nadrób większość braków.

0

@BraVolt: programowania uczyłem się tak, że jak nie znałem jakiegoś zagadnienia, to szukałem informacji na dany temat i uzupełniałem wiedzę. Czy w tym przypadku takie podejście powinno się sprawdzić?

0

@NeutrinoSpinZero: Co potrafisz z szkoły średniej?

0

@Hodor: myślę, że nie wiele. Jakieś działania arytmetyczne, trochę geometrii, funkcje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1