Uczenie się AI

Mangustastream
  • Rejestracja:około 5 lat
  • Ostatnio:około 3 lata
  • Postów:122
2

Witam, czy ktoś byłby tak miły i wyjaśnił na czym polega samouczenie się sieci neuronowej? Przeglądam różne materiały i są tam wyjaśnienia np: ogólna idea procesu uczenia polega na minimalizacji funkcji błędu. Podczas działania algorytmu uczenia dochodzi do iteracyjnego modyfikowania wag w sieci neuronowej. Osobiście uważam, że na Ziemi wystepuje problem w przepływie informacji a dalej to skutkuje na wzajemnym zrozumieniu się. Proszę o wasze odpowiedzi a nie o linki. Linki to ja mogę sobie sam wyszukać.

Nie mogę znaleźć koncepcji sieci neuronowych typu program "hello world" aby zrozumieć tok myślenia innych. Za to w internecie ludzie się prześcigają (a szczególnie wykładowcy uczelni) by przekazywana wiedza brzmiała jak najbardziej profesjonalnie. Im trudniej podana tym lepiej. Jednak ciągle mam w pamięci słowa mojego ulubionego naukowca Alberta: ~kto w prosty sposób nie potrafi wyjaśnić bardzo skomplikowanych rzeczy pokazuje, że tak naprawdę niewiele z nich rozumie.

Znam koncepcję budowy tych sieci. Wiem, że sztuczny neuron ma kilka wejść i dane z tych wejść są obrabiane przez szereg różnych funkcji "w jego środku" i ostatecznie jest produkowana jedna informacja wyjściowa. Właściwie bardziej mnie interesuje solidny schemat blokowy niż linijki kodu źródłowego. Z góry dziękuję.

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:18 dni
3

DR
Po angielsku i to jeszcze link... Zakop xd
99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:5 miesięcy
  • Postów:2420
8

Są dwa rodzaje uczenia:

  1. Z nadzorem - tak jak w szkole na lekcjach matematyki, robisz 2+5= i jak odpowiesz źle to masz wpirdol - czyli nauczyciel powie ci jaka jest poprawna odpowiedź i a ty starasz się to zapamiętać
  2. Bez nadzoru - jeździsz na deskorolce, jak się wypierdoliz i boli dupa to zapamiętujesz że zanim się wywaliłeś zrobiłeś ruch X i że lepiej tego w przyszłości nie robić

W przypadku 1 ponieważ masz odpowiedź, to stosujesz matematyczne wzorki które tak zmodyfikują połączenia w sieci żeby dały wynik bliższy do oczekiwanego.
W przypadku 2 jeżeli odpowiedz sieci jest zdowalająca to zwiększasz wagę(moc) połączenia między neuronami gdy jest duża i osłabiasz gdy jest mała (czyli sieć ma robić to samo tylko mocniej). Gdy opowiedz jest zła to zmiejszasz połaczenia o dużej wadze a zwiększasz te o małej wadze (czyli sieć ma robić coś innego).

Prościej nie potrafię...


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 1x, ostatnio: 99xmarcin
ToTomki
Nie wytłumaczyłeś tego w żaden sposób. W wideo zalinkowanym wyżej możesz sobie zobaczyć o co autorowi tematu chodziło.
Mangustastream
ToTomki - dokładnie, z jego opisu wynika, że jest to takie proste, że aż dziw, że nie jest pionierem algorytmów AI:)))
PA
Szczególnie stosujesz matematyczne wzorki. I tak naprawdę o ile część dotycząca uczenia nadzorowanego jest jeszcze w miarę ok, bo rzeczywiście stosuje się matematyczne wzorki (czy to SGD, czy neuroewolucja, czy jakikolwiek algorytm czegokolwiek), to nienadzorowane jest kwestionowalne. Nienadzorowana sieć to np. sieci kohonena i tam nie "osłabiasz wag neruonów", ewentualnie robisz tuning hyperparametrów i startujesz od nowa.
lambdadziara
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 13 godzin
  • Postów:442
1

wyszukaj w google 'karpathy neural networks for hackers'

KE
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 4 godziny
  • Postów:664
1

Ja zawsze wyobrażałem sobie uczenie sieci neuronowej jak aproksymację. Pewnie to jakiś uber-banalny przypadek, ale co tam. Powiedzmy funkcja do 3 potęgi po prostu:

ja: jak dostaniesz na wejście 1 to proszę, aby na wyjściu było 1
sieć: ok

