Glossariusz : G(o) !

Governance frameworks [Ramy zarządzania]: Określ, jak planować, wdrażać i nadzorować.

Gramma-Leacha-Blileya Ustawa (GLBA): Ustawa, która wymaga silnej ochrony danych w instytucjach finansowych.

Granularity [Ziarnistość]: poziom szczegółowości.

Group policy objects [Obiekty zasad grupy (GPO)]: w systemie Windows zasady bezpieczeństwa, które można wypchnąć do poszczególnych hostów. Wytyczna. Uznaniowe wytyczne dotyczące wdrażania.

Glossariusz : F(ire) !!!

Face recognition [Rozpoznawanie twarzy]: rozpoznawanie biometryczne na podstawie rysów twarzy osoby.

Fail safely [Niepowodzenie bezpiecznie]: jeśli ochrona zawiedzie, robi to w sposób, który nie zagraża bezpieczeństwu, nawet jeśli oznacza to niedogodności.

Failure to enroll [Niepowodzenie rejestracji (FTE)]: Gdy dana osoba nie może zarejestrować się w systemie biometrycznym.

Fałszywa akceptacja: dopasowanie do szablonu, którego nie należy tworzyć.

Fałszywej akceptacji współczynnik (FAR): odsetek osób, które nie powinny być dopasowane.

Fałszywie negatywny: brak raportu o prawdziwych atakach.

Fałszywe otwieranie: metoda zatrzymywania zalewów SYN, która wymaga odpowiedzi od atakującego, zanim przekaże żądanie do serwera docelowego.

Fałszywy atak otwarty: Atak typu Denial-of-Service, w którym osoba atakująca wysyła segmenty SYN, ale nigdy nie odpowiada na odpowiedzi SYN / ACK.

Fałszywie pozytywny: nazywanie niewinnego nawet problemem bezpieczeństwa. Fałszywy alarm.

Fałszywe odrzucenie: suplikant jest nieprawidłowo odrzucany jako dopasowanie do szablonu, gdy kandydat powinien zostać zaakceptowany jako dopasowany.

Fałszywy wskaźnik odrzucenia (FRR): odsetek osób, które powinny zostać dopasowane, a nie są.

Federalna ustawa o zarządzaniu bezpieczeństwem informacji (FISMA): Nakłada procesy bezpieczeństwa na agencje rządowe i wykonawców.

Federalne zasady postępowania cywilnego: w amerykańskim systemie sądów federalnych zasady określające procesy mające zastosowanie do prawników i sędziów w sprawach cywilnych.

Federacyjne zarządzanie tożsamością: system, w którym dwie firmy mogą przekazywać sobie wzajemne potwierdzenia tożsamości bez umożliwiania drugiej stronie dostępu do danych wewnętrznych.

Fields [Pola]: część nagłówka lub zakończenia wiadomości.

File/directory data backup [Kopia zapasowa danych plików / katalogów]: tworzenie kopii zapasowych danych w określonych plikach i katalogach.

File/directory encryption [Szyfrowanie plików / katalogów]: szyfruje tylko określone pliki i katalogi, które nakazujesz szyfrować.

File Transfer Protocol (FTP): Protokół, który umożliwia masowe przesyłanie plików między hostami.

Finansowy Audyt: bada procesy finansowe pod kątem wydajności, skuteczności i odpowiednich kontroli.

Finansowa Kradzież: sprzeniewierzenie majątku lub kradzież pieniędzy.

Fingerprint recognition [Rozpoznawanie odcisków palców]: Rozpoznawanie biometryczne na podstawie wzorów odcisków palców.

Firewall appliances [Urządzenia zapory ogniowej]: Gotowe zapory ogniowe.

Firewall policies  [Zasady zapory]: instrukcje wysokiego poziomu służące do prowadzenia implementacji zapory.

Firewall policy management server [Serwer zarządzania zasadami zapory]: Aserver, który posiada bazę danych zasad zapory, w której znajdują się zasady firmowe.

Fixes [Poprawki}: obejścia, poprawki lub inne sposoby radzenia sobie z luką.

Flagowe Pole: pole jednobitowe.

Forensics evidence [Dowody kryminalistyczne]: dowody, które są dopuszczalne w postępowaniu sądowym.

Forest [Las]: hierarchia organizacyjna zawierająca wiele drzew.

Frames [Ramki]: (1) komunikat w warstwie łącza danych. (2) W multipleksowaniu z podziałem czasu: krótki okres czasu, który jest dalej dzielony na szczeliny.

Fraud [Oszustwo]: ataki, które oszukują ofiarę do zrobienia czegoś wbrew interesom finansowym ofiary.

Fraud and abuse triangle [Trójkąt oszustwa i nadużycia]: metoda świadomości behawioralnej, która sugeruje, że do popełnienia złych czynów ludzie potrzebują okazji, motywacji i umiejętności zracjonalizowania swoich działań.

Free space  [Wolne miejsce]: miejsce na dysku twardym, które może zawierać pliki, które zostały usunięte logicznie, ale nie zostały usunięte fizycznie. Pliki mogą być przechowywane na wolnym miejscu.

Full backup [Pełna kopia zapasowa}: tworzenie kopii zapasowych wszystkich określonych plików i folderów.

Funkcjonalność: Właściwość normalnego działania systemów i sieci.

Glossariusz : E(eeeee…)

EAP-TLS: Rozszerzony standard EAP wykorzystujący TLS, który wymaga, aby zarówno klient, jak i strona uwierzytelniająca posiadały certyfikaty cyfrowe.

Eavesdropper [Podsłuchujący]: ktoś, kto przechwytuje wiadomość i czyta ją.

Echo: typ pakietu, który prosi host odbierający o zwrot odpowiedzi, jeśli jest aktywny.

E-commerce service [Usługa handlu elektronicznego]: dodatkowe oprogramowanie potrzebne do kupowania i sprzedawania, w tym katalogi online, wózki sklepowe, funkcje płatności, połączenia z wewnętrznymi bazami danych w firmie oraz łącza do organizacji zewnętrznych, takich jak banki.

Egress filtering [Filtrowanie wychodzące]: Filtrowanie zapory sieciowej dla pakietów opuszczających sieć.

Elektromagnetyczne Zakłócenia (EMI): niechciana energia elektryczna pochodząca z urządzeń zewnętrznych, takich jak silniki elektryczne, lampy fluorescencyjne, a nawet pobliskie przewody transmisji danych.

Elektroniczna Poczta (e-mail): wiadomości elektroniczne wymieniane między użytkownikami przez Internet.

Elektroniczny Podpis: ciąg bitów dodawany do wiadomości wysyłanej podczas trwającego etapu komunikacji w celu uwierzytelnienia nadawcy i zapewnienia kontroli integralności wiadomości.

Electronically stored information [Informacje przechowywane w formie elektronicznej]: informacje przechowywane w bazach danych, wiadomościach e-mail, komunikatorach internetowych lub jakiejkolwiek innej formie mediów elektronicznych.

Elliptic curve cryptography [Kryptografia krzywych eliptycznych (ECC)]: szeroko stosowany szyfr szyfrujący z kluczem publicznym.

E-mail fingerprinting [Odciski cyfrowe poczty e-mail]: Bada cechy charakterystyczne lub odcisk palca każdej wiadomości e-mail wcześniej zidentyfikowanej jako spam i wykorzystuje te informacje do identyfikowania podobnych wiadomości.

Encryption [Szyfrowanie]: proces zamiany tekstu jawnego na tekst zaszyfrowany w celu zapewnienia bezpieczeństwa lub prywatności.

Encryption for confidentiality [Szyfrowanie] : zapewniające poufność: szyfrowanie, które uniemożliwia przechwytującym odczyt informacji.

Enrollment scan [Skan rejestracyjny]: wstępne dane biometryczne zebrane od osoby.

Entities [Podmioty]: typy obiektów, które reprezentują osoby, miejsca, rzeczy lub zdarzenia.

Ephemeral port numbers [Tymczasowe numery portów]: tymczasowy numer wybierany przez klienta podczas łączenia się z aplikacją na serwerze. Zgodnie z zasadami IETF, efemeryczne numery portów powinny mieścić się w przedziale od 49153 do 65535.

Error rate [Współczynnik błędów]: poziom dokładności, kiedy suplikant nie próbuje oszukać systemu.

Error-based inference [Wnioskowanie na podstawie błędów]: metoda ataku polegająca na przyjmowaniu założeń dotyczących bazowej bazy danych na podstawie komunikatu o błędzie otrzymanego po wykonaniu zapytania.

Eskaluj: Skierowanie incydentu do większego autorytetu.

Eskalacja: przeniesienie odpowiedzialności za incydent na bardziej zdolną grupę wyższego poziomu.

Etyka: system wartości danej osoby.

Event correlation [Korelacja zdarzeń]: sortowanie danych z wielu systemów wykrywania włamań w czasie, aby zdarzenia występujące w tym samym czasie można było postrzegać jako występujące razem.

Evil twin access points [Złe bliźniacze punkty dostępowe]: APC z oprogramowaniem umożliwiającym podszywanie się pod punkt dostępu. Wykonuje atak man-in-the-middle na klienta bezprzewodowego i legalny punkt dostępu.

Exception handling [Obsługa wyjątków]: procedura obsługi wyjątków w określonych okolicznościach. Działania są ograniczone i udokumentowane.

Exhaustive search [Wyczerpujące wyszukiwanie]: wypróbowanie wszystkich możliwych kluczy, dopóki nie znajdzie właściwego.

Exit node [Węzeł wyjściowy]: węzeł Tor, który jest ostatnim przeskokiem przed dotarciem do miejsca docelowego pakietu.

Expert witness [Biegły sądowy]: osoba uprawniona do składania zeznań biegłego, które obejmuje interpretację faktów, a nie tylko przedstawienie faktów.

Exploit: termin związany z włamaniami. Odnosi się do oprogramowania używanego do włamania lub włamania.

Extended EAP standard  [Rozszerzony standard EAP]: rozszerzenie protokołu Extensible Authentication Protocol, które zapewnia bezpieczeństwo interakcji między urządzeniem bezprzewodowym a bezprzewodowym punktem dostępowym przed rozpoczęciem uwierzytelniania.

Extensible Authentication Protocol (EAP): Protokół zarządzający specyfiką interakcji uwierzytelniania.

Extrusion prevention [Zapobieganie ekstruzji]: zapobieganie opuszczaniu organizacji przez poufne lub zastrzeżone informacje

Glossariusz : D(alij)…

Damage thresholds [Progi obrażeń] : Minimalna ilość szkód, które muszą wystąpić, zanim napastnicy naruszą prawo.

Doktryna Danversa: IETF jest zgodna co do tego, że należy rozwijać zabezpieczenia dla wszystkich protokołów sieciowych

Dane. Surowe fakty: Podstawowy element każdego systemu informacyjnego.

Danych Bufor: obszary w pamięci RAM, w których informacje są tymczasowo przechowywane.

Data definition language (DDL) triggers. [Wyzwalacze języka definicji danych (DDL)]: Wyzwalacze używane do generowania automatycznych odpowiedzi, jeśli struktura bazy danych została zmieniona.

Data Encryption Standard (DES): szyfrowanie z kluczem symetrycznym z kluczami 56-bitowymi.

Data extrusion management [Zarządzanie wytłaczaniem danych]: narzędzia zapobiegające nieuprawnionemu wysyłaniu wrażliwych danych poza korporację.

Danych Łącze: ścieżka, którą ramka pokonuje w jednej sieci (LAN lub WAN).

Data loss prevention [Zapobieganie utracie danych (DLP)]: zestaw zasad, procedur i systemów zaprojektowanych w celu zapobiegania ujawnieniu wrażliwych danych osobom nieupoważnionym.

Data loss prevention systems [Systemy zapobiegania utracie danych]: systemy zaprojektowane do zarządzania wytłaczaniem danych, filtrowaniem zapobiegania wytłaczaniu i zasadami DLP.

Data manipulation language triggers [Wyzwalacze języka manipulacji danymi (DML)]: Wyzwalacze używane do generowania automatycznych odpowiedzi, jeśli dane zostały zmienione.

Danych Maskowanie: proces ukrywania danych, aby nie można było zidentyfikować konkretnej osoby, ale nadal pozostają one praktycznie przydatne.

Data mining spyware [Oprogramowanie szpiegowskie do eksploracji danych]: oprogramowanie szpiegujące przeszukujące dyski twarde w poszukiwaniu poufnych informacji.

Danych Model: nazwy jednostek, atrybuty i struktura relacji między jednostkami.

Danych Bazy: Zintegrowane zbiory danych i metadanych przechowywane na komputerach.

Database management system [System zarządzania bazami danych (DBMS)]: oprogramowanie, które może zarządzać strukturami baz danych i ograniczać dostęp do poszczególnych baz danych.

Death of the perimeter: fraza używana przez administratorów sieci do przekazania idei, że stworzenie w 100% bezpiecznej sieci jest niemożliwe. Wymuszanie wszystkich informacji w organizacji przez jeden punkt w sieci jest niepraktyczne, jeśli nie niemożliwe.

Deauthenticate message: wiadomość wysłana z hosta, który chce zakończyć uwierzytelnione połączenie.

Deception [Oszustwo]: w biometrii, gdy ktoś próbuje oszukać biometryczne urządzenie dostępowe.

Decyzyjne Kryterium: poziom dopuszczalnej zmienności (błędu) w indeksie dopasowania.

Deszyfrowanie: proces konwersji tekstu zaszyfrowanego na tekst jawny.

Deep packet inspection [Głęboka inspekcja pakietów]: inspekcja całej zawartości warstwy w pakiecie.

Demilitarized zone : wymaganie od atakującego przełamania wielu środków zaradczych, aby odnieść sukces.

Demilitarized zone [Strefa zdemilitaryzowana (DMZ)]: podsieć zawierająca wszystkie serwery i zapory proxy aplikacji, które muszą być dostępne dla świata zewnętrznego.

Denial-of-Service (DoS) Atak: Atak, który próbuje uniemożliwić serwerowi lub sieci obsługę legalnych użytkowników poprzez zalewanie ich pakietami ataków.

Detektywistyczne środki zaradcze: narzędzia, które identyfikują, kiedy zagrożenie atakuje, a zwłaszcza gdy odnosi sukces.

Development servers  [Serwery programistyczne]: serwer używany wyłącznie do tworzenia aplikacji.

Dictionary attack [Atak słownikowy]: łamanie haseł przez porównywanie ich z terminami słownikowymi.

Diffie-Hellman umowa klucza: metoda kluczowania, która nie wykorzystuje szyfrowania. Obie strony wymieniają informacje klucza, ale podsłuchujący odczytujący wymienione informacje klucza nie może obliczyć klucza.

Digital certificate [Certyfikat cyfrowy]: plik, który bezpiecznie podaje nazwę strony i klucz publiczny.

Digital rights management [Zarządzanie prawami cyfrowymi (DRM)]: ogranicza to, co ludzie mogą robić z danymi.

Digital signature [Podpis cyfrowy]: podpis elektroniczny, który uwierzytelnia pojedynczą wiadomość za pomocą szyfrowania kluczem publicznym i zapewnia integralność wiadomości jako produkt uboczny. Tworzone przez podpisanie podsumowania wiadomości kluczem prywatnym nadawcy.

Direct attack [Atak bezpośredni]: najprostsza forma ataku DoS, w której atakujący próbuje zalać ofiarę strumieniem pakietów bezpośrednio z komputera atakującego.

Direct-propagation worm  [Robak rozprzestrzeniający się bezpośrednio]: robak, który może przeskoczyć bezpośrednio do komputera zawierającego określoną lukę.

Directory traversal attack [Atak polegający na przejściu przez katalog]: Atak, w którym osoby atakujące mogą przejść z katalogów publicznych do katalogów prywatnych bez odpowiedniej autoryzacji.

Disconnection [Rozłączenie]: odłączenie zaatakowanego komputera od Internetu lub wyłączenie go.

Discovery process [Proces odkrywania]: proces uzyskiwania dowodów.

Discretionary access control [Uznaniowa kontrola dostępu]: W dziedzinie bezpieczeństwa wojskowego departamenty mogą według własnego uznania zmieniać zasady kontroli dostępu ustalone przez wyższe władze.

Dyskowa Macierz: zestaw powiązanych dysków twardych podłączonych do tego samego systemu.

