Skip to content

Commit e2101e9

Browse files
authored
Merge branch 'master' into lesson10
2 parents c0babc4 + b991027 commit e2101e9

104 files changed

Lines changed: 12172 additions & 16590 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,29 @@ jobs:
1010
build:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- uses: actions/checkout@v2
14-
- uses: actions/setup-python@v2
13+
- uses: actions/checkout@v3
14+
- uses: actions/setup-python@v4
15+
with:
16+
python-version: "3.9"
1517
- name: Get pip cache dir
1618
id: pip-get-cache
1719
run: |
18-
echo "::set-output name=dir::$(pip cache dir)"
19-
- uses: actions/cache@v2
20+
echo "pip_cache=$(pip cache dir)" >> $GITHUB_ENV
21+
- uses: actions/cache@v3
2022
with:
21-
path: ${{ steps.pip-get-cache.outputs.dir }}
23+
path: ${{ env.pip_cache }}
2224
key: deploy-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
2325
restore-keys: |
2426
deploy-${{ runner.os }}-pip-
2527
- name: Generate post from jupyter notebook
2628
run: |
2729
pip install -r website/scripts/requirements.txt
2830
python website/scripts/parse_notebook.py
29-
- uses: actions/setup-node@v2
31+
- uses: actions/setup-node@v3
3032
with:
3133
cache: npm
3234
cache-dependency-path: "**/package-lock.json"
33-
- uses: actions/cache@v2
35+
- uses: actions/cache@v3
3436
id: npm-cache
3537
with:
3638
path: |
@@ -50,7 +52,12 @@ jobs:
5052
- name: Test Build
5153
working-directory: website
5254
run: npm run build
53-
- uses: actions/upload-artifact@v2
55+
- name: Copy firebase files
56+
working-directory: website
57+
run: |
58+
cp .firebaserc build
59+
cp firebase.json build
60+
- uses: actions/upload-artifact@v3
5461
with:
5562
name: website-build
5663
path: website/build
@@ -60,7 +67,7 @@ jobs:
6067
needs: build
6168
if: github.event_name != 'push'
6269
steps:
63-
- uses: actions/download-artifact@v2
70+
- uses: actions/download-artifact@v3
6471
with:
6572
name: website-build
6673
path: website/build
@@ -84,10 +91,10 @@ jobs:
8491
needs: deploy-preview
8592
if: github.event_name != 'push'
8693
steps:
87-
- uses: actions/checkout@v2
94+
- uses: actions/checkout@v3
8895
- name: Audit URLs using Lighthouse
8996
id: lighthouse_audit
90-
uses: treosh/lighthouse-ci-action@v3
97+
uses: treosh/lighthouse-ci-action@v9
9198
with:
9299
urls: |
93100
https://preview-$PR_NUMBER--zootopi.netlify.app/
@@ -98,7 +105,7 @@ jobs:
98105
PR_NUMBER: ${{ github.event.pull_request.number}}
99106
- name: Format lighthouse score
100107
id: format_lighthouse_score
101-
uses: actions/github-script@v3
108+
uses: actions/github-script@v6
102109
with:
103110
github-token: ${{ secrets.BOT_TOKEN }}
104111
script: |
@@ -122,7 +129,7 @@ jobs:
122129
core.setOutput("comment", comment);
123130
- name: Add Lighthouse stats as comment
124131
id: comment_to_pr
125-
uses: marocchino/sticky-pull-request-comment@v2.0.0
132+
uses: marocchino/sticky-pull-request-comment@v2.2.1
126133
with:
127134
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
128135
number: ${{ github.event.pull_request.number }}
@@ -134,13 +141,13 @@ jobs:
134141
needs: build
135142
if: github.event_name != 'pull_request'
136143
steps:
137-
- uses: actions/checkout@v2
138-
- uses: actions/download-artifact@v2
144+
- uses: actions/checkout@v3
145+
- uses: actions/download-artifact@v3
139146
with:
140147
name: website-build
141148
path: website/build
142149
- name: Deploy 🚀
143-
uses: JamesIves/github-pages-deploy-action@4.1.4
150+
uses: JamesIves/github-pages-deploy-action@v4
144151
with:
145152
branch: ${{ secrets.DEPLOYMENT_BRANCH }}
146153
folder: website/build
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# This file was auto-generated by the Firebase CLI
2+
# https://github.com/firebase/firebase-tools
3+
4+
name: Deploy to Firebase Hosting on merge
5+
on:
6+
push:
7+
branches:
8+
- gh-pages
9+
jobs:
10+
build_and_deploy:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v2
14+
- uses: FirebaseExtended/action-hosting-deploy@v0
15+
with:
16+
repoToken: "${{ secrets.GITHUB_TOKEN }}"
17+
firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_ZOOTOPI }}"
18+
channelId: live
19+
projectId: zootopi

