Skip to content

Commit

Permalink
Improve the algorithm
Browse files Browse the repository at this point in the history
  • Loading branch information
vochicong committed Jul 27, 2022
1 parent 6cdb727 commit e8f77ae
Show file tree
Hide file tree
Showing 9 changed files with 280 additions and 155 deletions.
9 changes: 8 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
all: bookdown
all: pdf

pdf: docs/_main.pdf
docs/_main.pdf: index.Rmd
make bookdown

bookdown:
Rscript -e "bookdown::render_book('index.Rmd', 'all')"

pluto:
julia -e "using Pluto; Pluto.run()"

env:
Rscript -e 'install.packages("bookdown")'
Binary file modified docs/_main.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ <h2>Quy trình nhiễu theo lớp<a href="index.html#quy-trình-nhiễu-theo-l
</div>
<div id="ví-dụ-cụ-thể" class="section level2 hasAnchor">
<h2>Ví dụ cụ thể<a href="index.html#ví-dụ-cụ-thể" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>Xem ví dụ với <a href="lapros.pdf">dữ liệu cụ thể</a> tại <a href="lapros.pdf">đây</a>.</p>
<p>Xem ví dụ với <a href="lapros.jl.html">dữ liệu cụ thể tại đây</a>.</p>
</div>
<div id="ma-trận-nhiễu-theo-lớp" class="section level2 hasAnchor">
<h2>Ma trận nhiễu theo lớp<a href="index.html#ma-trận-nhiễu-theo-lớp" class="anchor-section" aria-label="Anchor link to header"></a></h2>
Expand All @@ -149,7 +149,7 @@ <h2>Ma trận nhiễu theo lớp<a href="index.html#ma-trận-nhiễu-theo-lớp
<p>là ma trận kích thước <span class="math inline">\(m\times m\)</span> thể hiện phân phối xác suất đồng thời cho <span class="math inline">\(\tilde{y}\)</span><span class="math inline">\(\dot{y}.\)</span></p>
<p><strong>Độ thưa</strong> là tỷ lệ số <span class="math inline">\(0\)</span> chiếm lĩnh các vị trí ngoại trừ đường chéo của ma trận <span class="math inline">\(\dot{{\boldsymbol{{Q}}}}_{\tilde{y},\dot{y}}\)</span>: độ thưa bằng <span class="math inline">\(0\)</span> nói rằng mọi tỷ lệ nhiễu <span class="math inline">\(p_{\tilde{y},\dot{y}}\)</span> đều khác <span class="math inline">\(0\)</span>, còn độ thưa <span class="math inline">\(1\)</span> thể hiện tình trạng lý tưởng, hoàn toàn không có nhiễu trong nhãn.</p>
<p>Gọi <span class="math inline">\({\boldsymbol{{X}}}_{\tilde{y}=i}\)</span> là tập hợp các mẫu <span class="math inline">\({\boldsymbol{{x}}}\)</span> đã được gán nhãn <span class="math inline">\(\tilde{y}=i\)</span>.
<strong>Độ tự tin</strong> <span class="math inline">\({p}_{{\boldsymbol{{\phi}}}}(\tilde{y}=i; {\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i})\)</span>
<strong>Độ tự tin</strong> <span class="math inline">\(p_{{\boldsymbol{{\phi}}}}(\tilde{y}=i; {\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i})\)</span>
là xác suất mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> đưa ra đối với mẫu <span class="math inline">\({\boldsymbol{{x}}}\)</span>, dự đoán nó có label đúng như label <span class="math inline">\(\tilde{y}\)</span> đã được gán. <em>Độ tự tin thấp là một dấu hiệu của khả năng nhãn có lỗi.</em></p>
</div>
</div>
Expand Down
14 changes: 14 additions & 0 deletions docs/lapros.jl.html

Large diffs are not rendered by default.

Binary file removed docs/lapros.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/search_index.json

Large diffs are not rendered by default.