Dysku Obraz: kopia całego dysku. Można skopiować na inną maszynę.

Distributed denial-of-service attack [Rozproszony atak typu „odmowa usługi” (DDoS)]: najpowszechniejszy typ ataku DoS. Atakujący umieszcza boty na wielu hostach internetowych. Boty otrzymują wiadomość od botmastera, a następnie przeciążają serwery, zalewając je pakietami atakującymi, przez co sieci nie są w stanie obsługiwać ich legalnych użytkowników.

Distributed reflected denial-of-service attack. [Wzmocnienie ataku typu „odmowa usługi” (DRDoS)]: rodzaj ataku DoS, który wykorzystuje botnet do odbijania pakietów ataków poza legalne serwery.

Dystrybucja: wersja systemu LINUX zawierająca jądro i inne programy.

Document restrictions [Ograniczenia dotyczące dokumentów]: zestaw zabezpieczeń, które próbują ograniczyć działania użytkowników na dokumentach w celu zmniejszenia zagrożeń bezpieczeństwa.

Domain controller server [Serwer kontrolera domeny]: serwer kontrolujący zasoby w domenie.

Domain Name System (DNS): Aserver udostępniający adresy IP użytkownikom znającym tylko nazwę hosta docelowego. Serwery DNS zapewniają również hierarchiczny system nazewnictwa domen.

Download mode [Tryb pobierania]: Aktywne wyszukiwanie treści do przeglądania lub oprogramowania do pobrania.

Downloader: Mały koń trojański, który pobiera większego konia trojańskiego po zainstalowaniu downloadera. Czasami nazywany zakraplaczem.

Drive-by haker: osoba atakująca, która próbuje bezprzewodowo włamać się do sieci spoza organizacji.

Drive-wiping programs [Programy do czyszczenia dysku]: oprogramowanie, które bezpiecznie usuwa dane z nośników pamięci.

Dual stacked [Podwójny stos]: sieć wykorzystująca adresy IP zarówno IPv4, jak i IPv6.

Due diligence [Należyta staranność]: zbadanie systemu bezpieczeństwa potencjalnego partnera biznesowego przed przystąpieniem do wymiany danych z tą osobą.

Dumpster diving [Nurkowanie w śmietniku]: napastnik przeszukuje firmowe kosze na śmieci w poszukiwaniu dokumentów, taśm zapasowych, dyskietek i innych nośników zawierających informacje.

Dynamic Host Configuration Protocol [Protokół dynamicznej konfiguracji hosta (DHCP)]: Protokół używany przez serwery DHCP, które zapewniają każdemu komputerowi użytkownika tymczasowy adres IP do użycia za każdym razem, gdy łączy się z Internetem.

Dynamiczne adresy IP: tymczasowy adres IP, który komputer kliencki otrzymuje z serwera DHCP.

Dynamic routing protocol [Protokół routingu dynamicznego]: protokół, który umożliwia routerom udostępnianie informacji o sieciach, z którymi są połączone.

Glossariusz : C(óż)…

Czytniki kart : Maszyny używane do odczytu kart z paskiem magnetycznym.

Career criminals [Przestępcy kryminalni]: napastnicy, którzy atakują z pobudek czysto kryminalnych i nielegalnie zarabiają pieniądze.

Castle model [Model zamku]: Tradycyjny model obrony sieciowej, który ma dobrych ludzi wewnątrz, napastników z zewnątrz i dobrze strzeżony pojedynczy punkt wejścia.

Centralny serwer uwierzytelniania: utrzymuje centralną bazę danych uwierzytelniania i sprawdza poświadczenia dla wielu podmiotów uwierzytelniających.

Centralny system zarządzania zaporą: system wypychający reguły filtrowania do poszczególnych zapór w oparciu o zasady zapory.

Centralna konsola zarządzania bezpieczeństwem: stacje robocze, które zarządzają funkcjami bezpieczeństwa IT z jednego hosta (konsoli).

Centralna kopia zapasowa: Kopia zapasowa wykonywana przez sieć z centralnej konsoli kopii zapasowych.

Centralny  bezprzewodowy system wykrywania włamań: system wykrywania włamań (IDS), który zbiera informacje z bezprzewodowych punktów dostępowych, które są analizowane przez centralną konsolę IDS.

Certyfikacji Urząd (CA): organizacja, która dostarcza certyfikaty cyfrowe.

Certificate revocation list [Lista odwołania certyfikatów (CRL)]: lista numerów seryjnych odwołanych certyfikatów cyfrowych urzędu certyfikacji.

Certyfikacja: W FISMA, stwierdzenie, że określony system spełnia wymagania FISMA. Prowadzone przez agencję będącą właścicielem systemu lub przez agencję zewnętrzną. System nadal musi posiadać akredytację.

Chain of attack computers  [Łańcuch komputerów atakujących]: seria komputerów przejętych przez atakującego. Ofiara nie może prześledzić ataku aż do komputera atakującego.

Chain of custody [Łancuch dowodu]: udokumentowana historia wszystkich transferów dowodów między ludźmi i wszystkich działań podjętych w celu ochrony dowodów, gdy są one w posiadaniu każdej osoby.

Challenge message [Komunikat wezwania]: podczas uwierzytelniania ciąg wysłany przez weryfikatora do suplikanta.

Chief Security Officer (CSO): Wspólny tytuł dla dyrektora ds. Bezpieczeństwa IT.

Cipher [Szyfr]: Specyficzny proces matematyczny używany do szyfrowania i deszyfrowania.

Cipher suite [Zestaw szyfrów]: W SSL / TLS: proponowany zestaw metod i opcji do wykorzystania w dialogu.

Ciphertext [Tekst zaszyfrowany]: Jaki tekst jawny jest zaszyfrowany w celu zapewnienia poufności.

Circles of trust [Kręgi zaufania]: wywnioskowane relacje zaufania. Na przykład, jeśli osoba A ufa osobie B, a osoba B ufa osobie C, osoba A może ufać osobie C.

City model  [Model miejski]: Model bezpieczeństwa sieci, który nie ma rzeczywistego odrębnego obwodu i istnieje wiele sposobów wejścia do sieci. To, kim jesteś, określi, do których „budynków” będziesz miał dostęp.

Cywilne Prawo: zajmuje się interpretacją praw i obowiązków, które firmy lub osoby fizyczne mają względem siebie.

Classic risk analysis calculation  [Klasyczne obliczenia analizy ryzyka]: Metoda przedstawiona w rozdziale 2 do wykonywania obliczeń analizy ryzyka.

Clear-to-send (CTS): Komunikat, który informuje innych klientów, że host otrzymał ramkę RTS i że nie powinni nadawać przed upływem wyznaczonego czasu.

Click fraud [Oszustwa związane z kliknięciami]: właściciel witryny internetowej firmy Acriminal stworzył program do wielokrotnego klikania odsyłacza. Każde z tych fałszywych kliknięć zabiera reklamodawcy pieniądze bez generowania potencjalnych klientów.

Closed-circuit television [Telewizja przemysłowa (CCT)]: Monitoring wideo, który umożliwia pracownikom ochrony ciągłe monitorowanie chronionych obszarów.

Cloud computing [Przetwarzanie w chmurze]: architektura komputera, która wykorzystuje moc obliczeniową, aplikacje, przechowywanie danych i inne usługi przez Internet. Użytkownicy nie muszą instalować oprogramowania, uruchamiać programów ani przechowywać żadnych danych na swoich lokalnych hostach, ponieważ całe przetwarzanie i przechowywanie danych jest robione na zdalnym serwerze.

CobiT: Cele kontroli w zakresie technologii informacyjnych i pokrewnych. Ramy zarządzania używane do zarządzania na wysokim poziomie w IT.

Codeck [Kodek]: sprzęt lub oprogramowanie w telefonie VoIP, które konwertuje głos osoby na strumień cyfrowych bajtów.

Codes [Kody]: metody poufności, w których symbole kodowe reprezentują całe słowa lub frazy. Kody to nie szyfry.

Code symbols [Symbole kodu]: Symbol, który reprezentuje słowo lub frazę. Interfejsy wiersza polecenia (CLI): interfejs tekstowy używany do interakcji z systemem operacyjnym.

Command-line interfaces [Interfejsy wiersza poleceń (CLI)]. Interfejs tekstowy używane do interakcji z systemem operacyjnym

Common word passwords [Popularne hasła słowne]: hasła utworzone ze słów lub nazw ze słownika. Łatwo złamane przez ataki słownikowe.

Complex passwords [Złożone hasła]: hasła zawierające kombinację liter, cyfr i innych znaków z klawiatury. Przepisy i regulacje dotyczące zgodności. Prawa i regulacje, które tworzą wymagania, na które musi odpowiadać bezpieczeństwo korporacyjne.

Compliance laws and regulations [Przepisy i regulacje dotyczące zgodności]. Prawa i regulacje, które tworzą wymagania, na które musi odpowiadać bezpieczeństwo korporacyjne

Comprehensive security [Kompleksowe zabezpieczenia]: zamknięcie wszystkich dróg ataku prowadzących do systemów organizacji przed atakującymi.

Computer forensics expert [Ekspert informatyki śledczej]: osoba uprawniona do składania zeznań w charakterze biegłego, które obejmuje interpretację faktów, a nie tylko ich przedstawienie.

Computer security incident response team [Zespół reagowania na incydenty bezpieczeństwa komputerowego (CSIRT)]: Zespół zajmujący się poważnymi incydentami. Ma członków z różnych części firmy.

Confidentiality [Poufność]: zabezpieczenia uniemożliwiające osobom przechwytującym wiadomości ich odczytanie.

Containment [Ograniczenie]: W odpowiedzi na incydent, zatrzymanie szkód.

Ciągła ochrona danych (CDP): ciągłe tworzenie kopii zapasowych danych w innej witrynie, dzięki czemu inna witryna może przejąć przetwarzanie w ciągu kilku minut.

Contract workers. [Pracownicy kontraktowi]: osoby, które pracują dla firmy przez krótki czas i nie są pracownikami.

Control [Kontrola]: narzędzie do udaremnienia ataku.

Cookie: mały ciąg tekstowy przechowywany na Twoim komputerze przez witrynę internetową w celu późniejszego pobrania.

Connection-oriented [Zorientowany na połączenie]: typ konwersacji, w której następuje formalne otwarcie interakcji, formalne zamknięcie i utrzymanie konwersacji pomiędzy.

Connectionless protocols [Protokoły bezpołączeniowe]: wiadomości mogą być przesyłane między hostami bez formalnego połączenia.

Containment [Ograniczenie]: powstrzymanie wyrządzanych szkód.

Core switch [Główny przełącznik]: przełącznik znajdujący się wyżej w hierarchii, który przenosi ruch między parami przełączników. Może również łączyć przełączniki z routerami.

Core wireless security protocols [Podstawowe protokoły bezpieczeństwa sieci bezprzewodowej]: Protokoły używane do ochrony ruchu w bezprzewodowej sieci LAN.

Corporate security policy [Polityka firmy w zakresie bezpieczeństwa]: krótkie oświadczenie, które podkreśla zaangażowanie firmy w zapewnienie silnego bezpieczeństwa.

Corrective countermeasures [Środki zaradcze]: narzędzia do przywrócenia procesu biznesowego po kompromisie.

COSO: Ramy zarządzania stosowane do zarządzania na wysokim szczeblu w korporacji.

Countermeasure [Przeciwdziałanie]: narzędzie do udaremnienia ataku.

Credentials [Poświadczenia]: Dowody tożsamości przesłane przez wnioskodawcę do weryfikatora.

Credit card number theft [Kradzież numeru karty kredytowej]: kradzież numerów kart kredytowych.

Criminal law [Prawo karne]: zajmuje się naruszaniem przepisów prawa karnego.

Cross-site scripting (XSS): rodzaj ataku na aplikację internetową, w którym dane wejściowe jednego użytkownika mogą pojawić się na stronie internetowej innego użytkownika.

Cryptanalyst [Kryptoanalityk]: ktoś, kto łamie szyfrowanie.

Cryptography [Kryptografia]: wykorzystanie operacji matematycznych do ochrony wiadomości przesyłanych między stronami lub przechowywanych na komputerze.

Cryptographic system [System kryptograficzny]: spakowany zestaw kryptograficznych środków zaradczych do ochrony dialogów.

Cryptographic system standard [Standard systemu kryptograficznego]: standard dla określonego typu systemu kryptograficznego.

Cyberprzestępczość: wykonywanie przestępstw w Internecie.

Cyberlaw: Wszelkie prawa dotyczące technologii informatycznych.

Cyberterror: Ataki terrorystów.

Cyberwar: ataki komputerowe przeprowadzane przez rządy krajowe.

Glossariusz : B(e) happy! :)

 

Backscatter. : Efekt uboczny fałszowania adresu IP przez atakującego. Gdy ofiara wysyła odpowiedzi na sfałszowany adres IP używany przez atakującego i nieumyślnie zalewa niezamierzoną ofiarę.