ja: ile wynosi f(1)?
sieć: 1
ja: dobrze
sieć: ok, fajnie

ja: jak dostaniesz na wejście 2 to proszę, aby na wyjściu było 8
sieć: ok

ja: ile wynosi f(3)
sieć: 12
ja: źle, ma być 27
sieć: ok, poprawiam się

... tych kroków sporo

ja: ile wynosi f(10)
sieć: 999
ja: źle, ma być 1000
sieć: ok, poprawiam się

...

Zobacz pozostałe 4 komentarze
stivens
Ale swoja droga to czy sub-op nie opisuje bardziej interpolacji?
ToTomki
W komentarzu interpolacja, w opisie zjawiska - aproksymacja. Przynajmniej moim zdaniem, ja się tam nie znam.
stivens
No jesli bierzemy wielomian, ktory przechodzi przez wszystkie wskazane punkty to raczej interpolacja
KE
Mogło mi się pomylić w sumie, dawno to było na studiach :P
PA
@stivens: to zależy, jeżeli chcesz aproksymować tylko punkty w danym zakresie to interpolacja, ale poza to już ekstrapolacja (np. proces gaussowki do prognozowania szeregów czasowych)
Mangustastream
  • Rejestracja:około 5 lat
  • Ostatnio:około 3 lata
  • Postów:122
1
hauleth napisał(a):

Może to Ci pomoże.

Póki co zobiłem sobie klasę neuronu z wejściami, funkcjami modującymi i wyjściem. Wie ktoś z was na jakiej zasadzie porównuje się powiedzmy dwa obrazy czy są do siebie podobne czy nie? np: dwa widoki leśne będą do siebie podobne ale obraz miasta już nie.

Czy porównuje się każdy piksel obrazka osobno i na podstawie "odległości" od oryginału wydaje werykt podobieństwa czy są jakieś bardziej upowszechnione metody?

KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1
Mangustastream napisał(a):

Czy porównuje się każdy piksel obrazka osobno i na podstawie "odległości" od oryginału wydaje werykt podobieństwa czy są jakieś bardziej upowszechnione metody?

Przekształcenie Fouriera obrazów
Nie porównuje się piksel po pikselu. Robi się transformatę Fouriera lub inną transformatę i te wyniki porównuje.
Pewnie s też inne metody


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
6

@Mangustastream Nie, nie porównuje sie tak, bo zmniejszysz obraz o 50% i twoje porównanie powie że to 2 różne obrazki bo żaden piksel nie pasuje ;) Cały trik uczenia maszynowego a szczególnie sieci neuronowych polega na tym, że NIE WIADOMO jak sieć neuronowa porównuje. Z tego też powodu sieci nie są jakoś strasznie popularne, bo nie da się w prosty sposób stwierdzić dlaczego działają/nie działają i nie da sie ich poprawić.
Idea jest taka, ze ładujesz w sieć dużo przykładów, aktualizujesz wagi neuronów tak żeby sieć dawała dobre wyniki i voila. W jaki sposób dokładnie odbywa się porównanie? W żaden sposób czytelny dla człowieka.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostałe 6 komentarzy
bakunet
Ok, już nie będę zadawał więcej głupich pytań zanim nie poczytam o tym gdzieś, bo temat wydaje się być ciekawy dla mnie osobiście.
Shalom
@bakunet: tylko że uczenie sieci robi się jednym z kilku standardowych algorytmów, więc sama metoda uczenia w zasadzie niczego ci nie powie bo jest generyczna. Możesz mieć dwie identyczne strukturalnie sieci, uczone tym samym algorytmem i jedna rozpoznaje czy na obrazku jest kot na podstawie obrazka, a druga rozpoznaje czy jutro spadnie deszcz na podstawie pomiarów z jakichś sensorów. A sam model jest zupełnie nieczytelny, bo to tylko mnożenie i dodawanie, które bardzo trudno przełożyć na "domenę".
bakunet
Ale wnioskuję, że 2 identyczne sieci, które prognozują opady deszczu na podstawie tych samych danych, będą dawać zawsze takie same wyniki. Czy się mylę?
PA
@bakunet: jeżeli mówisz o gotowych modelach to tak - jeżeli topologia i wagi są te same, to będą tak samo działały. Ale jeżeli mówisz o tym, że trenujesz sieć 2 razy z zadanymi hyperparametrami to nie, chyba że sobie ustawisz rng seeda.
Shalom
@bakunet: oczywiście ze nie :D Ani nie będą wyglądać tak samo (w sensie wag) ani nie muszą dawać podobnych wyników (w sensie np. dokładności)
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1
Shalom napisał(a):