74 changes: 43 additions & 31 deletions docs/đánh-giá-độ-khả-nghi.html
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,16 @@ <h2>Khái quát<a href="đánh-giá-độ-khả-nghi.html#khái-quát" class="an
<p><strong>Đầu vào</strong></p>
<ol style="list-style-type: decimal">
<li>Các nhãn <span class="math inline">\(\tilde{y}_k\)</span> đã quan sát được đối với các mẫu <span class="math inline">\({\boldsymbol{{x}}}_k\in{\boldsymbol{{X}}}\)</span></li>
<li>Xác suất <span class="math inline">\({p}(\tilde{y}=i; {\boldsymbol{{x}}}_k\in{\boldsymbol{{X}}})\)</span> mà mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> dự đoán mẫu <span class="math inline">\({\boldsymbol{{x}}}_k\in{\boldsymbol{{X}}}\)</span> có nhãn <span class="math inline">\(i\in M\)</span></li>
<li>Xác suất <span class="math inline">\(p_{\tilde{y}={i}}({{\boldsymbol{{x}}}_k})\)</span> mà mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> dự đoán mẫu <span class="math inline">\({\boldsymbol{{x}}}_k\in{\boldsymbol{{X}}}\)</span> có nhãn <span class="math inline">\(i\in M\)</span></li>
</ol>
<p>Mặc nhiên</p>
<p><span class="math display" id="eq:probasum1">\[\begin{equation}
\begin{cases}
p_{\tilde{y}={i}}({{\boldsymbol{{x}}}}) \geq 0 &amp; \quad\forall i\in M, \forall{\boldsymbol{{x}}}\in{\boldsymbol{{X}}}\\
\sum\limits_{i\in M}{p_{\tilde{y}={i}}({{\boldsymbol{{x}}}})} \equiv 1 &amp; \quad\forall {\boldsymbol{{x}}}\in{\boldsymbol{{X}}}
\end{cases}
\tag{1}
\end{equation}\]</span></p>
<p><strong>Các bước</strong></p>
<ol style="list-style-type: decimal">
<li>Tính <span class="math inline">\(t_i\)</span>, độ tự tin trung bình theo <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> trong từng lớp <span class="math inline">\(i\in M\)</span></li>
Expand All @@ -128,42 +136,46 @@ <h2>Chỉ tiêu tự tin<a href="đánh-giá-độ-khả-nghi.html#chỉ-tiêu-t
<span class="math inline">\({\boldsymbol{{C}}}_{\tilde{y}=i} ≔|{\boldsymbol{{X}}}_{\tilde{y}=i}|.\)</span></p>
<p>Độ tự tin trung bình của mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> đối với lớp <span class="math inline">\(i\in M\)</span></p>
<p><span class="math display" id="eq:avgconfidence">\[\begin{equation}
{\boldsymbol{{t}}}_i = \frac{ \sum_{{\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i}}{p}_{{\boldsymbol{{\phi}}}}(\tilde{y}=i; {\boldsymbol{{x}}})}{{\boldsymbol{{C}}}_{\tilde{y}=i}}.
\tag{1}
{\boldsymbol{{t}}}_i = \frac{1}{{\boldsymbol{{C}}}_{\tilde{y}=i}}
{\sum\limits_{{\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i}}p_{\tilde{y}={i}}({{\boldsymbol{{x}}}})}.
\tag{2}
\end{equation}\]</span></p>
<p>Vì phép tính trung bình được thực hiện trên từng tập
<span class="math inline">\({\boldsymbol{{X}}}_{\tilde{y}=i}\)</span>
nên có thể <span class="math inline">\(\sum\limits_{i\in M}{{\boldsymbol{{t}}}_i} \neq 1.\)</span></p>
<p>Với mỗi lớp <span class="math inline">\(i\in M\)</span> ta chọn chỉ tiêu tự tin <span class="math inline">\({\boldsymbol{{t}}}_i\in(0,1)\)</span>
bằng độ tự tin trung bình <a href="đánh-giá-độ-khả-nghi.html#eq:avgconfidence">(1)</a>.
bằng độ tự tin trung bình <a href="đánh-giá-độ-khả-nghi.html#eq:avgconfidence">(2)</a>.
Đối với từng mẫu <span class="math inline">\({\boldsymbol{{x}}}\)</span> và từng nhãn <span class="math inline">\(i\)</span>, giá trị xác suất dự đoán
<span class="math inline">\({p}_{{\boldsymbol{{\phi}}}}(\tilde{y}=i; {\boldsymbol{{x}}})\)</span> đưa ra bởi mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span>,
<span class="math inline">\(p_{\tilde{y}={i}}({{\boldsymbol{{x}}}})\)</span> đưa ra bởi mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span>,
nếu không nhỏ hơn chỉ tiêu <span class="math inline">\({\boldsymbol{{t}}}_i\)</span> thì ta cho rằng nhãn <span class="math inline">\(i\)</span> có khả năng đúng với mẫu <span class="math inline">\({\boldsymbol{{x}}}\)</span>.
Tập hợp nhãn khả dĩ đối với mẫu <span class="math inline">\({\boldsymbol{{x}}}\)</span></p>
<p><span class="math display" id="eq:eq2">\[\begin{equation}
L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})≔\left\{l\in M: {p}_{{\boldsymbol{{\phi}}}}(\tilde{y}=l;{\boldsymbol{{x}}})\geq {\boldsymbol{{t}}}_l\right\}
\tag{2}
L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})≔\left\{i\in M: p_{\tilde{y}={i}}({{\boldsymbol{{x}}}})\geq {\boldsymbol{{t}}}_i\right\}
\tag{3}
\end{equation}\]</span></p>
<p>Nếu <span class="math inline">\(L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})\neq\emptyset\)</span> thì ta chọn một nhãn có xác suất dự đoán lớn nhất:
<p>Với giả định xác suất <a href="đánh-giá-độ-khả-nghi.html#eq:probasum1">(1)</a>
và chỉ tiêu tự tin <a href="đánh-giá-độ-khả-nghi.html#eq:avgconfidence">(2)</a>,
ta kỳ vọng <span class="math inline">\(L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})\neq\emptyset.\)</span>
Từ đó chọn một nhãn có xác suất dự đoán lớn nhất:
<span class="math display" id="eq:lmtx">\[\begin{equation}
\hat{l}_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})≔
\begin{cases}
\mathop{\rm arg max} \limits_{l\in L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})} {p}_{{\boldsymbol{{\phi}}}}(\tilde{y}=l;{\boldsymbol{{x}}}), &amp; \text{không xét chỉ tiêu}\\
\mathop{\rm arg max} \limits_{l\in L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})} \{{p}_{{\boldsymbol{{\phi}}}}(\tilde{y}=l;{\boldsymbol{{x}}}) - {\boldsymbol{{t}}}_l\}, &amp; \text{có bù trừ chỉ tiêu}
\mathop{\rm arg max} \limits_{i\in L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})} p_{\tilde{y}={i}}({{\boldsymbol{{x}}}}), &amp; \text{không xét chỉ tiêu}\\
\mathop{\rm arg max} \limits_{i\in L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})} \{p_{\tilde{y}={i}}({{\boldsymbol{{x}}}}) - {\boldsymbol{{t}}}_i\}, &amp; \text{có bù trừ chỉ tiêu}
\end{cases}
\tag{3}
\tag{4}
\end{equation}\]</span></p>
<p>để làm nhãn “đáng tin nhất” cho mẫu <span class="math inline">\({\boldsymbol{{x}}}.\)</span>
Ngược lại, nếu
<span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> dự đoán không có nhãn nào phù hợp với mẫu <span class="math inline">\({\boldsymbol{{x}}}\)</span>
thì <span class="math inline">\(L_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})\equiv\emptyset.\)</span></p>
<p>để làm nhãn “đáng tin nhất” cho mẫu <span class="math inline">\({\boldsymbol{{x}}}.\)</span></p>
</div>
<div id="xếp-hạng-khả-nghi" class="section level2 hasAnchor">
<h2>Xếp hạng khả nghi<a href="đánh-giá-độ-khả-nghi.html#xếp-hạng-khả-nghi" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>Gọi <span class="math inline">\(\dot{{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j}\)</span> là tập (bất khả tri) các mẫu có nhãn quan sát là <span class="math inline">\(i\)</span> và nhãn thật là <span class="math inline">\(j\)</span>, ta ước lượng nó bằng cách dùng các nhãn đáng tin nhất <span class="math inline">\(\hat{l}_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})\)</span> tại <a href="đánh-giá-độ-khả-nghi.html#eq:lmtx">(3)</a>:</p>
<p>Gọi <span class="math inline">\(\dot{{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j}\)</span> là tập (bất khả tri) các mẫu có nhãn quan sát là <span class="math inline">\(i\)</span> và nhãn thật là <span class="math inline">\(j\)</span>, ta ước lượng nó bằng cách dùng các nhãn đáng tin nhất <span class="math inline">\(\hat{l}_{{{\boldsymbol{{\phi}}}},{\boldsymbol{{t}}}}({\boldsymbol{{x}}})\)</span> tại <a href="đánh-giá-độ-khả-nghi.html#eq:lmtx">(4)</a>:</p>
<p><span class="math display" id="eq:eq3b">\[\begin{equation}
{{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j} ≔
\left\{{\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i}:
\hat{l}_{{{\boldsymbol{{\phi}}}}({\boldsymbol{{x}}}),{\boldsymbol{{t}}}} \equiv j
\right\}
\tag{4}
\tag{5}
\end{equation}\]</span></p>
<p>Đơn thuần (mà lại hiệu quả) nhất, ta nghi ngờ
các mẫu <span class="math inline">\(\left\{{\boldsymbol{{x}}}\in{{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j}: i\neq j\right\}\)</span>
Expand All @@ -173,18 +185,18 @@ <h2>Xếp hạng khả nghi<a href="đánh-giá-độ-khả-nghi.html#xếp-hạ
Xếp hạng mức độ khả nghi của các mẫu đó
dựa theo xác suất do mô hình <span class="math inline">\({{\boldsymbol{{\phi}}}}\)</span> dự đoán:
<span class="math display" id="eq:errnoise">\[\begin{equation}
{e}({{\boldsymbol{{x}}}}) ≔\max_{j\neq i}{{p}(\tilde{y}=j; {\boldsymbol{{x}}})}
-{p}(\tilde{y}=i; {\boldsymbol{{x}}})\quad \forall {\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i}
\tag{5}
{e}({{\boldsymbol{{x}}}}) ≔\max_{j\neq i}{p_{\tilde{y}={j}}({{\boldsymbol{{x}}}})}
-p_{\tilde{y}={i}}({{\boldsymbol{{x}}}})\quad \forall {\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i}
\tag{6}
\end{equation}\]</span>
theo cách làm trong CleanLab của Curtis et al.’s (2021), và đảo dấu so với Wei et al.’s (2018).
Ta cũng có thể bù trừ chỉ tiêu tự tin vào để tính độ khả nghi:
<span class="math display" id="eq:eq4">\[\begin{equation}
e_{\boldsymbol{{t}}}({\boldsymbol{{x}}}) ≔
\max_{j\neq i}{({p}(\tilde{y}=j; {\boldsymbol{{x}}})-{\boldsymbol{{t}}}_j)}
-({p}(\tilde{y}=i; {\boldsymbol{{x}}}) - {\boldsymbol{{t}}}_i)
\max_{j\neq i}{\{p_{\tilde{y}={j}}({{\boldsymbol{{x}}}})-{\boldsymbol{{t}}}_j\}}
-\{p_{\tilde{y}={i}}({{\boldsymbol{{x}}}}) - {\boldsymbol{{t}}}_i\}
\quad \forall {\boldsymbol{{x}}}\in{\boldsymbol{{X}}}_{\tilde{y}=i}.
\tag{6}
\tag{7}
\end{equation}\]</span></p>
</div>
<div id="ước-lượng-ma-trận-nhiễu" class="section level2 hasAnchor">
Expand All @@ -193,27 +205,27 @@ <h2>Ước lượng ma trận nhiễu<a href="đánh-giá-độ-khả-nghi.html#
lưu số phần tử của các tập <span class="math inline">\({{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j}\)</span>,</p>
<p><span class="math display" id="eq:eq5">\[\begin{equation}
{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j} ≔|{{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j} |
\tag{7}
\tag{8}
\end{equation}\]</span></p>
<p>ví dụ <span class="math inline">\({{\boldsymbol{{C}}}}_{\tilde{y}=3,\dot{y}=1} = 10\)</span> có nghĩa là, đếm được
10 mẫu được gán nhãn <span class="math inline">\(3\)</span> nhưng “thật ra” nên có nhãn <span class="math inline">\(1.\)</span></p>
<p><a href="đánh-giá-độ-khả-nghi.html#eq:eq3b">(4)</a> ước lượng
<p><a href="đánh-giá-độ-khả-nghi.html#eq:eq3b">(5)</a> ước lượng
<span class="math inline">\({{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j}\approx\dot{{\boldsymbol{{X}}}}_{\tilde{y}=i,\dot{y}=j}\)</span> cho nên
<span class="math inline">\(\sum_{j\in M}{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j} \approx {\boldsymbol{{C}}}_{\tilde{y}=i}.\)</span></p>
<span class="math inline">\(\sum\limits_{j\in M}{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j} \approx {\boldsymbol{{C}}}_{\tilde{y}=i}.\)</span></p>
<p>Hiệu chỉnh ma trận đếm cặp nhãn qua hai bước.
Bước đầu, hiệu chỉnh từng dòng theo số mẫu của từng lớp đã quan sát <span class="math inline">\(i\in M,\)</span></p>
<p><span class="math display" id="eq:eq6a">\[\begin{equation}
\check{Q}_{\tilde{y}=i,\dot{y}=j} = \frac{{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j}}{\sum_{j\in M}{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j}}
\check{Q}_{\tilde{y}=i,\dot{y}=j} = \frac{{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j}}{\sum\limits_{j\in M}{{\boldsymbol{{C}}}}_{\tilde{y}=i,\dot{y}=j}}
{{\boldsymbol{{C}}}_{\tilde{y}=i}}.
\tag{8}
\tag{9}
\end{equation}\]</span></p>
<p>Cuối cùng, ta chia đều toàn bộ để tổng ma trận trở thành <span class="math inline">\(1.\)</span></p>
<p><span class="math display" id="eq:eq6b">\[\begin{equation}
{\boldsymbol{{Q}}}_{\tilde{y}=i,\dot{y}=j}=\frac{\check{Q}_{\tilde{y}=i,\dot{y}=j}}{\sum_{i\in M,j\in M}\check{Q}_{\tilde{y}=i,\dot{y}=j}}.
\tag{9}
{\boldsymbol{{Q}}}_{\tilde{y}=i,\dot{y}=j}=\frac{\check{Q}_{\tilde{y}=i,\dot{y}=j}}{\sum\limits_{i,j\in M}\check{Q}_{\tilde{y}=i,\dot{y}=j}}.
\tag{10}
\end{equation}\]</span></p>
<p>Curtis et al.’s (2021) trình bày một số
phương pháp dùng ma trận nhiễu <a href="đánh-giá-độ-khả-nghi.html#eq:eq6b">(9)</a>
phương pháp dùng ma trận nhiễu <a href="đánh-giá-độ-khả-nghi.html#eq:eq6b">(10)</a>
để chọn lọc và xếp hạng nhãn khả nghi có lỗi.</p>
</div>
</div>
Expand Down
Loading

0 comments on commit e8f77ae

Please sign in to comment.