Backup [Utworzyć kopię zapasową : Zapewnienie, że kopie plików danych są bezpiecznie przechowywane i przetrwają nawet w przypadku utraty, kradzieży lub uszkodzenia danych na hoście.

Backup console [Konsola kopii zapasowych]: Komputer z podłączonym nośnikiem danych, który pobiera dane do utworzenia kopii zapasowej z każdego hosta w ustalonym czasie podczas scentralizowanej kopii zapasowej.

Backup media  [Nośnik kopii zapasowych]: Fizyczne opcje przechowywania danych z kopii zapasowej.

Backup scope [Zakres kopii zapasowej]: ilość informacji na dysku twardym, której kopia zapasowa jest tworzona.

Bait site [Witryna-przynęta]: szkodliwa witryna, która ma wyglądać na autentyczną witrynę z zawartością do pobrania.

Bandwidth limitation [Ograniczenie przepustowości]: ogranicza przepustowość sieci, z której może korzystać podejrzany typ ruchu.

Baseline [Punkt odniesienia]: szczegółowy opis tego, co należy zrobić, ale nie jak to zrobić.

Basic file deletion [Podstawowe usuwanie plików]: wskaźniki odnoszące się do danych są usuwane, ale dane w tych sektorach pozostają. Plik został usunięty logicznie, ale nie fizycznie.

Batch transfer [Transfer zbiorczy]: przesyłanie sporadycznych informacji w dużych ilościach.

Bayes’a Twierdzenie: zasada mówiąca, że ​​większość zdarzeń jest warunkowa lub zależna, a prawdopodobieństwo wystąpienia zdarzenia w przyszłości można wywnioskować na podstawie poprzednich wystąpień tego zdarzenia.

Best practices  [Najlepsze praktyki]: opisy działań najlepszych firm w branży w zakresie bezpieczeństwa.

Biometryczne uwierzytelnianie: Uwierzytelnianie oparte na pomiarach ciała i ruchach.

Black hole [Czarna dziura]: (czasownik) odrzucanie wszystkich pakietów z określonego adresu IP.

Blacklists [Czarne listy]: listy znanych adresów IP naruszających spam.

Black market websites [Witryny internetowe na czarnym rynku]: miejsca, w których napastnicy sprzedają informacje i towary.

Blended threats [Zagrożenia mieszane]: złośliwe oprogramowanie, które rozprzestrzenia się na kilka sposobów, np. Robaki, wirusy lub zainfekowane strony internetowe zawierające kod mobilny.

Blind spots [Martwe pola]: w sieci, obszary, w których IDS nie widzi pakietów.

Blind SQL injection [Ślepe wstrzyknięcie SQL]: metoda ataku wykorzystująca serię instrukcji SQL, które generują różne odpowiedzi w oparciu o pytania prawda / fałsz lub odpowiedzi czasowe.

Block encryption [Szyfrowanie blokowe]: dzielenie wiadomości w postaci zwykłego tekstu na bloki i szyfrowanie każdego bloku w serii.

Border firewall: Firewall na granicy między lokacją a światem zewnętrznym.

Botmaster: osoba, która kontroluje i aktualizuje boty (zainfekowane komputery).

Boty: atakują programy przechowywane na wielu komputerach. Może zostać poinformowany o zaatakowaniu ofiar i zaktualizowany, aby dodać funkcjonalność lub naprawić błędy.

Breach [Wyłom]: udany atak.

Broadband modems [Modemy szerokopasmowe]: szybki modem lokalny, który łączy się z dostawcą usług internetowych.

Brute force: metoda łamania haseł, która wypróbowuje wszystkie możliwe kombinacje haseł.

Brute-force key cracking [Łamanie kluczy metodą brutalną]: próbowanie wszystkich możliwych kluczy do momentu, gdy analityk kryptograficzny znajdzie właściwy klucz.

Bufory: miejsca, w których dane są tymczasowo przechowywane.

Bufora przepełnienie: Atak, który wysyła wiadomość zawierającą więcej bajtów niż programista przydzielił buforowi. Informacje atakującego rozprzestrzenią się na inne obszary pamięci RAM. Przepełnienie abuffera może spowodować awarię hosta, dać atakującemu dostęp na poziomie administratora, zezwolić na wykonanie dowolnego polecenia lub po prostu nic nie robić.

Bump key [Klucz uderzeniowy]: złożona wersja rzeczywistego klucza używanego do otwierania określonego typu zamka.

Biznesowa ciągłość : kontynuacja działalności firmy lub wznowienie działalności.

Business continuity plan [Plan ciągłości działania]: plan, który określa, w jaki sposób firma będzie utrzymywać lub przywracać podstawową działalność biznesową po katastrofach.

Business continuity planning [Planowanie ciągłości działania]: proces przygotowywania planu, który zapewni rentowność firmy w przypadku katastrofy.

Business continuity planning  [Zespół ds. ciągłości działania}: Grupa, która wdraża plan ciągłości działania.

Glossariusz : A(no)…ruszamy !!!

     

4-parowa nieekranowana skrętka (UTP).  : Typ okablowania zwykle używany w sieciach Ethernet. 4-parowy UTP zawiera osiem miedzianych drutów ułożonych w cztery pary. Każdy przewód jest pokryty izolacją dielektryczną, a płaszcz zewnętrzny otacza i chroni cztery pary.

802.11i. Bardzo silny podstawowy protokół bezpieczeństwa chroniący komunikację między punktem dostępu a klientem bezprzewodowym.

802.1X. Standard wymagający uwierzytelnienia przed podłączeniem urządzenia do przełącznika lub punktu dostępowego. Używanie w punktach dostępu wymaga rozszerzenia, 802.11i.

Standardy 802.11. Standardy rządzące bezprzewodowymi sieciami LAN.

Acceptable data loss [Dopuszczalna utrata danych]. Ilość danych, które zostaną utracone od czasu ostatniej kopii zapasowej.

Acceptable use policy [Zasady dopuszczalnego użytkowania (AUP)]. Zasady podsumowujące kluczowe punkty o szczególnym znaczeniu dla użytkowników.

Acceptance [Zgoda]. Osoba jest dopasowywana do określonego szablonu.

Access card [Karta dostępu]. Plastikowa karta, która zwykle ma rozmiar karty kredytowej lub debetowej. Używany do uwierzytelniania.

Access control [Kontrola dostępu]. Kierowana polityką kontrola dostępu do systemów, danych i dialogów.

Access control list [Lista kontroli dostępu (ACL)]. Lista zasad zezwalających lub nie zezwalających na dostęp.

Access point [Punkt dostępu (AP)]. Urządzenie, które łączy klientów bezprzewodowych z siecią przewodową.

Access router [Dostęp do routera]. Router łączący sieć SOHO z Internetem. Zwykle zawiera przełącznik, serwer DHCP, NAT i inne funkcje poza routingiem.

Account policies [Zasady konta]. Zasady kontrolujące sposób używania kont użytkowników i uzyskiwania do nich dostępu.

Active Directory (AD). Produkt serwera katalogów firmy Microsoft.

Active Directory domeny. Zbiór zasobów obejmujący komputery, użytkowników, drukarki, grupy itp., Którymi można zarządzać centralnie.

Active-X. Struktura programistyczna umożliwiająca przeglądarce internetowej pobieranie i uruchamianie programów.

Address Resolution Protocol  [Protokół rozwiązywania adresów (ARP)]. Służy do przekształcania 32-bitowych adresów IP na 48-bitowe lokalne adresy MAC.

Administrator. Super konto w systemie Microsoft Windows.

Advanced Encryption Standard [Zaawansowany standard szyfrowania (AES)]. Standard szyfrowania klucza symetrycznego. Klucze o długości 128 bitów, 192 bitów lub 256 bitów. Obciąża urządzenia, które go używają, stosunkowo niewielkie obciążenie procesem.

Ajax. Asynchroniczny JavaScript i XML. Wykorzystuje wiele technologii do tworzenia dynamicznych aplikacji po stronie klienta.

Alarm. Ostrzeżenie wysyłane przez automatyczny system, gdy pojawia się wskazanie problemów.

Anomalii wykrywanie. Wykrywanie ataków na podstawie nietypowych wzorców ruchu sieciowego.

Apache. Popularny serwer WWW typu open source.

Application proxy firewall  [Zapora serwera proxy aplikacji]. Zapora, która bada treść wiadomości aplikacji i zapewnia inne zabezpieczenia.

Application-specific integrated circuits [Specyficzne układy scalone (ASIC)]. Zintegrowany sprzęt, który może pomóc zmniejszyć obciążenie obliczeniowe podczas uruchamiania aplikacji intensywnie przetwarzających.

Archiwizacja. Przechowywanie kopii zapasowych danych przez dłuższy czas.

Atak ARP DoS. Atak DoS, który przekierowuje cały ruch w sieci LAN, czyniąc ostateczne miejsca

ARP zatrucie . Atak sieciowy polegający na manipulowaniu tabelami ARP hosta w celu przekierowania ruchu w sieci LAN.

ARP Odpowiedź. Odpowiedź od lokalnego hosta, który zawiera adres MAC dla żądanego adresu IP.

ARP Żądanie. Żądanie wysłane w sieci w celu przekształcenia adresu IP na adres MAC.

ARP spoofing. Forma ataku wykorzystująca fałszywe odpowiedzi ARP do mapowania dowolnego adresu IP na dowolny adres MAC.

ARP Tabele. Tabele zawierające listy adresów MAC i odpowiadających im adresów IP używanych przez hosty w sieci lokalnej.

Ataku sygnatura. Charakterystyka ataku. Używany przez zaporę ogniową do wykrywania ataków.

Ataku wektory. Metody atakowania sieci lub systemów.

Atrybuty. Kolumny w tabeli, które są cechami (przymiotnikami) jednostki.

Audytu zasady. Zdarzenia systemowe (zasady), które dostarczają informacji o tym, kto spowodował wystąpienie zdarzeń, co mogło zmienić i kiedy wystąpiło zdarzenie.

Audyt. (1) Zbieranie informacji o działaniach każdej osoby w plikach dziennika w celu natychmiastowej i późniejszej analizy. (2) Proces obejmujący pobieranie próbek w celu wypracowania opinii na temat stanu kontroli, a nie w celu wykrycia karalnych przypadków niezgodności.

Authentication.  [Uwierzytelnienie] Ocena tożsamości każdej osoby twierdzącej, że ma pozwolenie na korzystanie z zasobu.

Authenticator. Urządzenie, do którego podłącza się komputer, aby uzyskać dostęp do sieci. Zwykle przełącznik lub punkt dostępu.

Autoryzacje. Konkretne uprawnienia, które powinien mieć określony uwierzytelniony użytkownik, biorąc pod uwagę jego uwierzytelnioną tożsamość.

Automated password reset system [Zautomatyzowany system resetowania hasła]. System, który umożliwia użytkownikom ręczne resetowanie ich haseł na podstawie wcześniej określonych informacji.

Autorun. Na pendrive’ach USB, możliwość uruchamiania programów natychmiast po włożeniu pendrive’a, bez interwencji użytkownika.

Availability [Dostępność]. Właściwość polegająca na tym, że jest dostępny i użyteczny na żądanie uprawnionego podmiotu.

[44][Machine Learning](8)

(Dlaczego) funkcje aktywacji muszą być monotoniczne?

Obecnie przygotowuję się do egzaminu z sieci neuronowych. W kilku protokołach z poprzednich badań przeczytałem, że funkcje aktywacji neuronów (w perceptronach wielowarstwowych) muszą być monotoniczne. Rozumiem, że funkcje aktywacji powinny być różniczkowalne, mieć pochodną różną od 0 w większości punktów i nieliniowe. Nie rozumiem, dlaczego monotonność jest ważna / pomocna. Znam następujące funkcje aktywacji i że są one monotoniczne:

* ReLU

* Sigmoid

* Tanh

* Softmax

* Softplus

*(Tożsamość)

Jednak na przykład nadal nie widzę żadnego powodu. (Dlaczego) czy funkcje aktywacji muszą być monotoniczne? (Powiązane pytanie poboczne: Czy istnieje jakikolwiek powód, dla którego funkcja logarytmiczna / wykładnicza nie jest używana jako funkcja aktywacji?)

Kryterium monotoniczności pomaga sieci neuronowej w łatwiejszym konwergencji w dokładniejszy klasyfikator. Więcej szczegółów i powodów znajdziesz w tej odpowiedzi na stackexchange i w artykule na Wikipedii. Jednak kryterium monotoniczności nie jest obowiązkowe dla funkcji aktywacji – możliwe jest również trenowanie sieci neuronowych z niemonotonicznymi funkcjami aktywacji. Po prostu coraz trudniej jest zoptymalizować sieć neuronową.

 Jak sztuczna inteligencja uczy się działać, gdy przestrzeń problemowa jest zbyt duża

Najlepiej uczę się poprzez eksperymentowanie i przykład. Uczę się o sieciach neuronowych i mam (wydaje mi się) całkiem dobre zrozumienie klasyfikacji i regresji, a także uczenia się pod nadzorem i bez nadzoru, ale natknąłem się na coś, czego nie mogę po cichu zrozumieć; Gdybym chciał wyszkolić AI do grania w skomplikowaną grę; Myślę o czymś takim jak RTS (np. Age of Empires, Empire Earth itp.). W tego typu grach zazwyczaj występuje wiele jednostek kontrolowanych przez gracza (jednostki, budynki), z których każda ma inne możliwości. Wydaje się, że problemem związanym z tym, że sztuczna inteligencja robi, byłaby klasyfikacja (np. Wybór tej jednostki i tej akcji), jednak skoro liczba jednostek jest zmienną, jak można w ten sposób rozwiązać problem klasyfikacji? Jedyne, co przychodzi mi do głowy, to wiele sieci, które wykonują różne etapy (jeden dla ogólnej strategii, jeden dla kontrolowania tego typu jednostek, jeden dla tego typu budynku itp.); ale wygląda na to, że komplikuję problem. Czy jest jakiś dobry przykład uczenia maszynowego / sieci neuronowych uczących się złożonych gier (nie konkretnie RTS, ale bardziej skomplikowany Mario)?

To dobre pytanie i wielu naukowców na całym świecie zadaje to samo. Cóż, po pierwsze, uważa się, że gra taka jak Age of Empires nie ma naprawdę dużej przestrzeni na rozwiązania, nie można zrobić zbyt wiele rzeczy. Tak samo jest w grach takich jak Mario Bros. Problem uczenia się w prostych grach, takich jak gry na Atari, został rozwiązany przez ludzi z DeepMind (tutaj artykuł), który został przejęty przez Google. Użyli implementacji uczenia się ze wzmocnieniem z uczeniem głębokim. Wracając do twojego pytania. Naprawdę dużym problemem jest to, jak naśladować ilość decyzji, które człowiek podejmuje każdego dnia. Obudź się, zjedz śniadanie, weź prysznic, wyjdź z domu… ​​Wszystkie te działania wymagają naprawdę dużej inteligencji i wielu działań, aby się rozwijać.

Wiele osób pracuje nad tym problemem, ja jestem jedną z nich. Nie znam rozwiązania, ale mogę powiedzieć, w jaki sposób szukam. Podążam za teoriami Marvina Minsky’ego, jest jednym z ojców AI. Ta książka, Maszyna emocji, przedstawia bardzo dobry obraz problemu. Zasugerował, że sposobem na stworzenie maszyny imitującej ludzkie zachowanie nie jest skonstruowanie jednolitej zwartej teorii sztucznej inteligencji. Wręcz przeciwnie, argumentuje, że nasz mózg zawiera zasoby, które konkurują między sobą, aby w tym samym momencie osiągnąć różne cele. Nazwali ten sposób myślenia.

Czy sieci neuronowe są z natury algorytmem online?

Od jakiegoś czasu zajmuję się uczeniem maszynowym, ale kawałki i fragmenty łączą się ze sobą nawet po pewnym czasie ćwiczeń. W sieciach neuronowych dostosowujesz wagi wykonując jeden przejazd (przejście do przodu), a następnie obliczanie pochodnych cząstkowych dla wag (przebieg wstecz) po każdym przykładzie szkoleniowym – i odejmowanie tych pochodnych cząstkowych od wag początkowych. z kolei obliczenie nowych wag jest matematycznie skomplikowane (trzeba obliczyć pochodną cząstkową wag, dla których obliczamy błąd w każdej warstwie sieci neuronowej – ale w warstwie wejściowej). Czy z definicji nie jest to algorytm online, w którym koszt i nowe wagi są obliczane po każdym przykładzie szkolenia

Istnieją trzy tryby uczenia sieci neuronowych

* stochastyczne zejście w gradiencie: dostosuj wagi po każdym przykładzie treningu

* szkolenie wsadowe: dostosuj wagi po przejrzeniu wszystkich danych (epoka)

* Trening mini-wsadowy: dostosuj ciężary po przejściu przez mini-wsad. Zwykle jest to 128 przykładów szkoleniowych.

W większości przypadków wydaje się, że używane jest szkolenie mini-wsadowe. Odpowiedź brzmi: nie, algorytm uczenia sieci neuronowej nie jest algorytmem online.

Jakie rodzaje problemów z uczeniem się są odpowiednie dla maszyn wektorów wsparcia?

Jakie są cechy lub właściwości, które wskazują, że określony problem uczenia się można rozwiązać za pomocą maszyn wektorów nośnych? Innymi słowy, co takiego sprawia, że ​​kiedy widzisz problem z uczeniem się, mówisz „och, zdecydowanie powinienem używać do tego maszyn SVM” zamiast sieci neuronowych, drzew decyzyjnych czy czegokolwiek innego?

SVM można wykorzystać do klasyfikacji (rozróżnienia kilku grup lub klas) i regresji (uzyskania modelu matematycznego, aby coś przewidzieć). Można je stosować zarówno do problemów liniowych, jak i nieliniowych. Do 2006 roku były najlepszym algorytmem ogólnego przeznaczenia do uczenia maszynowego. Próbowałem znaleźć artykuł, w którym porównano wiele implementacji najbardziej znanych algorytmów: svm, sieci neuronowe, drzewa itp. Nie mogłem tego znaleźć, przykro mi (musisz mi uwierzyć, źle). W artykule algorytmem, który uzyskał najlepszą wydajność, był svm z biblioteką libsvm. W 2006 roku Hinton wynalazł głębokie uczenie się i sieci neuronowe. Poprawił obecny stan techniki o co najmniej 30%, co jest ogromnym postępem. Jednak uczenie głębokie zapewnia dobrą wydajność tylko w przypadku dużych zestawów treningowych. Jeśli masz mały zestaw treningowy, sugerowałbym użycie svm. Ponadto możesz znaleźć tutaj przydatną infografikę o tym, kiedy używać różnych algorytmów uczenia maszynowego przez scikit-learn. Jednak, zgodnie z moją najlepszą wiedzą, w środowisku naukowym nie ma zgody co do tego, że jeśli problem ma cechy X, Y i Z, lepiej jest użyć svm. Sugerowałbym wypróbowanie różnych metod. Nie zapominaj również, że svm lub sieci neuronowe to tylko metoda obliczania modelu. Bardzo ważne jest również to, z jakich funkcji korzystasz.

Załóżmy, że jesteśmy w ustawieniu klasyfikacyjnym. lub inżynieria funkcji svm jest kamieniem węgielnym: zestawy muszą być rozdzielane liniowo. W przeciwnym razie dane muszą zostać przekształcone (np. Przy użyciu jądra). Nie jest to wykonywane przez sam algorytm i może wydmuchać liczbę cechy. Powiedziałbym, że wydajność svm cierpi, ponieważ zwiększamy liczbę wymiarów szybciej niż inne metodologie (zespół drzewa). Wynika to z ograniczonego problemu optymalizacji, który stoi za svms. Czasami redukcja funkcji jest możliwa, czasami nie, i wtedy nie możemy naprawdę utorować drogi do efektywnego wykorzystania svm svm prawdopodobnie będzie miał problemy ze zbiorem danych, w którym liczba funkcji jest znacznie większa niż liczba obserwacji. Można to również zrozumieć, patrząc na problem z ograniczoną optymalizacją. Zmienne kategorialne nie są obsługiwane po wyjęciu z pudełka przez algorytm svm.

P: Czy jest jakaś domena, w której sieci bayesowskie przewyższają sieci neuronowe?

Sieci neuronowe uzyskują najlepsze wyniki w zadaniach widzenia komputerowego (patrz MNIST, ILSVRC, Kaggle Galaxy Challenge). Wydaje się, że przewyższają wszystkie inne podejście w wizji komputerowej. Ale są też inne zadania:

* Wyzwanie Kaggle Molecular Activity Challenge

* Regresja: prognoza Kaggle Rain, również 2. miejsce

* Chwyć i podnieś 2. także trzecie miejsce – Zidentyfikuj ruchy dłoni na podstawie zapisów EEG

Nie jestem pewien co do ASR (automatycznego rozpoznawania mowy) i tłumaczenia maszynowego, ale myślę, że słyszałem również, że (powtarzające się) sieci neuronowe (zaczynają) przewyższać inne podejścia. Obecnie uczę się o sieciach bayesowskich i zastanawiam się, w jakich przypadkach te modele są zwykle stosowane. Więc moje pytanie brzmi: czy jest jakaś konkurencja typu challenge / (Kaggle), w której najnowocześniejsze są sieci bayesowskie lub przynajmniej bardzo podobne modele? (Uwaga dodatkowa: widziałem także drzewa decyzyjne, 2, 3, 4, 5, 6, 7 zwycięstwa w kilku ostatnich wyzwaniach Kaggle)

Jednym z obszarów, w których często stosuje się podejście bayesowskie, jest potrzeba interpretacji systemu prognozowania. Nie chcesz dawać lekarzom sieci neuronowej i twierdzić, że jest dokładna w 95%. Raczej chcesz wyjaśnić założenia, które przyjmuje Twoja metoda, a także proces decyzyjny, z którego korzysta metoda. Podobny obszar ma miejsce, gdy masz silną wcześniejszą wiedzę domenową i chcesz ją wykorzystać w systemie.

Sieci bayesowskie i sieci neuronowe nie wykluczają się wzajemnie. W rzeczywistości sieci bayesowskie to tylko kolejny termin określający „ukierunkowany model graficzny”. Mogą być bardzo przydatne w projektowaniu funkcji obiektywnych sieci neuronowych. Zwrócił na to uwagę Yann Lecun:

https://plus.google.com/+YannLeCunPhD/posts/gWE7Jca3Zoq.

Jeden przykład. Wariacyjny automatyczny koder i pochodne są ukierunkowanymi graficznymi modelami formularza

Sieć neuronowa służy do zaimplementowania p (x | z) i przybliżenia do jego odwrotności: q(z|x) ≈ p(z|x)

Już doskonałe odpowiedzi. Domeną, o której przychodzi mi do głowy i nad którą intensywnie pracuję, jest domena analizy klientów. Muszę rozumieć i przewidywać ruchy i motywy klientów, aby informować i ostrzegać zarówno obsługę klienta, marketing, jak i zespoły zajmujące się rozwojem. Więc tutaj sieci neuronowe wykonują naprawdę dobrą robotę w przewidywaniu rezygnacji itp. Ale znalazłem i preferuję styl sieci bayesowskich, a oto powody, dla których preferuję ten styl:

  1. Klienci zawsze mają wzór. Zawsze mają powód do działania. I byłby to powód, który mój zespół zrobił dla nich lub sami się nauczyli. Tak więc wszystko ma tu swój poprzednik i faktycznie ten powód jest bardzo ważny, ponieważ napędza większość decyzji podjętej przez klienta.
  2. Każdy ruch klienta i zespołów rozwojowych w lejku marketingowo-sprzedażowym ma skutek przyczynowo-skutkowy. Tak więc wcześniejsza wiedza jest niezbędna, jeśli chodzi o przekształcenie potencjalnego potencjalnego klienta w klienta.

Tak więc koncepcja wcześniejszych jest bardzo ważna, jeśli chodzi o analitykę klientów, co sprawia, że ​​koncepcja sieci Bayesa jest bardzo ważna dla tej domeny

Sieci neuronowe: jakiej funkcji kosztu użyć?

Używam TensorFlow do eksperymentów głównie z sieciami neuronowymi. Chociaż przeprowadziłem teraz sporo eksperymentów (problem XOR, MNIST, trochę rzeczy związanych z regresją…), mam problem z wyborem „prawidłowej” funkcji kosztu dla określonych problemów, ponieważ ogólnie mogę być uważany za początkującego. Przed przejściem do TensorFlow samodzielnie zakodowałem kilka w pełni połączonych MLP i niektóre powtarzające się sieci za pomocą Pythona i NumPy, ale głównie miałem problemy, w których wystarczył prosty kwadratowy błąd i prosty opis gradientu. Ponieważ jednak TensorFlow oferuje całkiem sporo funkcji kosztowych, a także tworzenie niestandardowych funkcji kosztów, chciałbym wiedzieć, czy istnieje jakiś poradnik, być może dotyczący funkcji kosztów w sieciach neuronowych? (Skończyłem już prawie połowę oficjalnych samouczków TensorFlow, ale tak naprawdę nie wyjaśniają one, dlaczego określone funkcje kosztów lub uczniowie są wykorzystywani do konkretnych problemów – przynajmniej nie dla początkujących)

Aby podać kilka przykładów:

koszt = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (y_output, y_train))