blog/2021-07-27-copilot.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Copilot technical reviewer
55
<!-- author_url: https://github.com/honghanhh -->
66
---
77

8-
# Github Copilot
8+
# 🔥Github Copilot🔥
99

1010
Nếu bạn hay theo dõi và cập nhật những tin tức về công nghệ và lập trình thì hẳn bạn đã biết về một công cụ lập trình AI mới mang tên Copilot vừa được GitHub chính thức trình làng trong thời gian vừa qua. Nếu bạn chưa biết thì đừng lo lắng vì trong blog này, ZootoPi sẽ giới thiệu cho các bạn về [Copilot](https://copilot.github.com/), người bạn đồng hành hứa hẹn sẽ hỗ trợ anh em code cực kì bá đạo.
1111

@@ -62,3 +62,7 @@ Vậy những mã nguồn mà Copilot gợi ý ở đây được lấy từ đ
6262
| Kiểm thử tốn ít công sức. | Không giúp bạn trở thành một lập trình viên giỏi. |
6363

6464
Đón xem những trải nghiệm và phân tích cụ thể hơn về Copilot tại kênh [ZootoPi](https://youtu.be/jCCbCPVXcpQ).
65+
66+
- 👉Website: https://zootopi.dev/blog
67+
- 👉Youtube: https://youtu.be/jCCbCPVXcpQ
68+
- 👉Facebook: https://www.facebook.com/aizootopi

blog/2022-02-12-xai.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
title: XAI - Chiếc hộp đen phía sau AI
3+
description: XAI - MỞ CHIẾC "HỘP ĐEN" PHÍA SAU QUYẾT ĐỊNH CỦA AI
4+
<!-- author: Hồng Hạnh -->
5+
<!-- author_url: https://github.com/honghanhh -->
6+
---
7+
8+
# 🔥XAI - Mở chiếc hộp đen phía sau quyết định của AI🔥
9+
10+
Sau 1 thời gian vắng bóng team ZootoPi chúng mình đã quay lại và hứa hẹn sẽ lợi hại hơn xưa. Mở đầu năm mới, hãy cùng chúng mình dành 1 phút để tìm hiểu về một trong những lĩnh vực không quá mới nhưng đang rất được quan tâm hiện nay - XAI (hay còn gọi là Explainable AI - Diễn giải AI).
11+
12+
Những năm gần đây, các thuật toán học máy (ML) và học sâu (DL) ngày càng được ứng dụng trong nhiều lĩnh vực từ y tế, kinh tế, đến tài chính. Các thuật toán liên tục được cải tiến phức tạp hơn để đạt được hiệu quả tối ưu trong hiệu suất cũng như độ chính xác. Tuy khả năng dự đoán mạnh mẽ hơn, các mô hình này vẫn được xem như các hộp đen (black boxes) với hàng loạt phân vân đến từ người dùng như: Làm sao để biết tại sao AI lại đưa ra quyết định này mà không phải quyết định khác? Khi nào thì mô hình dự đoán thành công? Khi nào thất bại? Khi nào có thể tin vào dự đoán của AI?
13+
14+
![Explanable AI](img/xai.png)
15+
16+
<!--truncate-->
17+
18+
Những câu hỏi trên cho ta thấy nhu cầu hiểu được lí do đằng sau 1 dự đoán từ mô hình AI ngày càng cần thiết. Song song với đó là việc giữ cân bằng giữa độ chính xác và khả năng giải thích của 1 mô hình AI - điều mà rất nhiều mô hình ML và DL chưa giải quyết được. Do đó, XAI ra đời để giúp các thuật toán trở nên minh bạch hơn và thay đổi các mô hình AI theo hướng lấy người dùng làm trung tâm (user-centricity). Điều này giúp mô hình AI dễ ứng dụng trong nhiều lĩnh vực khác nhau. Bên cạnh đó, XAI không chỉ giúp việc đánh giá độ tin cậy của 1 mô hình AI trở nên dễ dàng hơn mà còn giúp người dùng có thể tương tác và học hỏi qua lại với AI.
19+
20+
Các phần tiếp theo trong hành trình cùng ZootoPI tìm hiểu về XAI sẽ tiếp tục được lên sóng trong thời gian tới, bao gồm: các phương pháp diễn giải model ML/DL, đánh giá việc diễn giải model AI, và các thư viện hỗ trợ XAI. Các bạn hãy dành 1 phút mỗi tuần để đồng hành cùng chúng mình nhé!
21+
22+
Đón xem những trải nghiệm và phân tích cụ thể từ Zootopi tại:
23+
24+
- 👉Website: https://zootopi.dev/blog
25+
- 👉Youtube: https://youtu.be/jCCbCPVXcpQ
26+
- 👉Facebook: https://www.facebook.com/aizootopi

blog/2022-02-13-xai1.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: XAI - Các phương pháp diễn giải mô hình
3+
description: XAI - Các phương pháp diễn giải mô hình học máy và học sâu
4+
<!-- author: Hồng Hạnh -->
5+
<!-- author_url: https://github.com/honghanhh -->
6+
---
7+
8+
# 🔥XAI - Phân loại các phương pháp diễn giải mô hình học máy🔥
9+
10+
Tiếp nối hành trình tìm hiểu về XAI cùng ZootoPi (tham khảo bài trước về [XAI - Chiếc hộp đen phía sau AI](https://zootopi.dev/blog/2022/02/12/xai)), 1 phút hôm nay hãy cùng chúng mình phân loại các phương pháp diễn giải 1 mô hình học máy. Cấu trúc của việc giải thích 1 mô hình học máy có thể được xác định bằng nhiều cách khác nhau dựa vào mục đích, thời điểm, hay tính ứng dụng, nhưng phần lớn đều có thể được phân chia theo 3 nhóm chính:
11+
12+
- Nội tại (intrinsic) hay hậu tại (post-hoc)?
13+
- Mô hình bất khả tri (model-agnostic) hay Mô hình cụ thể (model-specific)?
14+
- Cục bộ (local) hay toàn cục (global)?
15+
16+
![Explanable AI](img/xai_interpretability.png)
17+
18+
<!--truncate-->
19+
20+
## 1. Nội tại (intrinsic) hay hậu tại (post-hoc)?
21+
22+
Phương pháp nội tại đề cập đến việc giới hạn độ phức tạp của mô hình. Khi các mô hình đủ đơn giản về cấu trúc, chúng ta có thể hiểu cách mô hình đưa ra dự đoán bằng việc nhìn vào chính mô hình. Ví dụ như các trọng số đã học của 1 mô hình hồi quy tuyến tính (linear regression) hoặc các đường phân chia đã được học với cây quyết định (decision tree) có thể được dùng để giải thích tại sao mô hình lại đưa ra các dự đoán.
23+
24+
- Một số mô hình nội tại phổ biến bao gồm: Linear Regression, Logistic Regression, GLM, GAM, Decision Tree, Decision Rules, RuleFit, KNN, Naive Bayes,...
25+
26+
Trong khi đó, các phương pháp hậu tại phân tích mô hình sau khi đã được đào tạo, ví dụ như việc hoán vị các đặc trưng quan trọng (permutation feature importance). Các phương pháp này gồm 2 nhánh nhỏ là mô hình bất khả tri (model-agnostic) và mô hình cụ thể (model-specific).
27+
28+
## 2. Mô hình bất khả tri (model-agnostic) hay Mô hình cụ thể (model-specific)?
29+
30+
Mô hình bất khả tri có thể được áp dụng cho bất kì mô hình học máy nào trong khi mô hình cụ thể chỉ có thể áp dụng cho 1 số loại mô hình nhất định. Ví dụ, nếu một phương pháp chỉ hoạt động với mạng neuron (Neural Network) thì nó sẽ được coi là dành riêng cho mô hình đó. Ngược lại, nếu 1 phương pháp giải thích coi mọi mô hình đã được đào tạo là hộp đen thì nó sẽ được coi là mô hình bất khả tri.
31+
32+
## 3. Cục bộ (local) hay toàn cục (global)?
33+
34+
Phương pháp giải thích cục bộ nhằm giải thích 1 điểm dữ liệu hoặc 1 dự đoán duy nhất trong khi phương pháp toàn cục cố gắng cung cấp lời giải thích toàn diện về cách mô hình hoạt động dựa trên toàn bộ dữ liệu và dự đoán. Các phương pháp cục bộ có thể biến thành kỹ thuật toàn cục thông qua việc tổng hợp các kết quả cục bộ.
35+
36+
- Một số ví dụ cho phương pháp cục bộ có thể kể đến Individual Conditional Expectation Curves, LIME, Scoped Rules (anchors), Counterfactual Explanations, Shapley values, SHAP, ...
37+
- Một số phương pháp toàn cục phổ biến bao gồm Partial dependence plot, Accumulated local effect plots, Feature interaction (H-statistics), Functional decomposition, Permutation feature importance, Global surrogate models, Prototypes and criticisms, ...
38+
39+
Chi tiết về các phương pháp sẽ được chúng mình lên sóng trong thời gian tới, đừng quên follow hashtag #XAI #1phutaicungzootopi để không bỏ lỡ nhé!
40+
41+
Đón xem những trải nghiệm và phân tích cụ thể từ Zootopi tại:
42+
43+
- 👉Website: https://zootopi.dev/blog
44+
- 👉Youtube: https://youtu.be/jCCbCPVXcpQ
45+
- 👉Facebook: https://www.facebook.com/aizootopi

blog/2022-02-14-xai2.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: XAI - Biểu đồ Phụ thuộc Từng phần
3+
description: XAI - Biểu đồ Phụ thuộc Từng phần
4+
<!-- author: Hồng Hạnh -->
5+
<!-- author_url: https://github.com/honghanhh -->
6+
---
7+
8+
# 🔥XAI - Biểu đồ Phụ thuộc Từng phần (PDP)🔥
9+
10+
Khi xây dựng 1 mô hình học máy (ML) chắc hẳn chúng ta đều quen thuộc với việc sử dụng chỉ số quan trọng của các đặc trưng (feature importance) để lựa chọn đặc trưng cho mô hình. Chỉ số này giúp chúng ta biết điều gì quan trọng với mô hình, tuy nhiên, các bạn đã bao giờ thắc mắc những đặc trưng này liên quan như thế nào đến các dự đoán của mô hình?
11+
12+
Ví dụ trong bài toán dự đoán giá nhà, kinh độ và vĩ độ có ảnh hưởng như thế nào đến giá nhà? Những ngôi nhà có cùng kích thước ở các vị trí khác nhau liệu có giá khác nhau? Hay những ngôi nhà khác kích thước trên cùng khu vực liệu giá sẽ thay đổi như thế nào?
13+
14+
Partial Dependence Plot (PDP) hay còn gọi là Biểu đồ Phụ thuộc Từng phần sẽ giúp chúng ta trả lời những câu hỏi trên.
15+
16+
![PDP](img/xai_pdp.png)
17+
18+
<!--truncate-->
19+
20+
Biểu đồ PDP cho thấy tác động cận biên (marginal effect) của 1 (hoặc một vài) đặc trưng được chọn lọc đối với kết quả dự đoán của mô hình. Nói cách khác, chúng ta có thể hiểu sự phụ thuộc một phần (partial dependence) là kết quả dự đoán được mong đợi (expected target) dưới dạng một hàm của các đặc trưng đã được chọn lựa để đưa vào mô hình.
21+
22+
Một ví dụ có thể thấy ở hình dưới là sự ảnh hưởng của độ tuổi trung bình của nhà lên giá trị trung bình của ngôi nhà đó. Hay với những ngôi nhà có `AveOccup` (số lượng người cư trú trung bình) nhỏ hơn 2, thì giá nhà phụ thuộc khá lớn vào độ tuổi của căn nhà, trong khi nếu `AveOccup` lớn hơn 2, thì độ tuổi và giá nhà gần như không phụ thuộc.
23+
24+
Để giúp các bạn dễ hình dung hơn về Biểu đồ Phụ thuộc Từng Phần, chúng ta sẽ cùng nhau thực hành trên một mô hình đơn giản với bộ dữ liệu về giá nhà trung bình California Housing Dataset (trên Scikit-Learn). Tham khảo bài thực hành đơn giản tại bài viết [XAI - Thực hành với Biểu đồ Phụ thuộc Từng Phần](https://zootopi.dev/blog/2022/02/15/xai2-thuc-hanh/).
25+
26+
Các thư viện hỗ trợ tạo biểu đồ PDP bao gồm:
27+
28+
- Scikit-learn: Module sklearn.inspection cung cấp cho chúng mình hàm plot_partial_dependence() để tạo ra biểu đồ PDP một cách nhanh chóng. Tham khảo [https://scikit-learn.org/stable/modules/partial_dependence.html](https://scikit-learn.org/stable/modules/partial_dependence.html)
29+
- PDPbox: một thư viện hỗ trợ biểu diễn các đồ thị một cách nhanh chóng, bao gồm biểu đồ PDP. Tham khảo [https://github.com/SauceCat/PDPbox](https://github.com/SauceCat/PDPbox)
30+
31+
Một số nguồn hữu ích về biểu đồ PDP:
32+
33+
- [https://towardsdatascience.com/explainable-ai-xai-methods-part-1-partial-dependence-plot-pdp-349441901a3d](https://towardsdatascience.com/explainable-ai-xai-methods-part-1-partial-dependence-plot-pdp-349441901a3d)
34+
- [https://scikit-learn.org/stable/modules/partial_dependence.html](https://scikit-learn.org/stable/modules/partial_dependence.html)
35+
36+
Chi tiết về các phương pháp sẽ được chúng mình lên sóng trong thời gian tới, đừng quên follow hashtag #XAI #1phutaicungzootopi để không bỏ lỡ nhé!
37+
38+
Đón xem những trải nghiệm và phân tích cụ thể từ Zootopi tại:
39+
40+
- 👉Website: https://zootopi.dev/blog
41+
- 👉Youtube: https://youtu.be/jCCbCPVXcpQ
42+
- 👉Facebook: https://www.facebook.com/aizootopi

0 commit comments

Comments
 (0)