Z tego też powodu sieci nie są jakoś strasznie popularne, bo nie da się w prosty sposób stwierdzić dlaczego działają/nie działają i nie da sie ich poprawić.

Zabrakło słowa "płytkich" przed "sieci".
Deep Learning to obecnie jedna z najważniejszych dziedzin ML.
Sieci są do tego stopnia popularne, że problem który opisałeś został ujęty w przepisach.
Więcej o tym: http://smarterpoland.pl/index.php/2019/03/bank-bedzie-musial-wyjasnic-czyli-o-wyjasnialnych-modelach-predykcyjnych/

A do OP: opis metody BP: wybierając odpowiednio kolejność przedstawiania danych testowych korygujesz wagi neuronów w celu zminimalizowania błędu. Powtarzasz do skutku.
Sieci uczące się bez nadzoru to jest dopiero ciekawe: https://www.hindawi.com/journals/cin/2016/5139574/
Możesz albo to analizować czytając materiały dostępne w sieci, albo samemu coś kodując. Ja proponuję to drugie rozwiązanie.

edytowany 1x, ostatnio: vpiotr
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4891
0

Ta książeczka załatwia sprawę:
http://neuralnetworksanddeeplearning.com/


Mangustastream
  • Rejestracja:około 5 lat
  • Ostatnio:około 3 lata
  • Postów:122
0

No właśnie Shalom, jak to sieci neuronowe nie są zbyt popularne? Przecież to fundament dzisiejszej technologii. Nawet można już ten dobrze brzmiący slogan wrzucać do reklam smartfonów bo aparaty faktycznie opierają się w jakimś stopniu o decyzję podjętą przez AI co do retuszu czy nasycenia zdjęcia w nocy.

cleverbot.com to zwykła amatorka jaką można było zrobić w BASIC na Atari :) Bo chyba nikt nie zrobił nic lepszego dostępnego w necie?

Zobacz pozostałe 16 komentarzy
Mangustastream
Termin sztuczna inteligencja pojawił się już dawno ale my tutaj rozmawiamy o algorytmie. Kiedyś nie było urządzeń, które mogły nas poznać po twarzy/sylwetce jak np: pies. Właściwie to wszystko odbywa się tak jak pisze Patryk27 na zasadzie przepychania liczb z jednej warstwy danych do innych ale jaka jest kwintesencja uczenia się? W prostych słowach można powiedzieć to tak: modulujesz oryginał i ustalasz próg wartości po przekroczeniu którego dany obiekt nie jest tym za który uchodzi. Dobrym przykładem jest tutaj działanie średniej ważonej i regulacja decyzji za pomocą wag.
Mangustastream
Generalnie termin sztuczna inteligencja powinien IMO kojarzyć się ze sztucznym człowiekiem, który zdał test Turinga a nie algorytmem w telefonie, który pieknie tuninguje zdjęcia bo zapamiętuje pewne warunki. Na obraz i podobieństwo swoje człowiek stworzy krzemową wersję siebie ale nie stworzy w żadnym wypadku istoty wyższej. To, że roboty będą coś robiły szybciej albo będą na coś odporne nie czyni z nich zwycięzców. Ktoś kiedyś powiedział, że programista może zrobić tak silny program szachowy jak sam jest silny w szachy. Z tworzeniem ludzi przez innych ludzi jest podobnie.
Shalom
Ktoś kiedyś powiedział, że programista może zrobić tak silny program szachowy jak sam jest silny w szachy to akurat idiotyzm i bzdura. Już od dawna silniki szachowe są wielokrotnie mocniejsze od najlepszych graczy, a co dopiero od programistów.
PA
@Mangustastream: Generalnie termin sztuczna inteligencja powinien IMO kojarzyć się ze sztucznym człowiekiem, który zdał test Turinga a nie algorytmem w telefonie, który pieknie tuninguje zdjęcia bo zapamiętuje pewne warunki. - nie, bo sztuczna inteligencja ma jasny podział na tą która "tuninguje zdjecia na telefonie" - https://en.wikipedia.org/wiki/Weak_AI i taką która ma symulować życie - https://en.wikipedia.org/wiki/Strong_AI
Mangustastream
Zgadzam się z powyższym terminem podziału sztucznej inteligencji lecz retusz zdjęć na tel jest (dla mnie) zwykłym algorytmem upiększającym zdjęcia mimo, że mogą tam działać podobne rozwiązania co w projektach strong_AI ale to jest jak z odciętym palcem, każda komórka też działa na podobnych algorytmach ale nie jest już nami. Co do szachów Shalom wydaje mi się, że obecnie kwestia nie tkwi w mocy algorytmu a szybkości jego wykonywania. Potrzebowałbyś 25-30% mocy własnego mózgu aby móc go znacznie prześcignąć. Aby to osiągnać musisz "tylko" rozbudować system nerwowy.
99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:5 miesięcy
  • Postów:2420