Wydaje mi się, że stosuje funkcję softmax na obu wejściach, tak że suma jednego wektora jest równa

  1. Ale czym właściwie jest entropia krzyżowa z logitami? Myślałem, że sumuje wartości i oblicza entropię krzyża… więc jakiś pomiar metryczny ?! Czy nie wyglądałoby to tak samo, gdybym znormalizował wynik, zsumował i wziął kwadratowy błąd? Dodatkowo, dlaczego , czy to jest używane np. dla MNIST (a nawet znacznie trudniejszych problemów)? Kiedy chcę sklasyfikować jako 10, a może nawet 1000 klas, czy sumowanie wartości nie niszczy całkowicie informacji o tym, która klasa faktycznie była wynikiem?

cost = tf.nn.l2_loss (wektor)

Po co to? Myślałem, że strata L2 jest w zasadzie błędem do kwadratu, ale API TensorFlow mówi, że dane wejściowe to tylko jeden tensor. W ogóle nie rozumiesz ?! Poza tym dość często widziałem to dla krzyżowej entropii:

cross_entropy = -tf.reduce_sum (y_train * tf.log (y_output))

… Ale dlaczego to jest używane? Czy utrata entropii krzyżowej nie jest matematycznie taka:

-1 / n * suma (y_train * log (y_output) + (1 – y_train) * log (1 – y_output))

Gdzie znajduje się część (1 – y_train) * log (1 – y_output) w większości przykładów TensorFlow?

Czy tego nie brakuje?

Odpowiedzi: Wiem, że to pytanie jest dość otwarte, ale nie spodziewam się, że otrzymam około 10 stron z każdym szczegółowym opisem problemu / kosztu. Potrzebuję tylko krótkiego podsumowania, kiedy użyć której funkcji kosztu (ogólnie lub w TensorFlow, nie ma to dla mnie większego znaczenia) i wyjaśnienia na ten temat. I / lub jakieś źródło (a) dla początkujących;)

Ta odpowiedź dotyczy ogólnej strony funkcji kosztów, niezwiązanej z TensorFlow, i w większości dotyczy części Twojego pytania zawierającej „pewne wyjaśnienia na ten temat”. W większości przykładów / samouczków, do których się stosowałem, użyta funkcja kosztu była nieco arbitralna. Chodziło raczej o wprowadzenie czytelnika w konkretną metodę, a nie funkcję kosztu konkretnie. Nie powinno Cię to powstrzymywać przed skorzystaniem z samouczka, aby zapoznać się z narzędziami, ale moja odpowiedź powinna pomóc Ci w wyborze funkcji kosztu dla własnych problemów. Jeśli chcesz uzyskać odpowiedzi dotyczące Cross-Entropy, Logit, norm L2 lub czegokolwiek konkretnego, radzę zadać wiele bardziej szczegółowych pytań. Zwiększy to prawdopodobieństwo, że ktoś z określoną wiedzą zobaczy Twoje pytanie.

Wybór odpowiedniej funkcji kosztu w celu osiągnięcia pożądanego rezultatu jest krytycznym punktem problemów z uczeniem maszynowym. Podstawowym podejściem, jeśli nie wiesz dokładnie, czego oczekujesz od swojej metody, jest użycie średniokwadratowego błędu (Wikipedia) w przypadku problemów z regresją i wartości procentowej błędu w przypadku problemów klasyfikacyjnych. Jeśli jednak chcesz uzyskać dobre wyniki swojej metody, musisz zdefiniować dobre, a tym samym zdefiniować odpowiednią funkcję kosztu. Wynika to zarówno ze znajomości domeny (jakie są Twoje dane, co próbujesz osiągnąć), jak i wiedzy o narzędziach, którymi dysponujesz. Nie sądzę, żebym mógł przeprowadzić Cię przez funkcje kosztów już zaimplementowane w TensorFlow, ponieważ mam bardzo małą wiedzę na temat tego narzędzia, ale mogę podać przykład, jak pisać i oceniać różne funkcje kosztów.

Aby zilustrować różne różnice między funkcjami kosztów, posłużmy się przykładem problemu klasyfikacji binarnej, gdzie chcemy, aby dla każdej próbki xn klasa f(xn)  {0,1}

Począwszy od właściwości obliczeniowych; jak dwie funkcje mierzące „tę samą rzecz” mogą prowadzić do różnych wyników. Weźmy następującą, prostą funkcję kosztu; procent błędu. Jeśli masz N próbek, f(yn)to przewidywana klasa a yn prawdziwa klasa, którą chcesz zminimalizować

Ta funkcja kosztu ma tę zaletę, że jest łatwa do interpretacji. Jednak nie jest to gładkie; jeśli masz tylko dwie próbki, funkcja „przeskakuje” od 0, do 0,5, do 1. Doprowadzi to do niespójności, jeśli spróbujesz użyć gradientu spadku w tej funkcji. Jednym ze sposobów uniknięcia tego jest zmiana funkcji kosztu w celu wykorzystania prawdopodobieństw przypisania; p(yn =1|xn) . Funkcja staje się

Ta funkcja jest bardziej płynna i będzie działać lepiej w przypadku podejścia gradientowego. Otrzymasz „lepszy” model. Jednak ma inny problem; jeśli masz próbkę, która jest niejednoznaczna, powiedzmy, że nie masz wystarczających informacji, aby powiedzieć coś lepszego niż p(yn =1|xn) = 0,5

Następnie użycie gradientu spadku dla tej funkcji kosztu doprowadzi do modelu, który zwiększy to prawdopodobieństwo tak bardzo, jak to możliwe, a tym samym, być może, przekroczy dopasowanie. Innym problemem związanym z tą funkcją jest to, że jeśli p(yn =1|xn) = 1 podczas gdy yn = 0

na pewno masz rację, ale się mylisz. Aby uniknąć tego problemu, możesz wziąć logarytm prawdopodobieństwa, log p(yn |xn ) . Jeśli log(0) = ∞ i log(1) = 0  Następująca funkcja nie ma problemu opisanego w poprzednim akapicie

Powinno to pokazać, że aby zoptymalizować to samo, procent błędu, różne definicje mogą dawać różne wyniki, jeśli są łatwiejsze do zrozumienia i obliczeniowe. Funkcje kosztu A i B mogą mierzyć tę samą koncepcję, ale A może prowadzić twoją metodę do lepszych wyników niż B.

Zobaczmy teraz, jak różne funkcje kosztów mogą mierzyć różne koncepcje. W kontekście wyszukiwania informacji, jak w wyszukiwarce Google (jeśli zignorujemy ranking), chcemy, aby zwracane wyniki

* mają wysoką precyzję, nie zwracają nieistotnych informacji

* mają wysoką rozpoznawalność, zwracają jak najwięcej trafnych wyników

* Precyzja i przywołanie (Wikipedia)

Zwróć uwagę, że jeśli algorytm zwróci wszystko, zwróci każdy możliwy odpowiedni wynik, a zatem będzie miał wysoką pamięć, ale ma bardzo niską precyzję. Z drugiej strony, jeśli zwróci tylko jeden element, ten, który jest najbardziej pewny, jest odpowiedni, będzie miał wysoką precyzję ale mało przypominam. Aby ocenić takie algorytmy,  wspólną funkcją kosztu jest wynik F (Wikipedia). Typowym przypadkiem jest wynik F1, który nadaje równą wagę precyzji i przypominam sobie, ale w ogólnym przypadku jest to wynik Fβ -score i możesz dostosować wersję beta, aby uzyskać

* Wyższe zapamiętanie, jeśli używasz wersji β> 1

* Wyższa precyzja, jeśli używasz. β <1

W takim scenariuszu wybranie funkcji kosztu jest wyborem kompromisu, jaki powinien zrobić twój algorytm. Innym często przytaczanym przykładem jest przypadek diagnozy medycznej, możesz wybrać funkcję kosztu, która karze więcej fałszywie negatywnych lub fałszywie pozytywnych wyników w zależności od tego, co jest preferowane:

* Więcej zdrowych osób klasyfikuje się jako chorych (ale wtedy możemy leczyć zdrowych ludzi, co jest kosztowne i może im zaszkodzić, jeśli faktycznie nie są chorzy)

* Więcej chorych osób jest klasyfikowanych jako zdrowych (ale wtedy mogą umrzeć bez leczenia).

Podsumowując, zdefiniowanie funkcji kosztu jest zdefiniowaniem celu algorytmu. Algorytm definiuje, jak się tam dostać

Jaki jest dobry algorytm uczenia maszynowego do handlu z niską częstotliwością?

Próbuję wytrenować algorytm, aby kopiował najlepszych inwestorów z różnych portali społecznościowych forex. Problem polega na tym, że traderzy handlują tylko około, powiedzmy, 10 razy w miesiącu, więc nawet jeśli spojrzę tylko na wartości minutowe, to 0,02% czasu [10 / (60 * 24 * 30) * 100].

Próbowałem użyć losowego lasu i daje to wskaźnik błędów około 2%, co jest nie do przyjęcia, a z tego, co przeczytałem, większość algorytmów uczenia maszynowego ma podobne wskaźniki błędów. Czy ktoś zna lepsze podejście?

Losowe lasy, GBM czy nawet nowszy i bardziej wyszukany xgboost nie są najlepszymi kandydatami do binarnej klasyfikacji (przewidywania wzrostów i spadków) prognoz akcji lub handlu na rynku Forex, a przynajmniej nie jako główny algorytm. Powodem jest to, że w przypadku tego konkretnego problemu one wymagają ogromnej ilości drzew (i głębokości drzew w przypadku GBM lub xgboost), aby uzyskać rozsądną dokładność (Breiman sugerował użycie co najmniej 5000 drzew i „nie skąpić”, a w rzeczywistości jego główny artykuł ML na temat RF użył 50 000 drzew na biegać). Jednak niektóre kwanty używają losowych lasów jako selektorów funkcji, podczas gdy inne używają ich do generowania nowych funkcji. Wszystko zależy od charakterystyki danych. Sugerowałbym przeczytanie tego pytania i odpowiedzi na stronie quant.stackexchange, gdzie ludzie dyskutują, jakie metody są najlepsze i kiedy ich używać, między innymi ISOMAP, Laplacian eigenmaps, ANN, optymalizacja roju. Sprawdź tag uczenia maszynowego w tej samej witrynie, gdzie możesz znaleźć informacje związane z określonym zbiorem danych.

Zaimplementuj MLP w tensorflow

W sieci jest wiele zasobów o tym, jak wdrożyć MLP w tensorflow, a większość przykładów działa 🙂 Ale interesuje mnie konkretny, o którym dowiedziałem się z https://www.coursera.org/learn/machine-learning . W którym używa funkcji kosztu zdefiniowanej w następujący sposób:

hθ jest funkcją sigmoidalną. A oto moja implementacja:

# one hidden layer MLP

