Wstęp do przetwarzania języka naturalnego Wykład 11 Wojciech Czarnecki 8 stycznia 2014
Section 1 Przypomnienie
Wektoryzacja tfidf Przypomnienie document x y z Antony and Cleopatra 5.25 1.21 1.51 Julius Caesar 3.18 6.1 0 The Tempest 0 0 1.9 Hamlet 0 1 0.12 Othello 0 0 5.25 Macbeth 0.35 0 0.88 Rysunek : VSM na bazie utworów Szekspira
Idea Section 2
Idea Subsection 1 Idea
Idea
Idea
Idea
Idea
Idea
Idea
Przypomnienie Idea Regresja logistyczna opiera się na głosowaniu poszczególnych cech, i α if i (d, c) Współczynniki dobierane były by zmaksymalizować prawdopodobieństwo poprawnej klasyfikacji Decyzja podejmowana była na zasadzie arg max c i α if i (d, c)
Idea Dla klasyfikacji binarnej (1,-1) było to więc przy założeniu że cechy są niezależne od klasy (dokładamy odpowiednie α i = 0 lub β i = 0 maxent(d) = 1 i α i f i (d) > i β i f i (d)
Idea Dla klasyfikacji binarnej (1,-1) było to więc przy założeniu że cechy są niezależne od klasy (dokładamy odpowiednie α i = 0 lub β i = 0 maxent(d) = 1 i α i f i (d) > i β i f i (d) maxent(d) = 1 i (α i β i )f i (d) > 0
Idea Dla klasyfikacji binarnej (1,-1) było to więc przy założeniu że cechy są niezależne od klasy (dokładamy odpowiednie α i = 0 lub β i = 0 maxent(d) = 1 i α i f i (d) > i β i f i (d) maxent(d) = 1 i (α i β i )f i (d) > 0 maxent(d) = sgn( i (α i β i )f i (d))
Idea Dla klasyfikacji binarnej (1,-1) było to więc przy założeniu że cechy są niezależne od klasy (dokładamy odpowiednie α i = 0 lub β i = 0 maxent(d) = 1 i α i f i (d) > i β i f i (d) maxent(d) = 1 i (α i β i )f i (d) > 0 maxent(d) = sgn( i (α i β i )f i (d)) maxent(d) = sgn( i w i f i (d))
Idea maxent(d) = sgn( i w i f i (d))
Idea maxent(d) = sgn( i w i f i (d)) W SVMie oddzielamy dane hiperpłaszyzną, którą można jednoznacznie zdefiniować jako jej normalna w (oraz przesunięcie od środka układu b)
Idea maxent(d) = sgn( i w i f i (d)) W SVMie oddzielamy dane hiperpłaszyzną, którą można jednoznacznie zdefiniować jako jej normalna w (oraz przesunięcie od środka układu b) svm(d) = sgn(w T f (d) + b)
Idea maxent(d) = sgn( i w i f i (d)) W SVMie oddzielamy dane hiperpłaszyzną, którą można jednoznacznie zdefiniować jako jej normalna w (oraz przesunięcie od środka układu b) svm(d) = sgn(w T f (d) + b) svm(d) = sgn( i w i f i (d) + b)
Idea maxent(d) = sgn( i w i f i (d)) W SVMie oddzielamy dane hiperpłaszyzną, którą można jednoznacznie zdefiniować jako jej normalna w (oraz przesunięcie od środka układu b) svm(d) = sgn(w T f (d) + b) svm(d) = sgn( i w i f i (d) + b) Jedyną różnicą jest strategia wyboru w, czyli proces uczenia.
Margines Dualność Lagrange a Kernel Section 3
Założenia Przypomnienie Margines Dualność Lagrange a Kernel Klasyfikacja binarna Dane są liniowo separowalne Dla uproszczenia x to zwektoryzowana forma dokumentu
Margines Dualność Lagrange a Kernel Subsection 1 Margines
Margines Przypomnienie Margines Dualność Lagrange a Kernel w T x + b = 0 w T x + b = 1(= B) w T x + b = 1(= B)
Margines Przypomnienie Margines Dualność Lagrange a Kernel d(0, h + ) = w T 0 + b 1 w d(0, h ) = w T 0 + b + 1 w margin = b 1 (b + 1) w = 2 w
Margines Przypomnienie Margines Dualność Lagrange a Kernel max w,b ) s.t. y (i) ( w T x (i) + b 2 w 1, i {1, 2,..., m}
Margines Przypomnienie Margines Dualność Lagrange a Kernel 1 min w,b 2 w 2 ( ) s.t. y (i) w T x (i) + b 1, i {1, 2,..., m} Wypukła optymalizacja kwadratowa z liniowymi ograniczeniami!
Margines Dualność Lagrange a Kernel Subsection 2 Dualność Lagrange a
Dualność Lagrange a Margines Dualność Lagrange a Kernel min f (w) w s.t. g i (w) 0, i {1, 2,..., m}
Lagrangian Przypomnienie Margines Dualność Lagrange a Kernel m L(w, α) = f (w) + α i g i (w) i=1
Problem prymalny Przypomnienie Margines Dualność Lagrange a Kernel θ P (w) = max L(w, α) α i 0 θ P (w) = max f (w) + m α i g i (w) α i 0 i=1 θ P (w) {f (w), }
Problem prymalny Przypomnienie Margines Dualność Lagrange a Kernel min w ( ) θ P(w) = min max L(w, α) = min f (w) w α i 0 w p = min θ P(w) w
Problem dualny Przypomnienie Margines Dualność Lagrange a Kernel max θ D(α) = max min L(w, α) α i 0 α i 0 w d = max α i 0 θ D(α)
Nierówność MaxMin Przypomnienie Margines Dualność Lagrange a Kernel d = max min L(w, α) min max L(w, α) = p α i 0 w w α i 0
KKT Przypomnienie Margines Dualność Lagrange a Kernel d = p f, g - wypukłe w g i (w) < 0 Szerzej: Teoria Optymalizacji α i g i (w) = 0 dual complementarity condition
Margines Dualność Lagrange a Kernel Subsection 3
Rozwiązanie SVM Przypomnienie Margines Dualność Lagrange a Kernel 1 min w,b 2 w 2 ( ) s.t. y (i) w T x (i) + b 1, i {1, 2,..., m} 1 min w,b 2 w 2 ( ) s.t. y (i) w T x (i) + b + 1 0, i {1, 2,..., m}
Margines Dualność Lagrange a Kernel L(w, b, α) = 1 2 w 2 m i=1 α i (y ( ) ) (i) w T x (i) + b 1 max min L(w, b, α) α i 0 w,b
Margines Dualność Lagrange a Kernel m w L(w, b, α) = w α i y (i) x (i) = 0 i=1 m w = α i y (i) x (i) i=1 m b L(w, b, α) = α i y (i) = 0 i=1 m L(w, b, α) = α i 1 m y (i) y (j) α i α j (x (i) ) T x (j) 2 i=1 i,j=1
Ostateczny problem dualny Margines Dualność Lagrange a Kernel m max α i 1 m y (i) y (j) α i α j (x (i) ) T x (j) α i 0 2 i=1 i,j=1 ( m ) w T T m x + b = α i y (i) x (i) x + b = α i y (i) (x (i) ) T x + b i=1 i=1
Margines Dualność Lagrange a Kernel Subsection 4 Kernel
Kernel Przypomnienie Margines Dualność Lagrange a Kernel
Kernel Przypomnienie Margines Dualność Lagrange a Kernel
Kernel Przypomnienie Margines Dualność Lagrange a Kernel
Kernel Przypomnienie Margines Dualność Lagrange a Kernel Definition K(x, y) jest kernelem (jądrem) wtw. istnieje przestrzeń wektorowa w której K jest iloczynem skalarnym K(x, y) = φ(x) φ(y) K(x, y) = x y K(x, y) = (γx y + c) p K(x, y) = e γ x y 2 K(x, y) = tanh(γx y + c)
Kernel Przypomnienie Margines Dualność Lagrange a Kernel K(x, y) = φ(x) φ(y) K(x, y) = (x y + c) 2 φ(x) = (x 2 n,..., x 2 1, 2xn x n 1,..., 2x n x 1, 2xn 1 x n 2,..., 2x 2 x 1, 2cxn,..., 2cx 1, c) dim(φ(x)) = n2 + 3n + 2 2
Skernelizowany SVM Margines Dualność Lagrange a Kernel m max α i 1 m y (i) y (j) α i α j K(x (i), x (j) ) α i 0 2 i=1 i,j=1 m w T x + b = α i y (i) K(x (i), x) i=1
Skernelizowany SVM Margines Dualność Lagrange a Kernel
Margines Dualność Lagrange a Kernel Subsection 5
Margines Dualność Lagrange a Kernel
Margines Dualność Lagrange a Kernel
Margines Dualność Lagrange a Kernel 1 m min w,b 2 w 2 + C ξ i ( i=1 ) s.t. y (i) w T x (i) + b 1 ξ i, i {1, 2,..., m} ξ i 0, i {1, 2,..., m}
Margines Dualność Lagrange a Kernel Dualna forma nieseparowalnej skernalizowanego SVMa :-) m max α i 1 m y (i) y (j) α i α j K(x (i), x (j) ) C α i 0 2 i=1 i,j=1
Wieloklasowy SVM Przypomnienie Margines Dualność Lagrange a Kernel 1 vs all technique ( n ) 1 vs 1 technique ( n 2 ) error codes technique ( log(n) )
Section 4
Uwagi co do kerneli Przypomnienie K(x, y) = φ(x) φ(y) K(x, y) = x y K(x, y) = (γx y + c) p K(x, y) = e γ x y 2 K(x, y) = tanh(γx y + c)
Idealny kernel Przypomnienie 1, if x, y T, label(x) = label(y) K p (x, y) = 1, if x, y / T 0, wpp. Acc train (K p ) = 100% Acc test (K p ) =? Szerzej: Sieci Neuronowe; dr Igor Podolak
K(x, y) = e γ x y 2 φ(x) = f γx (ℵ) = e γ ℵ x 2 = e ℵ x 2 σ 2, γ = 1 σ 2 dim(φ(r n )) =?
Kernel Gaussa jest świetny! Co mogłoby pójść nie tak?
K(x, y) = e γ x y 2, γ
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Mercer s theorem Przypomnienie Theorem K jest kernelem wtw. jest dodatnio półokreślone K : S S R n n K(x i, x j )c i c j 0, c i R, n (N), x i S i=1 j=1
Section 5
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting Funkcje jądra bardzo istotnie wypływają na dokładność klasyfikacji, im bardziej skomplikowane jądro tym większa szansa na overfitting, w praktyce w NLP najczęściej używa się:
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting Funkcje jądra bardzo istotnie wypływają na dokładność klasyfikacji, im bardziej skomplikowane jądro tym większa szansa na overfitting, w praktyce w NLP najczęściej używa się: Jądra liniowego
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting Funkcje jądra bardzo istotnie wypływają na dokładność klasyfikacji, im bardziej skomplikowane jądro tym większa szansa na overfitting, w praktyce w NLP najczęściej używa się: Jądra liniowego Jądra wielomianowego stopnia 2
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting Funkcje jądra bardzo istotnie wypływają na dokładność klasyfikacji, im bardziej skomplikowane jądro tym większa szansa na overfitting, w praktyce w NLP najczęściej używa się: Jądra liniowego Jądra wielomianowego stopnia 2 Jąder specjalistycznych (kolejny wykład)
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting Funkcje jądra bardzo istotnie wypływają na dokładność klasyfikacji, im bardziej skomplikowane jądro tym większa szansa na overfitting, w praktyce w NLP najczęściej używa się: Jądra liniowego Jądra wielomianowego stopnia 2 Jąder specjalistycznych (kolejny wykład) Istotne jest przeskalowanie danych
Podsumowanie Przypomnienie C jest parametrem odpowiedzialnym za złożoność modelu, im większe C tym większa szansa na overfitting, im mniejsze na underfitting Funkcje jądra bardzo istotnie wypływają na dokładność klasyfikacji, im bardziej skomplikowane jądro tym większa szansa na overfitting, w praktyce w NLP najczęściej używa się: Jądra liniowego Jądra wielomianowego stopnia 2 Jąder specjalistycznych (kolejny wykład) Istotne jest przeskalowanie danych Optymalne parametry (jądra i C) dobiera się metodą walidacji krzyżowej
Biblioteki Przypomnienie libsvm (Java, Matlab, Octave, R, Python, Perl, Ruby, Weka, Scilab, LISP, Haskell, OCaml,.NET, CUDA, Labview, C#, PHP) http://www.csie.ntu.edu.tw/~cjlin/libsvm/ SVM light (Perl, Matlab, Python, Ruby,.NET,.DLL, Java, TCP/IP server) http://svmlight.joachims.org/ SVM struct SVM perf SVM rank
Kolejny wykład Przypomnienie Specjalistyczne jądra Podstawowe jądro dla tekstów Jądra semantyczne