5

Mój wykładowca zwykł mawiać że "sieci neuronowe to drugie najlepsze rozwiązanie danego problemu". Co można wytłumaczyć następująco:

  • sieć nie jest świadoma problemu który rozwiązuje bo jest narzędziem generycznym. sieć jedyne co potrafi to aproxymacja (przybliżanie) nieznanej funkcji wy = f(we)
  • jeżeli poświęcimy wystarczająco dużo uwagi dla danego zagadnienia X to najprawdopodobniej znajdziemy sposób jego rozwiązania znacznie lepszy niż to co jakakolwiek sieć może osiągnąć

PS. AI w reklamach to często regresja liniowa z bardzo dużą liczbą zmiennych. Wiele wymiarów robi różnicę :P


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 1x, ostatnio: 99xmarcin
Miang
fajny, gdzie są tay wykładowcy?
99xmarcin
http://www.mini.pw.edu.pl/~lucjan/pl/glowna.html, ojciec Piotra Stappa (znanego w świecie .net'owym, teraz przejął dotnetomaniaka)
lambdadziara
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 13 godzin
  • Postów:442
0

ja szukam gdzies implementacji lstm from scratch, zeby dowiedziec sie jak dziala dokladnie ale nie moge nigdzie znalezc

Zobacz pozostałe 3 komentarze
vpiotr
Wygląda na to, że LSTM ma wbudowaną wykładniczą średnią kroczącą (EMA) z parametrem zapominania zależnym od wejścia i historii.
lambdadziara
w 'deep learning in python' cholleta jest to dosc prosto opisane, ale cholet wielokrotnie przestrzega w ksiazce ze przewidywanie cen gieldowych z RNN nie dziala bo 'nie mozna jechac patrzac caly czas w tylne lusterko' czy cos takiego
PA
Twój cytat nie mówi, że nie działa. Prognozowanie szeregów czasowych na podstawie poprzednich pomiarów działa do momentu kiedy trend się nie złamie. Na giełdzie bardzo często się łamie.
lambdadziara
part a znasz ksiazke 'professional automated trading' z kodem w common lisp. Tamten gosc ma idea wykorzystania czegos w rodzaju algorytmu genetycznego do wybrania odpowiedniej strategii na odpowiedni 'stan obecny' gieldy (mean-reverting, trend-following, itp)
PA
z kodem w common lisp - nie jestem aż tak stary.
Mangustastream
  • Rejestracja:około 5 lat
  • Ostatnio:około 3 lata
  • Postów:122
0
0xmarcin napisał(a):
  • sieć nie jest świadoma problemu który rozwiązuje bo jest narzędziem generycznym.

Wydaje się, że sieć nie jest świadoma problemu ale i też jeszcze nie ma takich urządzeń. Ale kiedy maszyna mówi i myśli i przeżywa emocje dokładnie w ten sam sposób co Ty zaczynasz się zastanawiać gdzie jest granica między świadomością a sztuczną świadomością.

Zobacz pozostałe 5 komentarzy
vpiotr
@Patryk27: zależy jakie emocje. Te amerykańskie ("lovely!", "happy to help!", "I can't wait for") myślę że łatwo jest symulować. Co zresztą już się odbywa w robotach konwersacyjnych.
Patryk27
@vpiotr: to jest ekspresja emocji (podobnie jak ekspresją jest np. podskakiwanie albo wyrywanie sobie włosów).
vpiotr
Jesli do tego dolozyc chaotycznosc dzialan uzalezniona od stopnia rozemocjonowania to czym to sie bedzie roznilo od obserwowalnych emocji?
Patryk27
Podobnie jak z inteligencją, dla zewnętrznego obserwatora rozróżnienie może być w zasadzie niemożliwe :-)
vpiotr
👍
BO
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:93
0

Tezy współczesnych fizjologów:

  • co ma emocje, nie może być maszyną
  • maszyna z emocjami = czajnik z wrzątkiem
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)