x = tf.placeholder(tf.float32, shape=[None, 784])

y = tf.placeholder(tf.float32, shape=[None, 10])

W_h1 = tf.Variable(tf.random_normal([784, 512]))

h1 = tf.nn.sigmoid(tf.matmul(x, W_h1))

W_out = tf.Variable(tf.random_normal([512, 10]))

y_ = tf.matmul(h1, W_out)

# cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(y_, y)

cross_entropy = tf.reduce_sum(- y * tf.log(y_) – (1 – y) * tf.log(1 – y_), 1)

loss = tf.reduce_mean(cross_entropy)

train_step = tf.train.GradientDescentOptimizer(0.05).minimize(loss)

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

# train

with tf.Session() as s:

s.run(tf.initialize_all_variables())

for i in range(10000):

batch_x, batch_y = mnist.train.next_batch(100)

s.run(train_step, feed_dict={x: batch_x, y: batch_y})

if i % 100 == 0:

train_accuracy = accuracy.eval(feed_dict={x: batch_x, y: batch_y})

print(‘step {0}, training accuracy {1}’.format(i, train_accuracy))

Myślę, że definicja warstw jest poprawna, ale problem tkwi w cross_entropy. Jeśli użyję pierwszego, który został wykomentowany, model szybko się zbiegnie; ale jeśli użyję drugiego, który moim zdaniem / mam nadzieję jest tłumaczeniem poprzedniego równania, model nie będzie zbieżny.

Myślę, że definicja warstw jest poprawna, ale problem tkwi w cross_entropy. Jeśli użyję pierwszego, który został wykomentowany, model szybko się zbiegnie; ale jeśli użyję drugiego, który moim zdaniem / mam nadzieję jest tłumaczeniem poprzedniego równania, model nie będzie zbieżny.

Popełniłeś trzy błędy:

  1. Pominięto składniki przesunięcia przed przekształceniami nieliniowymi (zmienne b_1 i b_out). Zwiększa to reprezentatywną moc sieci neuronowej.
  2. Pominąłeś transformację softmax w górnej warstwie. To sprawia, że dane wyjściowe są rozkładami prawdopodobieństwa, więc można obliczyć entropię krzyżową, która jest zwykłą funkcją kosztu do klasyfikacji.
  3. Użyłeś formy binarnej entropii krzyżowej, podczas gdy powinieneś był użyć formy wieloklasowej.

Po uruchomieniu tego uzyskuję dokładność powyżej 90%:

import tensorflow as tf

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets(‘/tmp/MNIST_data’, one_hot=True)

x = tf.placeholder(tf.float32, shape=[None, 784])

y = tf.placeholder(tf.float32, shape=[None, 10])

W_h1 = tf.Variable(tf.random_normal([784, 512]))

b_1 = tf.Variable(tf.random_normal([512]))

h1 = tf.nn.sigmoid(tf.matmul(x, W_h1) + b_1)

W_out = tf.Variable(tf.random_normal([512, 10]))

b_out = tf.Variable(tf.random_normal([10]))

y_ = tf.nn.softmax(tf.matmul(h1, W_out) + b_out)

# cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(y_, y)

cross_entropy = tf.reduce_sum(- y * tf.log(y_), 1)

loss = tf.reduce_mean(cross_entropy)

train_step = tf.train.GradientDescentOptimizer(0.05).minimize(loss)

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

# train

with tf.Session() as s:

s.run(tf.initialize_all_variables())

for i in range(10000):

batch_x, batch_y = mnist.train.next_batch(100)

s.run(train_step, feed_dict={x: batch_x, y: batch_y})

if i % 1000 == 0:

train_accuracy = accuracy.eval(feed_dict={x: batch_x, y: batch_y})

print(‘step {0}, training accuracy {1}’.format(i, train_accuracy))

Kroki uczenia maszynowego

Która z poniższych opcji kroków jest właściwa podczas tworzenia modelu predykcyjnego?

Opcja 1: Najpierw wyeliminuj najbardziej ewidentnie złe predyktory i przetwórz wstępnie pozostałe, jeśli to konieczne, a następnie wytrenuj różne modele z walidacją krzyżową, wybierz kilka najlepszych, zidentyfikuj najlepsze predyktory, z których każdy z nich korzystał, a następnie przetrenuj te modele tylko z tymi predyktorami i ponownie oceń dokładność za pomocą walidacji krzyżowej, a następnie wybierz najlepszy z nich i przećwicz go na pełnym zestawie uczącym przy użyciu jego kluczowych predyktorów, a następnie użyj go do przewidzenia zestawu testowego.

Opcja 2: Najpierw wyeliminuj najbardziej ewidentnie złe predyktory, następnie w razie potrzeby przetwórz wstępnie pozostałe, a następnie użyj techniki wyboru cech, takiej jak rekurencyjna selekcja cech (np. RFE z rf) z walidacją krzyżową, na przykład w celu zidentyfikowania idealnej liczby kluczowych predyktorów i czym są te predyktory, a następnie wytrenuj różne typy modeli z weryfikacją krzyżową i zobacz, który z nich zapewnia największą dokładność z najlepszymi predyktorami zidentyfikowanymi wcześniej. Następnie wytrenuj ponownie najlepszy z tych modeli z tymi predyktorami w pełnym zestawie uczącym, a następnie użyj go do przewidywania zestawu testowego.

Okazało się, że obie opcje są nieco wadliwe. Tak więc ogólnie (bardzo ogólnie) jest to modelowanie predykcyjne:

Czyszczenie danych: zajmuje najwięcej czasu, ale każda spędzona tutaj sekunda jest tego warta. Im czystsze dane przejdą przez ten krok, tym mniejszy będzie całkowity czas spędzony.

Dzielenie zbioru danych: zbiór danych zostałby podzielony na zbiory uczące i testowe, które byłyby wykorzystywane odpowiednio do celów modelowania i prognozowania. Ponadto należałoby również przeprowadzić dodatkowy podział jako zestaw do weryfikacji krzyżowej. Transformacja i redukcja: obejmuje procesy takie jak transformacje, średnie i mediana skalowania itp.

Wybór funkcji: można to zrobić na wiele sposobów, takich jak wybór progu, wybór podzbioru itp.

Projektowanie modelu predykcyjnego: Zaprojektuj model predykcyjny na podstawie danych szkoleniowych w zależności od dostępnych funkcji.

Cross Validation: Final Prediction, Validation

Zrozumienie uczenia się ze wzmocnieniem za pomocą sieci neuronowej (Qlearning)

Próbuję zrozumieć uczenie się przez wzmacnianie i procesy decyzyjne markowa (MDP) w przypadku, gdy sieć neuronowa jest wykorzystywana jako aproksymator funkcji. Mam trudności ze związkiem między MDP, w którym środowisko jest badane w sposób probabilistyczny, w jaki sposób jest to odwzorowywane z powrotem na parametry uczenia się i w jaki sposób znajduje się ostateczne rozwiązanie / zasady. Czy mam rację, zakładając, że w przypadku Q-learning, sieć neuronowa zasadniczo działa jako aproksymator funkcji dla samej wartości q, tak wiele kroków w przyszłości? Jak to się ma do aktualizacji parametrów za pomocą wstecznej propagacji lub innych metod? Ponadto, kiedy sieć nauczyła się przewidywać przyszłą nagrodę, jak to pasuje do systemu pod względem faktycznego podejmowania decyzji? Zakładam, że ostateczny system prawdopodobnie nie dokonałby przejść między stanami.

W Q-Learning na każdym kroku będziesz korzystać z obserwacji i nagród, aby zaktualizować swoją funkcję Qvalue:

Masz rację mówiąc, że sieć neuronowa jest tylko przybliżeniem funkcji dla funkcji wartości q. Ogólnie rzecz biorąc, część aproksymacyjna to tylko standardowy nadzorowany problem uczenia się. Twoja sieć wykorzystuje (s, a) jako dane wejściowe, a wyjście to wartość q. W miarę dostosowywania wartości q należy wyszkolić te nowe próbki w sieci. Mimo to napotkasz pewne problemy, ponieważ używasz skorelowanych próbek, a SGD ucierpi. Jeśli patrzysz na artykuł DQN, sprawy mają się nieco inaczej. W takim przypadku to, co robią, to umieszczanie próbek w wektorze (odtwarzanie doświadczenia). Aby nauczyć sieć, próbkują krotki z wektora, ładują się za pomocą tych informacji, aby uzyskać nową wartość q, która jest przekazywana do sieci. Kiedy mówię o nauczaniu, mam na myśli dostosowanie parametrów sieci za pomocą stochastycznego zejścia gradientowego lub ulubionego podejścia optymalizacyjnego. Nie ucząc próbek w kolejności, w jakiej są zbierane przez politykę, dekorelujesz je, co pomaga w szkoleniu. Na koniec, aby podjąć decyzję o stanie, wybierasz akcję, która zapewnia najwyższą wartość q:

Jeśli Twoja funkcja wartości Q została całkowicie wyuczona, a środowisko jest nieruchome, w tym momencie dobrze jest być chciwym. Jednak podczas nauki oczekuje się, że będziesz eksplorować. Istnieje kilka podejść, które są jednym z najłatwiejszych i najpowszechniejszych sposobów.

P: Regresja liniowa z niesymetryczną funkcją kosztu?

Chcę przewidzieć jakąś wartość Y(x) i próbuję uzyskać prognozy , które optymalizują się między możliwie najniższym poziomem, ale nadal większym niż Y(x). Innymi słowy:

Myślę, że prosta regresja liniowa powinna wystarczyć. Więc trochę wiem, jak zaimplementować to ręcznie, ale myślę, że nie jestem pierwszą osobą, która ma tego rodzaju problem. Czy są jakieś pakiety / biblioteki (najlepiej Python), które robią to, co chcę? Jakiego słowa kluczowego muszę szukać? A co gdybym znał funkcję Y0(x) > 0 gdzie  Y(x) > Y0(x) . Jaki jest najlepszy sposób wprowadzenia tych ograniczeń?

Jeśli dobrze cię rozumiem, chcesz się mylić i przeceniać. Jeśli tak, potrzebujesz odpowiedniej, asymetrycznej funkcji kosztu. Jednym prostym kandydatem jest poprawienie kwadratowej straty:

L : (x,α) -> x2(sgnx + α) 2

gdzie -1 < α < 1  jest parametrem, którego można użyć, aby wymienić karę za niedoszacowanie na przeszacowanie. Dodatnie wartości α  penalizują przeszacowanie, więc będziesz chciał ustawić wartość ujemną. W Pythonie wygląda to następująco: def loss (x, a): return x ** 2 * (numpy.sign (x) + a) ** 2

Następnie wygenerujmy dane:

import numpy

x = numpy.arange (-10, 10, 0,1)

y = -0,1 * x ** 2 + x + numpy.sin (x) + 0,1 * numpy.random.randn (len (x))

Na koniec zrobimy naszą regresję w tensorflow, bibliotece uczenia maszynowego od Google, która obsługuje automatyczne różnicowanie (dzięki czemu optymalizacja oparta na gradientach takich problemów jest prostsza). Posłużę się tym przykładem jako punktem wyjścia

import tensorflow as tf

X = tf.placeholder(“float”) # create symbolic variables

Y = tf.placeholder(“float”)

w = tf.Variable(0.0, name=”coeff”)

b = tf.Variable(0.0, name=”offset”)

y_model = tf.mul(X, w) + b

cost = tf.pow(y_model-Y, 2) # use sqr error for cost function

def acost(a): return tf.pow(y_model-Y, 2) * tf.pow(tf.sign(y_model-Y) + a, 2)

train_op = tf.train.AdamOptimizer().minimize(cost)

train_op2 = tf.train.AdamOptimizer().minimize(acost(-0.5))

sess = tf.Session()

init = tf.initialize_all_variables()

sess.run(init)

for i in range(100):

for (xi, yi) in zip(x, y):

# sess.run(train_op, feed_dict={X: xi, Y: yi})

sess.run(train_op2, feed_dict={X: xi, Y: yi})

print(sess.run(w), sess.run(b))

cost to zwykły błąd kwadratowy, podczas gdy acost to wspomniana wcześniej asymetryczna funkcja straty.

Jeśli korzystasz z kosztu, który otrzymasz

1,00764 -3,32445

Jeśli używasz acost, otrzymasz

1,02604 -1,07742

acost wyraźnie stara się nie lekceważyć. Nie sprawdzałem zbieżności, ale masz pomysł.

[44][Machine Learning](7)

Wkład każdej cechy w klasyfikacji?

Mam kilka funkcji i używam Weka do klasyfikowania moich instancji

Na przykład mam: Liczba adj liczba przysłówków liczba znaków interpunkcyjnych w moim zestawie funkcji, ale chcę poznać udział każdej funkcji w zestawie funkcji, więc jakie metryki lub parametry są pomocne w uzyskaniu wkładu funkcji?

Nazywa się to rankingiem cech, który jest ściśle powiązany z wyborem cech.

ranking cech = określanie ważności każdej indywidualnej cechy

wybór cech = wybór podzbioru odpowiednich cech do wykorzystania w konstrukcji modelu. Jeśli więc możesz klasyfikować funkcje, możesz ich używać do wybierania funkcji, a jeśli możesz wybrać podzbiór przydatnych funkcji, dokonałeś przynajmniej częściowego rankingu, usuwając bezużyteczne jedynki. Ta strona Wikipedii i ten post w Quorze powinny dać kilka pomysłów. Najpopularniejsze jest rozróżnienie między metodami filtrującymi a metodami opartymi na opakowaniach i metodami osadzonymi. Jednym prostym, przybliżonym sposobem jest użycie znaczenia cech w lasach drzew

Inne popularne sposoby:

* rekurencyjna eliminacja funkcji.

* regresja krokowa (lub LARS Lasso).

Jeśli używasz scikit-learn, sprawdź module-sklearn.feature_selection. Domyślam się, że Weka ma kilka podobnych funkcji.

P: Kiedy używać Random Forest zamiast SVM i odwrotnie?

Tagi: uczenie maszynowe (poprzednie Q) (następne Q), svm (poprzednie Q) (następne Q)

Kiedy można używać Random Forest zamiast SVM i odwrotnie?

Rozumiem, że walidacja krzyżowa i porównanie modeli są ważnym aspektem wyboru modelu, ale tutaj chciałbym dowiedzieć się więcej o praktycznych zasadach i heurystyce tych dwóch metod. Czy ktoś mógłby wyjaśnić subtelności, mocne i słabe strony klasyfikatorów oraz problemy, które najlepiej pasują do każdego z nich? Dzięki za pomoc!

Powiedziałbym, że wybór zależy w dużej mierze od tego, jakie masz dane i jaki jest Twój cel. Kilka praktycznych zasad. Random Forest jest wewnętrznie przystosowany do problemów z wieloma klasami, podczas gdy SVM jest z natury rzeczy dwuklasowy. W przypadku problemu z wieloma klasami należy go zredukować do wielu problemów z klasyfikacją binarną. Random Forest działa dobrze w połączeniu z funkcjami liczbowymi i kategorialnymi. Kiedy funkcje są w różnych skalach, to też jest w porządku. Z grubsza rzecz biorąc, w Random Forest możesz używać danych w takiej postaci, w jakiej są. SVM maksymalizuje „margines”, a zatem opiera się na koncepcji „odległości” między różnymi punktami. Do Ciebie należy decyzja, czy „odległość” ma znaczenie. W konsekwencji kodowanie typu one-hot dla cech kategorialnych jest koniecznością. Ponadto zdecydowanie zaleca się skalowanie min-max lub inne na etapie przetwarzania wstępnego. Jeśli masz dane z n punktami i cechami, krokiem pośrednim w SVM jest skonstruowanie macierzy nxn (pomyśl o wymaganiach pamięci do przechowywania) poprzez obliczenie n2 iloczynów skalarnych (złożoność obliczeniowa). Dlatego z reguły SVM jest trudny do skalowania powyżej 10 ^ 5 punktów. Duża liczba cech (jednorodne cechy ze znaczną odległością, piksel obrazu byłby idealnym przykładem) generalnie nie stanowi problemu. W przypadku problemu klasyfikacyjnego Random Forest podaje prawdopodobieństwo przynależności do klasy. S SVM podaje „wektory pomocnicze”, czyli punkty w każdej klasie najbliżej granicy między klasami. Mogą być sami zainteresowani interpretacją.

Połączenie między regularyzacją a opadaniem gradientowym

Chciałbym zrozumieć regularyzację / kurczenie się w świetle MLE / Gradient Descent. Znam oba pojęcia, ale nie wiem / nie rozumiem, czy oba służą do wyznaczania współczynników modelu liniowego. Jeśli tak, jakie kroki należy wykonać? Aby bardziej szczegółowo rozwinąć, zastosowano regularyzację w celu zmniejszenia wariancji, co jest osiągane poprzez ukaranie współczynników modelu liniowego. Parametr dostrajania, lambda, jest określany przez weryfikację krzyżową. Po określeniu lambdy współczynniki są wyznaczane automatycznie, prawda? Dlaczego więc musimy minimalizować (RSS + termin regularyzacji), aby znaleźć współczynniki? Czy kroki są następujące:

  1. Znajdź lambdę poprzez walidację krzyżową
  2. Minimalizuj (RSS + regularyzacja) przez MLE lub GD
  3. Znajdź współczynniki
  4. Karać współczynniki, aby zmniejszyć wariancję
  5. Pozostaje nam niewielki podzbiór współczynników

Procedura dopasowania to ta, która faktycznie znajduje współczynniki modelu. Termin regularyzacyjny jest używany do pośredniego znajdowania współczynników poprzez karanie dużych współczynników podczas procedury dopasowania. Prosty (choć nieco stronniczy / naiwny) przykład może pomóc zilustrować tę różnicę między regularyzacją a zejściem gradientowym:

X, y <- odczytaj dane wejściowe

dla różnych wartości lambda L.

dla każdego fałdu walidacji krzyżowej przy użyciu X, y, L

theta <- minimalizuj (RSS + regularyzacja za pomocą L) przez MLE / GD

score <- oblicz wydajność modelu przy użyciu theta na zbiorze walidacyjnym

jeśli średni wynik w fałdach dla L jest lepszy niż aktualny najlepszy średni wynik

L_best <- L

Jak widać, procedura dopasowania (w naszym przypadku MLE lub GD) wyszukuje najlepsze współczynniki przy określonej wartości lambda. Na marginesie, spojrzałbym tutaj na tę odpowiedź dotyczącą dostrajania parametru regularyzacji, ponieważ jest ona nieco mętna pod względem odchylenia.

W jaki sposób naukowcy wymyślili prawidłowy model ukrytego Markowa?

Rozumiem, w jaki sposób ukryty model Markowa jest używany w sekwencjach genomowych, takich jak znajdowanie genu. Ale nie rozumiem, w jaki sposób wymyślili konkretny model Markowa. Mam na myśli, ile stanów powinien mieć model? Ile możliwych przejść? Czy model powinien mieć pętlę? Skąd mieliby wiedzieć, że ich model jest optymalny? Czy wyobrażają sobie, powiedzmy 10 różnych modeli, porównują te 10 modeli i publikują najlepszy?

Znam trzy główne podejścia:

  1. A priori. Możesz wiedzieć, że są cztery pary zasad do wyboru, więc pozwól HMM mieć cztery stany. Albo możesz wiedzieć, że angielski ma 44 fonemy, a więc 44 stany dla warstwy ukrytych fonemów w modelu rozpoznawania głosu.
  2. Szacowanie. Liczbę stanów można często oszacować z góry, być może poprzez proste grupowanie obserwowanych cech HMM. Jeśli macierz przejść HMM jest trójkątna (co często ma miejsce w przewidywaniu awarii), liczba stanów determinuje kształt rozkładu całkowitego czasu od stanu początkowego do stanu końcowego.
  3. Optymalizacja. Jak sugerujesz, albo utworzono wiele modeli i dopasowano je, a najlepszy model został wybrany. Można również dostosować metodologię, która uczy się HMM, aby umożliwić modelowi dodawanie lub odrzucanie stanów w razie potrzeby.

Samouczek dotyczący analizy nastrojów

Próbuję zrozumieć analizę sentymentów i jak ją zastosować w dowolnym języku (R, Python itp.). Chciałbym wiedzieć, czy w internecie jest dobre miejsce na tutorial, który mogę śledzić. Poszukałem w Google, ale nie byłem zbyt zadowolony, ponieważ nie były to samouczki, a raczej teoria. Chcę teorii i praktycznych przykładów.

Książka NLTK jest zdecydowanie najlepszym samouczkiem na temat podstawowego NLP, jaki widziałem (w Pythonie). Kurs Coursera dotyczący NLP jest również dość dobry. Rozpoczyna się od podstaw i przenosi ucznia na poziom nowicjusza.

Przewidywanie nowych danych z naiwnym Bayesem

Powiedzmy, że miałem następujący zestaw treningowy dla algorytmu Naive Bayes.

Outlook Person gra w golfa?

——- —— ———-

Sunny Joe Tak

Sunny Mary Tak

Raining Joe Tak

Raining Mary No

Pada Harry Tak

Jeśli spróbuję przewidzieć, czy Harry będzie grał w golfa w słoneczny dzień (na który nie mam danych). Czy poprawne byłoby wykluczenie atrybutu osoby i wykorzystanie pozostałego atrybutu perspektywy do obliczenia prawdopodobieństwa takiego zdarzenia? A może może to potencjalnie powodować problemy z większym zestawem danych, którego nie znam?

Wśród założeń Naive Bayes głównym z nich jest to, że cechy są warunkowo niezależne. W przypadku naszego problemu mielibyśmy:

Aby odpowiedzieć na pytanie, czy Harry będzie grał w słoneczny dzień ?, musisz obliczyć:

P (P lay | Outlook, Person) ∝ P (Play) P (Outlook | Play) P (Name | Play)

Aby odpowiedzieć na pytanie, czy Harry będzie grał w słoneczny dzień ?, musisz obliczyć:

P (Y es|Sunny, Harry) = P (Y es)P (Sunny|Y es)P (Harry|Y es)

P (No|Sunny, Harry) = P (No)P (Sunny|No)P (Harry|No)

i wybierz prawdopodobieństwo o większej wartości

Tak mówi teoria. Aby odpowiedzieć na twoje pytanie, przeformułuję główne założenie Naive Bayes. Założenie, że cechy są niezależne, biorąc pod uwagę wynik, oznacza w zasadzie, że informacje podane przez wspólną dystrybucję można uzyskać poprzez iloczyn marginesów. Mówiąc prostym językiem: załóżmy, że możesz dowiedzieć się, czy Harry gra w słoneczne dni, jeśli wiesz tylko, ile Harry gra w ogóle i ile ktoś gra w słoneczne dni. Jak widać, po prostu nie wykorzystałbyś faktu, że Harry gra w słoneczne dni, nawet gdybyś miał ten rekord w swoich danych. Po prostu dlatego, że Naive Bayes zakłada, że ​​nie ma użytecznych informacji w interakcji między cechami, i jest to dokładne znaczenie warunkowej niezależności, na której opiera się Naive Bayes. To powiedziawszy, jeśli chcesz korzystać z interakcji funkcji, musisz albo użyć innego modelu, albo po prostu dodać nową połączoną funkcję, taką jak połączenie czynników nazw i perspektyw. Podsumowując, jeśli nie uwzględnisz nazw w swoich funkcjach wejściowych, będziesz mieć ogólny klasyfikator mądrości, tak jak wszyscy grają bez względu na perspektywę, ponieważ większość instancji ma play = yes. Jeśli umieścisz nazwę w swoich zmiennych wejściowych, pozwolisz zmienić tę ogólną mądrość za pomocą czegoś konkretnego dla gracza. Więc twoja mądrość klasyfikatora wyglądałaby tak, jakby gracze ogólnie woleli grać, bez względu na perspektywy, ale poślubiaj mniej, aby grać mniej w Rainy. Istnieje jednak potencjalny problem z Naive Bayes w Twoim zestawie danych. Ten problem jest związany z potencjalną dużą liczbą poziomów dla zmiennej Nazwa. W celu przybliżenia prawdopodobieństwa dzieje się jedna rzecz: więcej danych, lepsze szacunki. Prawdopodobnie miałoby to miejsce w przypadku zmiennej Outlook, ponieważ są dwa poziomy i dodanie większej ilości danych prawdopodobnie nie zwiększyłoby liczby poziomów. Więc szacunki dla Outlooka byłyby prawdopodobnie lepsze przy większej ilości danych. Jednak dla nazwy nie będziesz miał takiej samej sytuacji. Dodanie większej liczby instancji byłoby możliwe tylko poprzez dodanie większej liczby nazw. Oznacza to, że średnio liczba wystąpień dla każdej nazwy byłaby stosunkowo stabilna. A jeśli miałbyś jedną instancję, tak jak w przypadku Harry’ego, nie masz wystarczających danych, aby oszacować P (Harry | Nie). Tak się składa, że ​​problem ten można załagodzić stosując wygładzanie. Być może wygładzanie Laplace’a (lub bardziej ogólne jak Lindstone) jest bardzo pomocne. Powodem jest to, że szacunki oparte na maksymalnym prawdopodobieństwie mają duże problemy z takimi przypadkami. Mam nadzieję, że odpowiada przynajmniej częściowo na Twoje pytanie.

 Bagging vs Dropout w głębokich sieciach neuronowych

Pakowanie to generowanie wielu predyktorów, które działają tak samo, jak pojedynczy predyktor. Dropout to technika, która uczy sieci neuronowe uśredniania wszystkich możliwych podsieci. Patrząc na najważniejsze zawody Kaggle’a wydaje się, że te dwie techniki są często używane razem. Nie widzę żadnej teoretycznej różnicy poza faktyczną implementacją. Kto może mi wyjaśnić, dlaczego powinniśmy używać ich obu w każdej rzeczywistej aplikacji? i dlaczego wydajność poprawia się, gdy używamy ich obu?

Bagging i dropout nie dają tego samego, chociaż oba są typami uśredniania modelu. Pakowanie to operacja obejmująca cały zbiór danych, która trenuje modele na podzbiorze danych uczących. Dlatego niektóre przykłady treningowe nie są pokazane dla danego modelu.

Z kolei rezygnacja jest stosowana do funkcji w każdym przykładzie szkoleniowym. Prawdą jest, że wynik jest funkcjonalnie równoważny do trenowania wykładniczo wielu sieci (ze wspólnymi wagami!), A następnie równego ważenia ich wyników. Ale porzucanie działa w przestrzeni funkcji, powodując, że niektóre funkcje są niedostępne w sieci, a nie pełne przykłady. Ponieważ każdy neuron nie może całkowicie polegać na jednym wejściu, reprezentacje w tych sieciach są zwykle bardziej rozproszone, a sieć jest mniej podatna na przepełnienie.

Kiedy muszę używać aucPR zamiast auROC? (i wzajemnie)

Zastanawiam się, czy czasami do walidacji modelu nie lepiej jest użyć aucPR zamiast aucROC? Czy te przypadki zależą tylko od „zrozumienia domeny i biznesu”? Szczególnie myślę o „problemie z niezrównoważoną klasą”, w którym bardziej logiczne wydaje się użycie aucPR, ponieważ przypominanie i precyzja są dobrze używanymi miernikami do tego problem. Tak, masz rację, że dominująca różnica między obszarem pod krzywą krzywej charakterystycznej operatora odbiornika (ROC-AUC) a obszarem pod krzywą precyzyjnej krzywej przypomnienia (PR-AUC) polega na jej przyczepności dla klas niezrównoważonych . Są bardzo podobne i wykazano, że zawierają zasadniczo te same informacje, jednak krzywe PR są nieco bardziej skomplikowane, ale dobrze narysowana krzywa daje pełniejszy obraz. Problem z PR-AUC polega na tym, że trudno jest interpolować między punktami na krzywej PR, a zatem integracja numeryczna w celu uzyskania obszaru pod krzywą staje się trudniejsza. Sprawdź tę dyskusję na temat różnic i podobieństw.

Cytując streszczenie Davisa z 2006 r .:

Krzywe charakterystyki operatora odbiornika (ROC) są powszechnie używane do przedstawiania wyników binarnych problemów decyzyjnych w uczeniu maszynowym. Jednak w przypadku wysoce wypaczonych zestawów danych krzywe Precision-Recall (PR) dają bardziej pouczający obraz wydajności algorytmu. Pokazujemy, że istnieje głęboki związek między przestrzenią ROC a przestrzenią PR, tak że krzywa dominuje w przestrzeni ROC wtedy i tylko wtedy, gdy dominuje w przestrzeni PR. Następstwem jest koncepcja możliwej do osiągnięcia krzywej PR, która ma właściwości podobne do wypukłego kadłuba w przestrzeni ROC; pokazujemy wydajny algorytm obliczania tej krzywej. Na koniec zauważamy również, że różnice w dwóch typach krzywych są istotne dla projektowania algorytmów. Na przykład w przestrzeni PR niepoprawna jest liniowa interpolacja między punktami. Ponadto algorytmy optymalizujące obszar pod krzywą ROC nie gwarantują optymalizacji obszaru pod krzywą PR.

Cel wizualizacji danych wielowymiarowych?

Istnieje wiele technik wizualizacji zbiorów danych o dużych wymiarach, takich jak T-SNE, izomapa, PCA, nadzorowany PCA itp. Przechodzimy przez ruchy rzutowania danych w dół do przestrzeni 2D lub 3D, więc mamy „ładne obrazy ”. Ale czy ten „ładny obrazek” ma znaczenie? Jakie możliwe spostrzeżenia może ktoś uchwycić, próbując wizualizować tę osadzoną przestrzeń? Pytam, ponieważ projekcja w dół do tej osadzonej przestrzeni jest zwykle bez znaczenia. Na przykład, jeśli projektujesz swoje dane na główne komponenty generowane przez PCA, te główne komponenty (wektory eigan) nie odpowiadają cechom w zbiorze danych; to ich własna przestrzeń fabularna. Podobnie, t-SNE rzutuje dane w dół do przestrzeni, w której elementy są blisko siebie, jeśli minimalizują jakąś rozbieżność KL. To już nie jest oryginalna przestrzeń funkcji. (Popraw mnie, jeśli się mylę, ale nie sądzę, aby społeczność ML podjęła duży wysiłek, aby użyć t-SNE do pomocy w klasyfikacji; to jednak inny problem niż wizualizacja danych.) Jestem po prostu w dużej mierze zdezorientowani, dlaczego ludzie robią tak wielką sprawę z niektórymi z tych wizualizacji.

Przede wszystkim twoje wyjaśnienie dotyczące metod jest prawidłowe. Chodzi o to, że algorytmy osadzania mają nie tylko wizualizować, ale zasadniczo zmniejszać wymiarowość, aby poradzić sobie z dwoma głównymi problemami w statystycznej analizie danych, a mianowicie Curse of Dimentionaliy i Low-Sample Size Problem, tak aby nie miały przedstawiać fizycznie zrozumiałych cech i one są nie tylko znaczące, ale także niezbędne do analizy danych! W rzeczywistości wizualizacja jest prawie ostatnim zastosowaniem metod osadzania. Projekcja wielowymiarowa danych w przestrzeni o niższych wymiarach pomagają zachować rzeczywiste odległości parami (głównie dystans euklidesowy), które ulegają zniekształceniu w dużych wymiarach lub przechwytują większość informacji osadzonych w wariancji różnych cech.

Świetne pytanie. W rozdziale 4 książki „Oświetlanie ścieżki, plan badań i rozwoju w zakresie analityki wizualnej” Jamesa J. Thomasa i Kristin A. Cooka znajduje się dyskusja na temat reprezentacji danych i transformacji danych. W swoich badaniach podchodziłem do tego pytania w kontekście PCA i analizy czynnikowej. Moja krótka odpowiedź jest taka, że ​​wizualizacje są przydatne, jeśli ktoś ma transformację danych, aby przejść z przestrzeni wizualizacji do pierwotnej przestrzeni danych. Byłoby to dodatkowo prowadzone w ramach analizy wizualnej.

Opierając się na oświadczeniach i dyskusjach, myślę, że należy wyróżnić ważną kwestię. Transformacja do niższej przestrzeni wymiarowej może zredukować informacje, co różni się od uczynienia ich bezsensownymi. Pozwólcie, że użyję następującego

Analogia: Obserwowanie (2D) obrazów naszego świata (3D) jest zwykłą praktyką. Metoda wizualizacji zapewnia tylko różne „okulary” do oglądania wysokowymiarowej przestrzeni. Dobrze jest „zaufać” metodzie wizualizacji, aby zrozumieć jej elementy wewnętrzne. Moim ulubionym przykładem jest MDS. Metodę tę można łatwo wdrożyć samodzielnie, korzystając z narzędzia optymalizacyjnego (np. R optim). Możesz więc zobaczyć, jak słowa metody, możesz zmierzyć błąd wyniku itp. Na koniec otrzymasz obraz zachowujący podobieństwo oryginalnych danych z pewnym stopniem precyzji. Nie więcej, ale nie mniej.

Pylearn2 vs TensorFlow

Mam zamiar zagłębić się w długi projekt badawczy NN i chciałem pchnąć w kierunku Pylearn2 lub TensorFlow? Czy od grudnia 2015 r. Społeczność zaczęła zmieniać kierunek? Możesz wziąć pod uwagę, że Pylearn2 nie ma już programisty i teraz wskazuje na inne biblioteki oparte na Theano: istnieją inne struktury uczenia maszynowego zbudowane na bazie Theano, które mogą Cię zainteresować, takie jak: Blocks, Keras i Lasagne.

TensorFlow dopiero się zaczyna, warto jednak zauważyć, że liczba pytań w TensorFlow (244) na temat Stack Overflow już przewyższa Torch (166) i prawdopodobnie dogoni Theano (672) w 2016 roku.

O ile wiem, istniejące (prawie wszystkie) biblioteki w Pythonie mogą obsługiwać bardzo złożone modele sieci neuronowych. Jednak TensorFlow nie jest obecnie dopracowany. Wciąż ma długą drogę do rozwoju, zanim zostanie zaakceptowana jako biblioteka głównego nurtu dla ML. Tak więc, kontynuując istniejące biblioteki, takie jak PyLearn / Keras / Torch, et ma sens, ponieważ od teraz (również ponieważ mają już szerokie i oddane społeczności), ponieważ musisz skoncentrować się na badaniach, a nie martwić się błędami i problemami technicznymi biblioteki.

 Przewidywanie użycia aplikacji na telefonie komórkowym

Obecnie tworzę aplikację, która stara się przewidzieć, w jaki sposób użytkownicy używają różnych aplikacji, i podpowiadać mu, z jakich aplikacji będzie aktualnie korzystać (lista rankingowa oparta na aktualnych warunkach użytkownika). W ciągu ostatniego tygodnia zbieram dane i nie wiem, jakie podejście przyjąć. Zastanawiałem się nad zastosowaniem wielu sezonowości (popraw mnie, jeśli używam złej terminologii), takich jak pora dnia, dzień tygodnia, tydzień miesiąca, miesiąc i kwartał. Chcę również użyć lokalizacji i innych danych z czujników (takich jak stan użytkownika „chodzenie” lub „siedzenie” później). Podsumowałem użycie w ciągu ostatniego tygodnia na poziomie godzinowym dla niektórych aplikacji. Kraty reprezentują każde otwarcie aplikacji w tym czasie, a zielona linia to ważona średnia krocząca, która ma wagę 0,5 w odniesieniu do najbliższych sąsiadów. Teraz widzę przed sobą kilka wyzwań i byłbym bardzo wdzięczny za wkład innych osób lub dobre zasoby, aby znaleźć dalsze informacje.

* Czy uważasz, że mój model jest dobry do tego problemu

* Jak uwzględnić starzenie się danych?

* Jak zsumować różne sezonowości / stany / lokalizacje? Pomnóż je?

* Czy ma sens wygładzanie krzywej tak jak ja?

Więc zebrałeś dane pokazujące, która aplikacja jest używana w dowolnym momencie, podzielone na godziny w ciągu dnia. Masz kilka aplikacji. Wspominasz o innych wymiarach, takich jak stan użytkownika podczas korzystania z aplikacji (chodzenie, brak chodzenia), (aktywny, nieaktywny – wydaje mi się, że nie zbierasz dużego wykorzystania 2-6. Dzieje się tak dlatego, że użycie pochodzi z samokierowany ping z aplikacji, gdy użytkownik jest naprawdę nieobecny?), lokalizacja (czy będą to wszystkie możliwe wartości, czy też użyjesz czegoś w rodzaju faktu, że ta lokalizacja była często wcześniej widziana?). Innym interesującym związkiem może być parowanie aplikacji, tj. Wyszukiwanie relacji między aplikacją A używaną po użyciu aplikacji B lub przed aplikacją B. Niezależnie od tego na pewno będziesz mieć wiele różnych wymiarów, na podstawie których można zmierzyć charakterystykę użytkowania dla dowolnego konkretnego pomiaru użytkowania i tak jesteś z pewnością będzie miał problem wielowymiarowy. Możesz spróbować wizualizować to jako problem przestrzeni N, z osią pomiaru dla każdej z twoich cech. Każdy z poprzednich pomiarów reprezentuje wektory, a następnym pomiarem tworzony jest nowy wektor. Na tej podstawie chcesz przewidzieć przyszłe zachowanie na podstawie pomiaru charakterystyk wejściowych z przestrzeni użytkowania. Możesz wybrać coś, co klasyfikuje się jako najbliższy sąsiad i prawdopodobnie chcesz to zrobić przy pierwszym podejściu do problemu. Możesz chcieć uczynić model predykcyjny bardziej zaawansowanym, dodając prawdopodobieństwa do klasyfikatora i działając na tym. Oznacza to uzyskiwanie szacunków prawdopodobieństwa przynależności do klasy, a nie tylko zwykłych klasyfikacji. Ale budowałbym całość stopniowo. Zacznij od prostego i zwiększaj złożoność, gdy tego potrzebujesz. Zwiększona złożoność będzie miała również wpływ na wydajność, więc dlaczego nie bazować na czymś. Czy w przypadku starzenia się danych chcesz zmniejszyć moc predykcyjną charakterystyk które są za długie w zębie? Jeśli tak, powiedz sobie jasno, co to oznacza, ilościowo. Czy ufam mniejszym danym o użytkowaniu z ostatniego miesiąca niż wczorajszym? Może tak, ale w takim razie dlaczego? czy moje użycie jest inne, ponieważ jestem inny lub ponieważ ostatni miesiąc był wyjątkowy w porównaniu z wczorajszym, lub odwrotnie? Ponownie, korzystne może być zignorowanie tego na początku, a następnie próba wyszukania charakterystyk „sezonowości” lub okresowości na podstawie danych. Po ustaleniu, czy / jak to się zmienia, możesz zważyć ten wkład w porównaniu z bezpośrednim użyciem na różne sposoby. Być może chcesz zwiększyć udział w podobnym okresie (ta sama pora dnia i ta sama lokalizacja oraz poprzednie użycie aplikacji). Być może chcesz zapewnić wykładnicze tłumienie danych historycznych, ponieważ użycie zawsze się dostosowuje i zmienia, a ostatnie użycie wydaje się znacznie lepszym predyktorem niż 3xcurrent. W tym wszystkim właściwą perspektywą nauki o danych jest pozwolenie, aby dane Cię prowadziły.

[44][Machine Learning](6)

Jak znormalizować tablicę liczb dodatnich i ujemnych, aby zawierały się w przedziale od 0 do 1?

Używanie Brain do dostarczania tablicy danych z liczbami dodatnimi i ujemnymi; tablica wyjściowa będzie miała wartości 0 i 1 i uważam, że Brain dopuszcza tylko dane wejściowe od 0 do 1. Jak więc znormalizować tablicę liczb ujemnych i dodatnich, aby spełniała te wymagania?

Nazywa się to normalizacją opartą na jedności. Jeśli masz wektor X, możesz uzyskać jego znormalizowaną wersję, powiedzmy Z, wykonując:

Znajdź największą liczbę dodatnią i najmniejszą (najbardziej ujemną) liczbę w tablicy. Dodaj wartość bezwzględną najmniejszej (najbardziej ujemnej) liczby do każdej wartości w tablicy. Podzielić każdy wynik przez różnicę między największą i najmniejszą liczbą.

Korzystam z Google Analytics w mojej aplikacji mobilnej, aby zobaczyć, jak różni użytkownicy korzystają z aplikacji. Rysuję ścieżkę na podstawie stron, na które przechodzą. Biorąc pod uwagę listę ścieżek dla, powiedzmy, 100 użytkowników, jak mam zająć się grupowaniem użytkowników. Którego algorytmu użyć? Swoją drogą, myślę o wykorzystaniu pakietu sckit Learn do implementacji. Mój zbiór danych (w csv) wyglądałby tak:

DeviceID, Pageid, Time_spent_on_Page, Transition. <br>

ABC, Strona1, 3s, 1-> 2. <br>

ABC, Strona2, 2s, 2-> 4. <br>

ABC, Strona 4,1s, 4-> 1. <br>

A więc ścieżka to 1-> 2-> 4-> 1, gdzie 1,2,4 to Pageids.

Istnieją 2 różne podejścia do Twojego problemu:

Podejście wykresowe

* Jak stwierdzono, masz ważony ukierunkowany wykres i chcesz pogrupować ścieżki. Wspominam jeszcze raz, ponieważ ważne jest, aby wiedzieć, że twój problem nie jest problemem związanym z klastrowaniem wykresów lub wykrywaniem społeczności, w którym wierzchołki są skupione!

* Tworząc wykres w networkx przy użyciu dwóch ostatnich kolumn danych, możesz dodać czas spędzony jako wagę i użytkowników, którzy przekazali ten link jako atrybut krawędzi. W końcu będziesz mieć różne funkcje do grupowania: zbiór wszystkich wierzchołków, które dana osoba kiedykolwiek spotkała na wykresie, całkowity, średni i standardowy czas spędzony, parametry rozkładu najkrótszej ścieżki… które można wykorzystać do grupowania zachowań użytkowników.

Dane standardowe

* Wszystko powyższe można zrobić, efektywnie odczytując dane w macierzy. Jeśli weźmiesz pod uwagę każdą krawędź dla określonego użytkownika jako pojedynczy wiersz (tj. Będziesz mieć MxN wierszy, gdzie M to liczba użytkowników, a N to liczba krawędzi na wypadek, gdybyś trzymał się 100 przypadków!) I dodasz właściwości jako kolumny, Prawdopodobnie będę w stanie skupić zachowania. jeśli użytkownik przekroczył krawędź n razy, w wierszu odpowiadającym temu użytkownikowi i tej krawędzi dodaj kolumnę zliczającą o wartości n i taką samą dla czasu spędzonego itp. Krawędzie początkowe i końcowe są również pouczające. Uważaj, aby nazwy węzłów były zmiennymi kategorialnymi.

Jeśli chodzi o algorytmy klastrowania, możesz znaleźć wystarczająco dużo, jeśli spojrzysz na SKlearn. Mam nadzieję, że to pomogło.

Jak nauczyć się wykrywania spamu?

Chcę się dowiedzieć, jak działa wykrywacz spamu. Nie próbuję budować produktu komercyjnego, będzie to dla mnie poważna nauka. Dlatego szukam zasobów, takich jak istniejące projekty, kod źródłowy, artykuły, artykuły itp., Które mogę śledzić. Chcę uczyć się na przykładach, nie sądzę, że jestem wystarczająco dobry, aby robić to od zera. Idealnie, chciałbym ubrudzić sobie rękę w języku bayesowskim. Czy jest coś takiego? Język programowania nie jest dla mnie problemem.

ALE ponieważ chcesz rozpocząć prosty projekt edukacyjny, radzę nie przeglądać prac (które oczywiście nie są podstawowe), ale spróbować zbudować własnego bayesowskiego ucznia, co nie jest takie trudne. Osobiście sugeruję slajdy z wykładów Andrew Moore’a na temat probabilistycznych modeli graficznych, które są dostępne bezpłatnie i można się z nich uczyć w prosty i krok po kroku. Jeśli potrzebujesz bardziej szczegółowej pomocy, po prostu skomentuj tę odpowiedź, a chętnie pomogę.

W kursie uczenia maszynowego Andrew Ng na Coursera (w pewnym sensie kursie flagowym dla Coursera) ćwiczenie programistów dla Support Vector Machines było przykładem klasyfikatora spamu. Wykłady są świetne, wręcz znane i warte obejrzenia.

Podstawowe wprowadzenie do metody bayesowskiej wykrywania spamu znajduje się w książce „Doing Data Science – Straight Talk from the Frontline” autorstwa Cathy O’Neil, Rachel Schutt. Ten rozdział jest dobry, ponieważ wyjaśnia, dlaczego inne popularne modele nauki o danych nie

pracują dla klasyfikatorów spamu. Cała książka używa R w całym tekście, więc podnieś ją tylko, jeśli jesteś zainteresowany pracą z R. Używa ona adresu e-mail firmy Enron jako danych szkoleniowych, ponieważ ma już wiadomości e-mail podzielone na spam / nie spam.

Wdrażanie komplementarnego Bayesa naiwnego w Pythonie?

Problem

Próbowałem użyć Naive Bayes na oznaczonym zestawie danych dotyczących przestępstw, ale uzyskałem naprawdę słabe wyniki (7% dokładność). Naiwny Bayes działa znacznie szybciej niż inne alogorytmy, których używałem, więc chciałem spróbować dowiedzieć się, dlaczego wynik był tak niski.

Badania

Po przeczytaniu stwierdziłem, że Bayes Naive powinien być używany ze zbalansowanymi zestawami danych, ponieważ ma odchylenie dla klas o wyższej częstotliwości. Ponieważ moje dane są niezrównoważone, chciałem spróbować użyć Complementary Naive Bayes, ponieważ jest on przeznaczony specjalnie do radzenia sobie z wypaczeniami danych. W artykule opisującym proces aplikacja służy do klasyfikacji tekstu, ale nie rozumiem, dlaczego ta technika nie zadziałaby w innych sytuacjach. Możesz znaleźć artykuł, do którego się odwołuję tutaj. Krótko mówiąc, chodzi o to, aby używać wag na podstawie przypadków, w których klasa się nie pojawia. Po przeprowadzeniu pewnych badań udało mi się znaleźć implementację w Javie, ale niestety nie znam żadnej Javy i po prostu nie rozumiem algorytmu wystarczająco dobrze, aby zaimplementować siebie.

Gdzie mogę znaleźć implementację w Pythonie? Jeśli tego nie ma, jak mam go zaimplementować?

Naiwny Bayes powinien być w stanie obsłużyć niezrównoważone zbiory danych. Przypomnij sobie, że formuła Bayesa to

Zatem P (x | y) P (y) bierze pod uwagę poprzednik.

W Twoim przypadku może przesadzasz i potrzebujesz wygładzenia? Możesz zacząć od wygładzenia +1 i sprawdzić, czy daje jakieś ulepszenia. W Pythonie, używając numpy, zaimplementowałbym wygładzanie w ten sposób:

table = # counts for each feature

PT = (table + 1) / (table + 1).sum(axis=1, keepdims=1)

Zwróć uwagę, że to daje Ci Wielomianowy Naive Bayes – który ma zastosowanie tylko do danych jakościowych. Mogę również zasugerować następujący link: http://www.itshared.org/2015/03/naive-bayes-onapache-flink.html. Chodzi o wdrożenie Naive Bayes w Apache Flink. Chociaż jest to Java, może da ci trochę teorii potrzebnej do lepszego zrozumienia algorytmu.

Jak znaleźć podobieństwo między różnymi czynnikami w zbiorze danych

Załóżmy, że mam zbiór danych z różnymi obserwacjami różnych osób i chcę pogrupować osoby, aby dowiedzieć się, która osoba jest najbliższa drugiej. Chcę również mieć miarę, aby wiedzieć, jak blisko siebie są i poznać znaczenie statystyczne.

Dane

Odtwórz to:

Pytanie

Biorąc pod uwagę zbiór danych jako inny (z cechą ciągłą i kategorialną), skąd mogę wiedzieć, czy osoba (odpowiedź kategoryczna) zidentyfikowana za pomocą nazwiska jest bardziej skorelowana z inną osobą?

Jednym ze sposobów jest znormalizowanie wartości ilościowych (gra, jedzenie, picie, wskaźniki snu), aby wszystkie miały ten sam zakres (powiedzmy 0 -> 1), a następnie przypisanie każdej grze do jej własnego „wymiaru”, który przyjmuje wartość 0 lub 1. Przekształć każdy wiersz w wektor i znormalizuj długość do 1. Teraz możesz porównać iloczyn skalarny wektorów znormalizowanych dowolnych dwóch osób jako miarę podobieństwa. Coś takiego jest często używane w eksploracji tekstu

Kod R dla macierzy podobieństwa Zakłada, że ​​zapisałeś ramkę danych w zmiennej „D”

Pomimo znormalizowanej odległości euklidesowej można również przyjrzeć się odległości Pearsona jako miary podobieństwa.

Jak uniknąć overfittingu w losowym lesie?

  1. Chcę uniknąć overfittingu w przypadkowym lesie. W związku z tym zamierzam użyć mtry, nodesize i maxnodes itp. Czy mógłbyś mi pomóc, jak wybrać wartości dla tych parametrów. Używam R.
  2. Również, jeśli to możliwe, powiedz mi, jak mogę użyć walidacji krzyżowej k-krotnej dla losowego lasu. w R.

W porównaniu z innymi modelami, Random Forests są mniej skłonne do nadmiernego dopasowania, ale nadal jest to coś, czego chcesz wyraźnie unikać. Dostrajanie parametrów modelu jest zdecydowanie jednym z elementów unikania nadmiernego dopasowania, ale nie jedynym. W rzeczywistości powiedziałbym, że twoje funkcje treningowe z większym prawdopodobieństwem doprowadzą do nadmiernego dopasowania niż parametry modelu, szczególnie w przypadku losowych lasów. Myślę więc, że kluczem do sukcesu jest posiadanie niezawodnej metody oceny modelu pod kątem sprawdzania nadmiernego dopasowania bardziej niż cokolwiek innego, co prowadzi nas do drugiego pytania. Jak wspomniano powyżej, przeprowadzenie walidacji krzyżowej pozwoli uniknąć nadmiernego dopasowania. Wybór najlepszego modelu na podstawie wyników CV doprowadzi do modelu, który nie jest nadmiernie dopasowany, co niekoniecznie musi mieć miejsce w przypadku błędu „po wyjęciu z torby”. Najłatwiejszym sposobem uruchomienia CV w R jest użycie pakietu karetki. Poniżej prosty przykład:

@xof6 ma rację w tym sensie, że im większa głębia ma model, tym bardziej ma tendencję do nadmiernego dopasowania, ale chciałem dodać więcej parametrów, które mogą być dla ciebie przydatne. Nie wiem, którego pakietu używasz z R i R w ogóle nie znam, ale myślę, że muszą być tam zaimplementowane odpowiedniki tych parametrów. Liczba drzew – im większa liczba, tym mniejsze prawdopodobieństwo, że las będzie się nadmiernie dopasowywać. Oznacza to, że ponieważ każde drzewo decyzyjne uczy się jakiegoś aspektu danych szkoleniowych, masz więcej opcji do wyboru, że tak powiem. Liczba cech – ta liczba określa, ile cech uczy się każde drzewo. Wraz ze wzrostem tej liczby drzewa stają się coraz bardziej skomplikowane, dlatego uczą się wzorców, których nie ma w danych testowych. Znalezienie odpowiedniej wartości zajmie trochę czasu, ale takie jest właśnie uczenie maszynowe. Poeksperymentuj również z ogólną głębią, jak wspomnieliśmy!

P: R – Interpretacja wykresu sieci neuronowych

Wiem, że są podobne pytania dotyczące statystyk SE, ale nie znalazłem takiego, które spełniałoby moją prośbę; proszę, zanim oznaczysz pytanie jako duplikat, pinguj mnie w komentarzu. Prowadzę sieć neuronową w oparciu o Neuralnet do prognozowania szeregów czasowych indeksu SP500 i chcę zrozumieć, jak mogę zinterpretować poniższy wykres:

W szczególności chciałbym zrozumieć, jaka jest interpretacja wagi warstwy ukrytej i wagi wejściowej; czy ktoś mógłby mi wyjaśnić, jak interpretować ten numer, proszę? Każda wskazówka zostanie doceniona.

Jak stwierdza David w komentarzach, jeśli chcesz zinterpretować model, prawdopodobnie będziesz chciał zbadać coś innego niż sieci neuronowe. To powiedziawszy, chcesz intuicyjnie zrozumieć wykres sieci, najlepiej pomyśleć o tym w odniesieniu do obrazów (coś, w czym sieci neuronowe są bardzo dobre).

  1. Węzły najbardziej po lewej stronie (tj. Węzły wejściowe) to surowe zmienne danych.
  2. Czarne strzałki (i związane z nimi liczby) to wagi, o których możesz pomyśleć jako o tym, ile ta zmienna wpływa na następny węzeł. Niebieskie linie to wagi odchylenia. Cel tych odważników można znaleźć w doskonałej odpowiedzi tutaj.
  3. Węzły środkowe (tj. Wszystko pomiędzy węzłami wejściowymi i wyjściowymi) to węzły ukryte. W tym pomaga analogia obrazu. Każdy z tych węzłów stanowi komponent, który sieć uczy się rozpoznawać. Na przykład nos, usta lub oko. Nie jest to łatwe do określenia i jest znacznie bardziej abstrakcyjne, gdy mamy do czynienia z danymi nie będącymi obrazami.
  4. Węzeł skrajnie prawy (węzły wyjściowe) jest końcowym wyjściem twojej sieci neuronowej. Zauważ, że to wszystko pomija funkcję aktywacji, która byłaby zastosowana również na każdej warstwie sieci.

Jakie funkcje z fal dźwiękowych można wykorzystać dla kompozytora utworów AI?

Planuję stworzyć kompozytora utworów AI, który zbierałby kilka piosenek z jednego instrumentu, wydobywał nuty (takie jak ABCDEFG) i pewne cechy z fali dźwiękowej, przeprowadzał uczenie maszynowe (najprawdopodobniej poprzez powtarzające się sieci neuronowe) i wyjście sekwencja nut ABCDEFG (czyli generowanie własnych piosenek / muzyki). Myślę, że byłby to problem z uczeniem się bez nadzoru, ale nie jestem pewien. Pomyślałem, że użyję powtarzających się sieci neuronowych, ale mam kilka pytań, jak podejść do tego:

– Jakie cechy powinienem wydobyć z fali dźwiękowej, aby muzyka wyjściowa była melodyjna?

– Czy w przypadku powtarzających się sieci neuronowych możliwe jest wygenerowanie wektora sekwencyjnych nut muzycznych (ABCDEF)?

– Czy jest jakiś sprytny sposób, w jaki mogę wykorzystać cechy fal dźwiękowych, a także sekwencję nut?

Po pierwsze, zignoruj ​​hejterów. Zacząłem pracować nad ML in Music dawno temu i uzyskałem kilka stopni naukowych, korzystając z tej pracy. Kiedy zaczynałem, zadawałem ludziom takie same pytania, jak ty. To fascynująca dziedzina i zawsze znajdzie się miejsce dla kogoś nowego. My wszyscy muszą gdzieś zacząć. Dziedziny nauki, o które pytasz, to wyszukiwanie informacji o muzyce (łącze do Wiki) i muzyka komputerowa (łącze do wiki). Dokonałeś dobrego wyboru zawężając swój

problem z pojedynczym instrumentem (muzyka monofoniczna), ponieważ muzyka polifoniczna znacznie zwiększa trudność. Naprawdę próbujesz rozwiązać dwa problemy:

1) Automatyczna transkrypcja muzyki monofonicznej (więcej lektur), która jest problemem wyodrębniania nut z pojedynczego utworu muzycznego instrumentu.

2) Kompozycja algorytmiczna (więcej lektur) czyli problem generowania nowej muzyki z wykorzystaniem korpusu transkrybowanej muzyki.

Odpowiadając bezpośrednio na pytania: myślę, że byłby to problem z uczeniem się bez nadzoru, ale nie jestem pewien. Ponieważ są tutaj dwa problemy z nauką, istnieją dwie odpowiedzi. W przypadku automatycznej transkrypcji prawdopodobnie będziesz chciał zastosować metodę uczenia nadzorowanego, w której klasyfikacja to notatki, które próbujesz wyodrębnić. W przypadku problemu kompozycji algorytmicznej może to faktycznie przebiegać w obie strony. Niektóre odczyty w obu obszarach będą jasne, to dużo. Jakie cechy powinienem wydobyć z fali dźwiękowej, aby muzyka wyjściowa była melodyjna? W MIR jest wiele funkcji powszechnie używanych. @abhnj wymienił MFCC w swojej odpowiedzi, ale jest ich o wiele więcej. Analiza cech w MIR odbywa się w kilku domenach, a każda z nich ma cechy. Niektóre domeny to:

  1. Domena częstotliwości (są to wartości, które słyszymy przez głośnik)
  2. Dziedzina widmowa (ta dziedzina jest obliczana za pomocą funkcji Fouriera (Przeczytaj o szybkiej transformacji Fouriera) i może być przekształcana przy użyciu kilku funkcji (wielkość, moc, wielkość logarytmiczna, moc logarytmiczna)
  3. Domena pików (domena amplitud i pików widmowych w domenie widmowej)
  4. Dziedzina harmonicznych

Jednym z pierwszych problemów, jakie napotkasz, jest segmentacja lub „wycinanie” sygnału muzycznego, aby można było wyodrębnić cechy. To jest problem segmentacji (niektórych odczytów), który sam w sobie jest złożony. Po przycięciu źródła dźwięku możesz zastosować różne funkcje do segmentów przed wyodrębnieniem z nich funkcji. Niektóre z tych funkcji (zwane funkcjami okna) to: Rectangular, Hamming, Hann, Bartlett, Triangular, Bartlett_hann, Blackman i Blackman_harris. Po wycięciu segmentów z domeny możesz wyodrębnić funkcje reprezentujące te segmenty. Niektóre z nich będą zależeć od wybranej domeny. Kilka przykładów funkcji to: Twoje normalne cechy statystyczne (średnia, wariancja, skośność itp.), ZCR, RMS, centrum widmowe, nieregularność widmowa, płaskość widmowa, tonalność widmowa, grzebień widmowy, nachylenie widmowe, spadek widmowy, głośność widmowa, Widmo widmowe,

Współczynnik harmonicznych nieparzystych parzystych, MFCC i skala kory. Jest ich o wiele więcej, ale to są dobre podstawy. Czy w przypadku powtarzających się sieci neuronowych możliwe jest wyprowadzenie wektora sekwencyjnych nut muzycznych (ABCDEF)? Tak to jest. Było już kilka prac, aby to zrobić. (Oto kilka odczytów) Czy mogę w jakiś sprytny sposób wykorzystać cechy fal dźwiękowych, a także sekwencję nut? Standardową metodą jest użycie powyższego wyjaśnienia (domena, segment, ekstrakt funkcji) itp. Aby zaoszczędzić sobie trochę pracy, bardzo polecam zacząć od frameworka MIR, takiego jak MARSYAS (Marsyas). Zapewnią Ci wszystkie podstawy ekstrakcji cech. Istnieje wiele frameworków, więc po prostu znajdź taki, który używa języka, w którym czujesz się komfortowo.

Uważam, że chodzi o to, że chcesz uczyć się z utworów muzycznych i spróbować wygenerować melodię z wyszkolonej instancji. Zobaczmy, czy uda mi się ustawić prosty model, aby to zrobić, a następnie możesz dokonać ekstrapolacji z tego miejsca. Tak więc MFCC jest dobrą funkcją podczas pracy z dźwiękiem. Możesz użyć tego do wyodrębnienia funkcji z, powiedzmy, 1-2 sekundowych okien utworu. Masz teraz odcisk palca dla pliku audio. Spójrz na warunkowo ograniczone maszyny Boltzmanna. Są to sieci neuronowe, które używają wielu stanów binarnych do kodowania informacji o szeregach czasowych. Jak widać na stronie internetowej, trenowali oni na danych dotyczących ludzkiego chodu i mogą teraz generować własny ludzki chód. Zasadniczo tego chcesz, ale nie w przypadku plików muzycznych. Możesz więc trenować CRBM na wektorach Audio MFCC, które posiadasz. Po zakończeniu treningu, aby wygenerować plik audio, możesz „zapełnić” CRBM kilkusekundową melodią lub po prostu losowo go zainicjować. Następnie pozwól CRBM oszaleć i zarejestruj wszystko, co wyprodukuje. To jest twój nowy plik audio. Aby wyprodukować kolejną próbkę, użyj innego ziarna. To rozwiązuje pytanie, jak można zaimplementować schemat generowania „melodii”. Oczywiście istnieją różne odmiany. Oprócz MFCC możesz dodać do siebie inne funkcje. Możesz także użyć innych predyktorów szeregów czasowych, takich jak modele LSTM lub Markov. Biorąc to wszystko pod uwagę, problem generowania muzyki może być znacznie bardziej zniuansowany, niż się wydaje na pierwszy rzut oka. Algorytmy uczenia maszynowego po prostu stosują wcześniej wyuczone wzorce w danych. Jak to się ma do „tworzenia” nowej muzyki, to kwestia filozoficzna. Jeśli przeanalizujemy wspomniany wyżej algorytm, zasadniczo CRBM wygeneruje następny wynik w oparciu o poznany rozkład prawdopodobieństwa. Byłoby bardzo interesujące zobaczyć, jaki rodzaj produkcji generuje, gdy wspomniana dystrybucja to nuty.

Wyprowadzanie ufności z rozkładu prawdopodobieństw klas dla prognozy

Od czasu do czasu napotykam ten problem i zawsze uważałem, że powinno być oczywiste rozwiązanie. Mam prawdopodobieństwa dla potencjalnych klas (z jakiegoś klasyfikatora). Zaproponuję prognozę klasy z najwyższym prawdopodobieństwem, jednak chciałbym również dołączyć zaufanie do tej prognozy. Przykład: Jeśli mam klasy [C1, C2, C3, C4, C5] i moje prawdopodobieństwa to {C1: 50, C2: 12, C3: 13, C4: 12, C5: 13}, moja pewność co do przewidywania C1 powinna być wyższa niż gdybym miał prawdopodobieństwa {C1: 50, C2: 45, C3: 2, C4: 1, C5: 2}. Zgłaszanie, że przewiduję klasę C1 z 60% prawdopodobieństwem, to nie wszystko. powinienem być w stanie uzyskać pewność z rozkładu prawdopodobieństw. Jestem pewien, że istnieje znana metoda rozwiązania tego problemu, ale nie wiem, co to jest.

Doprowadzenie tego do skrajności dla wyjaśnienia: gdybym miał klasę C1 ze 100% prawdopodobieństwem (i zakładając, że klasyfikator miał dokładną reprezentację każdej klasy), to byłbym bardzo pewien, że C1 jest poprawną klasyfikacją. Z drugiej strony, gdyby wszystkie 5 klas miało prawie równe prawdopodobieństwo (powiedzmy, że wszystkie mają około 20%), to byłbym bardzo niepewny, twierdząc, że jakakolwiek klasyfikacja jest poprawna. Te dwa skrajne przypadki są bardziej oczywiste, wyzwaniem jest zdobycie zaufania do przykładów pośrednich jak ten powyżej. Wszelkie sugestie lub odniesienia byłyby bardzo pomocne. Z góry dziękuję.

Jeśli mam Klasy [C1, C2, C3, C4, C5], a moje prawdopodobieństwa to {C1: 50, C2: 12, C3: 13, C4: 12, C5: 13}, moja pewność w przewidywaniu C1 powinna być wyższa niż gdyby Miałem prawdopodobieństwa {C1: 50, C2: 45, C3: 2, C4: 1, C5: 2}.

Zakładając, że te prawdopodobieństwa są dokładne, nie jest to prawdą. W drugim przypadku możesz być dużo bardziej przekonany, że podstawowa prawda jest równa C1 lub C2, ale w kategoriach absolutnej pewności co do C1 prawdopodobieństwo jest takie samo w obu przykładach. Aby to zilustrować na bardziej przejrzystym przykładzie, gdybyś miał 100-stronną kostkę, która miała 50 boków oznaczonych „C1”, wówczas etykiety na pozostałych 50 stronach nie mają znaczenia dla prawdopodobieństwa, że ​​wyrzucisz „C1”. Mając to na uwadze, twoje prawdopodobieństwa z twojego modelu z pewnością nie są doskonałe, więc może istnieć sposób na wykorzystanie korelacji wewnątrzklasowych, aby je poprawić. Czy możesz podać więcej szczegółów na temat swojego konkretnego problemu i procesu modelowania, którego użyłeś do obliczenia prawdopodobieństwa?