Chuyển đến nội dung chính
  1. Bài viết/

Xây thuật toán định giá tác phẩm nghệ thuật: rốt cuộc điều gì quyết định giá đấu giá?

· loading · loading ·
Nhân Tài Đức
Tác giả
Nhân Tài Đức
Người dẫn dắt đội ngũ và kỹ sư phần mềm, sống tại Seoul, Hàn Quốc

Mấy tuần vừa rồi tôi dồn sức cho hai dự án có liên quan đến nhau. Dự án đầu tiên là tái hiện lại một bài báo năm 2024 đăng trên Scientific Reports của Lee và cộng sự, tựa đề “Social signals predict contemporary art prices better than visual features, particularly in emerging markets” (tạm dịch: tín hiệu xã hội dự đoán giá nghệ thuật đương đại tốt hơn đặc điểm thị giác, nhất là ở các thị trường mới nổi). Nhóm tác giả train một mô hình XGBoost trên 34,200 bản ghi đấu giá của 590 nghệ sĩ còn sống. Dự án thứ hai là Art Evaluator, một nền tảng viết bằng Django và Expo, có knowledge graph (đồ thị tri thức) nối nghệ sĩ, chủ sở hữu và các bản ghi đấu giá với nhau. Nói nôm na, nếu muốn đem một mô hình như của bài báo ra làm việc gì có ích thì bạn sẽ cần đến phần hạ tầng dữ liệu bao quanh nó, và Art Evaluator chính là phần đó.

Làm cả hai, tôi cứ bị kéo về cùng một câu hỏi: liệu có đoán trước được một tác phẩm sẽ bán với giá bao nhiêu không? Câu trả lời là có, nhưng không phải nhờ nhìn vào tác phẩm. Những feature thực sự có tác dụng gần như đều mang tính xã hội.

Vì sao định giá nghệ thuật lại khó
#

Trước khi viết dòng mã nào, tôi bỏ vài ngày đọc xem giám định viên và nhà đấu giá định giá tác phẩm như thế nào. Danh sách yếu tố dài dằng dặc, mà phần lớn lại chẳng quy ra số liệu gọn gàng được. Đầu tiên là provenance, tức lịch sử nguồn gốc: ai từng sở hữu, từng trưng bày ở đâu, được catalogue nào nhắc tới. Rồi đến chuyện xác nhận tác giả: một tác phẩm được quỹ của nghệ sĩ xác nhận có thể đắt gấp hàng chục, hàng trăm lần so với tác phẩm chỉ được ghi là “attributed to”, tức “được cho là của” người đó. Danh tiếng nghệ sĩ cũng quan trọng, và danh tiếng ấy được gây dựng từ các triển lãm cá nhân, những lần góp mặt ở biennale, tác phẩm được bảo tàng mua lại và cách giới phê bình đón nhận. Kế đến là tình trạng tác phẩm và lịch sử phục chế, độ hiếm của nó trong toàn bộ sự nghiệp nghệ sĩ, và chất liệu: sơn dầu trên toan thường bán được giá hơn tác phẩm trên giấy, còn tác phẩm trên giấy lại hơn tranh in. Tác phẩm từng nằm trong bộ sưu tập của MoMA, Tate hay Louvre thì như được đóng một con dấu mà thị trường thứ cấp tin tưởng. Thời điểm cũng có ảnh hưởng: dữ liệu so sánh từ năm năm trước là đã lỗi thời.

Chuyên gia của Sotheby’s còn hay nhắc tới “giá trị cảm xúc”: nhà sưu tập khao khát đến mức nào, các màn đua giá nóng lên ra sao, tác phẩm chạm tới cảm xúc riêng của từng người đến đâu. Chính yếu tố này có thể đẩy giá búa (hammer price) vượt xa mọi mức ước tính hợp lý. Bạn không mô hình hóa trực tiếp được thứ đó, nhưng vẫn nắm được đại khái hình dạng của nó một cách gián tiếp, thông qua mức ước tính của nhà đấu giá.

Trong thực tế, cách định giá phổ biến nhất là so sánh với các giao dịch tương đương (comparable sales): tìm kết quả đấu giá gần đây của những tác phẩm tương tự của cùng nghệ sĩ, rồi điều chỉnh theo những điểm khác nhau. Mô hình XGBoost cũng làm đúng việc ấy, chỉ khác là ở quy mô lớn hơn và với nhiều feature hơn hẳn số yếu tố mà một giám định viên có thể tự theo dõi bằng tay.

Luận điểm chính của bài báo
#

Lee và cộng sự đưa ra một lập luận khá ngược đời: nội dung thị giác của tác phẩm chỉ giải thích được rất ít về giá của nó. Mô hình chỉ dùng feature thị giác của họ, gồm màu sắc, bố cục, mật độ cạnh và embedding từ ResNet18, đạt R² khoảng 0.055. Tức là chỉ nhỉnh hơn một chút so với việc lấy giá trung bình ra đoán bừa.

Trong khi đó, một mô hình chỉ dùng các feature “xã hội” ở cấp nghệ sĩ (giai đoạn sự nghiệp, lịch sử triển lãm, giá đấu giá trước đây, thứ hạng trên ArtFacts) lại đạt R² ≈ 0.73. Thêm mức ước tính trước phiên của nhà đấu giá vào làm feature thì con số này leo lên 0.92.

Nói cách khác, bản thân tác phẩm gần như không quan trọng. Điều quan trọng là ai làm ra nó, và thị trường đã đánh giá người đó thế nào.

Luận điểm phụ của bài báo là khoảng cách này còn lớn hơn nữa ở các thị trường mới nổi, tức là mọi nơi nằm ngoài nhóm thị trường lâu đời gồm Mỹ, Anh, Pháp và Đức. Ở những thị trường đó, tín hiệu xã hội càng có trọng lượng, còn ước tính của chuyên gia lại kém chính xác hơn, nên dự đoán bằng thuật toán có nhiều đất dụng võ hơn.

Tái hiện bài báo
#

Yêu cầu đặt ra khá rõ ràng: tái hiện bài báo dưới dạng một MVP do một lập trình viên làm. Không deploy lên production, không có pipeline dữ liệu live. Chỉ cần làm lại cho sát với bài gốc, mã ở mức prototype, kèm một bản báo cáo ghi lại những gì tìm được.

Dữ liệu
#

Nhóm tác giả đã đính kèm sẵn các tệp CSV đã làm sạch trong phần tài liệu bổ sung:

TệpSố dòngNội dung
Df_mloutfull.csv86,221Toàn bộ dataset thô, hơn 500 cột
df_for_ml_improved_up_to_2012.csv34,200Dataset chính đã làm sạch, 1996–2012
df_for_ml_improved_old_market.csv29,853Chỉ gồm thị trường lâu đời
df_for_ml_improved_new_market.csv4,346Chỉ gồm thị trường mới nổi
transactions.csv114,283Bản ghi đấu giá thô kèm link ảnh

Tổng cộng khoảng 5 GB, nạp vào RAM thoải mái. Train XGBoost trên dataset cỡ này chưa tới năm phút bằng CPU của laptop, và mô hình chính cũng không cần GPU. Với dữ liệu dạng bảng ở quy mô này, gradient-boosted tree train gần như chẳng tốn gì. Chuyện này rất dễ quên nếu mấy năm qua bạn chỉ quanh quẩn với neural net.

Feature
#

Mô hình dùng 38 feature, chia làm ba nhóm.

Về nghệ sĩ (30 feature):

  • Nhân khẩu học: tuổi, giới tính, trình độ học vấn, có học trường top hay không.
  • Sự nghiệp: thứ hạng ArtFacts, số triển lãm cá nhân, số triển lãm nhóm, số lần góp mặt ở biennale, giải thưởng.
  • Bộ sưu tập: số bộ sưu tập tư nhân và công cộng đang giữ tác phẩm.
  • Lịch sử giá: giá trung bình, trung vị, cao nhất và thấp nhất trong 5 và 10 lần bán gần nhất của nghệ sĩ.
  • Lịch sử giá đã quy đổi theo kích thước (giá trên mỗi inch vuông).
  • Địa lý: nơi nghệ sĩ làm việc và sinh sống, mã hóa thành các cờ theo quốc gia.
  • Cờ khớp: thể loại của tác phẩm có đúng với thể loại quen thuộc của nghệ sĩ không? Quốc gia nơi diễn ra phiên bán có khớp không?

Về thị trường (8 feature):

  • Hạng của nhà đấu giá (1–4).
  • Mặt bằng giá theo quốc gia và khu vực trong năm đó (thấp nhất, trung bình, trung vị, cao nhất).

Về bản thân tác phẩm (không liên quan đến hình ảnh):

  • Chiều rộng, chiều cao, diện tích tính bằng inch vuông.
  • Nhóm chất liệu (tranh vẽ, tranh in, ảnh, điêu khắc, khác).

Để ý thứ bị thiếu: không có bất cứ thông tin nào về nội dung hình ảnh thật sự của tác phẩm. Phần đó chỉ xuất hiện trong một thí nghiệm ablation riêng.

Chia tập train/test
#

Dữ liệu được chia theo thời gian chứ không chia ngẫu nhiên. Mọi giao dịch trước tháng 5 năm 2011 vào tập train (~80%, ~27,360 bản ghi), mọi giao dịch sau đó vào tập test (~20%, ~6,840 bản ghi). Nếu chia ngẫu nhiên, thông tin từ tương lai sẽ rò rỉ vào qua các feature lịch sử giá của nghệ sĩ. Khi các bản ghi của cùng một nghệ sĩ bị rải lẫn vào cả train lẫn test, những dòng test đã “nhìn thấy” giá của nhau qua các rolling window, và R² của bạn sẽ đẹp hơn thực tế.

Kiểu lỗi này nhìn ra rồi thì thấy hiển nhiên, nhưng lần đầu làm thì rất dễ bỏ sót.

Mô hình
#

Tôi dùng XGBoost regressor để dự đoán log10(price_usd), tìm hyperparameter trên max_depthlearning_rate, rồi đánh giá trên một phần validation để riêng. Có hai biến thể:

  1. Không dùng ước tính của chuyên gia. Mục tiêu R² ≈ 0.73.
  2. Có dùng ước tính của chuyên gia. Mục tiêu R² ≈ 0.92.

Biến thể “có ước tính” lấy thêm mức ước tính thấp và cao trước phiên của nhà đấu giá làm feature. Chỉ riêng hai con số ước tính này đã đạt R² ≈ 0.90. Cộng thêm các feature xã hội vào thì được thêm 0.02 nữa. Con số tuyệt đối thì nhỏ, nhưng 0.02 đó chính là phần mô hình thực sự dự đoán được vượt ra ngoài những gì chuyên gia đã biết.

Mục tiêu của tôi
#

Tôi không định vượt mặt bài báo. Mục tiêu chỉ là đạt R² trong khoảng ±0.03 so với kết quả của họ ở mọi điều kiện. Với các con số chính (~0.73 khi chỉ dùng metadata, ~0.92 khi có ước tính), việc tái hiện khá thuận lợi: XGBoost cho kết quả tất định khi cố định seed, còn các feature được mô tả rõ ràng. Tôi đoán trước sẽ bị lệch ở hai chỗ. Một là phần ablation feature thị giác, nơi chỉ cần khác một chút về số chiều PCA hay khâu tiền xử lý ảnh là kết quả đã xê dịch. Hai là phần thị trường mới nổi, vốn chỉ có 4,346 bản ghi nên mức nhiễu nền cao hơn.

Vì sao feature thị giác gần như vô dụng
#

Với tôi, đây là kết quả thú vị nhất. Pipeline thị giác của bài báo trích ra 8,971 con số cho mỗi bức ảnh:

  • GIST descriptor (960 chiều): bố cục không gian tổng thể.
  • Histogram of Oriented Gradients (2,915 chiều): cấu trúc các đường cạnh.
  • Color histogram (4,096 chiều): phân bố bảng màu.
  • ResNet18 features (1,000 chiều): embedding cấp cao từ một mô hình pretrained.
  • Colorfulness (1 chiều): một con số đo độ rực màu.
  • Complexity (1 chiều): một con số đo mật độ cạnh.

Nén hết chỗ đó bằng PCA rồi đưa vào XGBoost, bạn được R² ≈ 0.055. Riêng màu sắc đạt 0.056. Cấu trúc cạnh đạt 0.029. Còn embedding của neural net chỉ được 0.009, coi như bằng không.

Cách giải thích gọn nhất là giá đấu giá được quyết định ở cấp nghệ sĩ chứ không phải ở từng tác phẩm. Hai bức tranh của cùng một nghệ sĩ sẽ bán được số tiền na ná nhau, bất kể trên toan vẽ gì, vì thứ người mua thật sự trả tiền là chữ ký.

Ai từng đọc phần ghi chú trong catalogue đấu giá sẽ hiểu vì sao lại như vậy. Gần như toàn bộ câu chữ dành cho provenance, lịch sử triển lãm và các giao dịch tương đương. Bản thân tác phẩm thì hầu như chẳng được mô tả gì.

Nếu nghiêm túc nhìn vào con số 5% đó, thì nội dung thẩm mỹ của một tác phẩm gần như chẳng dính dáng gì tới giá trị thị trường của nó. Thị trường trả tiền cho thứ gì thì trả, nhưng không phải cho những gì nằm trên toan. Một mô hình hiểu nghệ thuật đến từng pixel sẽ đoán giá kém hơn một mô hình chỉ biết mỗi CV của nghệ sĩ.

Giai đoạn 3 chỉ làm khi đủ điều kiện
#

Cột link ảnh trong dữ liệu của bài báo trỏ tới các URL còn hoạt động vào năm 2012. Đến năm 2026 thì phần lớn đã chết. Trong kế hoạch, tôi đã ghi chú rủi ro này ngay từ ngày thứ 8: lấy ngẫu nhiên một trăm URL xem còn bao nhiêu cái mở được. Nếu hơn một nửa đã mất thì bỏ qua hẳn giai đoạn thị giác và ghi lại lý do.

Dù sao thì feature thị giác cũng chỉ giải thích khoảng 5% độ biến thiên của giá. Mất hai tuần vật lộn với đống link hỏng chỉ để xác nhận một con số nhỏ cỡ đó thì không đáng. Tốt hơn là ghi chuyện link chết vào báo cáo rồi làm tiếp phần khác.

Thị trường lâu đời và thị trường mới nổi
#

Bài báo train các mô hình riêng cho thị trường lâu đời (Mỹ, Anh, Pháp, Đức) và thị trường mới nổi (19 quốc gia còn lại). Kết quả chính như sau:

Nhóm featureR² thị trường lâu đờiR² thị trường mới nổi
Chỉ thị giác0.0530.056
Metadata (tín hiệu xã hội)0.6670.750
Metadata + ước tính0.9160.859

Có hai điểm đáng chú ý. Thứ nhất, tín hiệu xã hội ở thị trường mới nổi lại quan trọng hơn chứ không kém đi. Tôi cứ tưởng thị trường lâu đời có dữ liệu phong phú hơn thì feature xã hội sẽ phát huy tốt hơn, nhưng hóa ra ngược lại.

Thứ hai, ước tính của chuyên gia ở thị trường mới nổi kém chính xác hơn. Đó chính là khoảng cách giữa 0.916 và 0.859 sau khi thêm ước tính vào. Ở thị trường lâu đời, một dự đoán bằng thuật toán phải cạnh tranh với chuyên gia Sotheby’s, người có cả chục năm dữ liệu giao dịch tương đương chống lưng. Còn ở thị trường mới nổi, chuyên gia có ít dữ liệu hơn, nên thuật toán có nhiều chỗ để chứng tỏ giá trị hơn.

Nếu một ngày nào đó bạn muốn thương mại hóa một mô hình như thế này, thì thị trường mới nổi là nơi nó thật sự đáng đồng tiền bát gạo.

Những giới hạn cần nói rõ
#

Đây là bản tái hiện một bài báo, không phải hệ thống chạy production. Không có pipeline dữ liệu live: mô hình train trên dữ liệu đấu giá 1996–2012 và không bao giờ được cập nhật. Không có deploy: đầu ra là notebook và một bản báo cáo, chứ không phải API dự đoán. Không có cơ chế phát hiện drift, nên train xong thì mô hình hoàn toàn không biết thị trường đã thay đổi từ lúc nào. Dataset cũng bị đóng băng, nên crypto art, NFT hay những biến động thị trường sau COVID đơn giản là không có trong đó. Nếu muốn dự đoán giá ở K Auction hay Seoul Auction, bạn sẽ cần feature riêng cho từng nhà đấu giá, và có khi cả một mô hình riêng cho thị trường Hàn Quốc. Ở đây chưa có gì chuyên biệt đến mức ấy.

Mô hình cũng chỉ phản ánh các quy luật trong quá khứ. Có ý kiến cho rằng thị trường đương đại đã thay đổi về cấu trúc vào khoảng năm 2015, khi các hội chợ nghệ thuật trở thành kênh bán hàng chính của thị trường sơ cấp và một thế hệ nhà sưu tập mới bước vào cuộc chơi. Nếu đúng vậy, các quy luật của giai đoạn 1996–2012 có thể không còn áp dụng được nữa.

Từ bài báo đến nền tảng
#

Đọc xong bài báo, tôi nhìn dự án thứ hai theo một cách khác hẳn. Ban đầu Art Evaluator được định hình là một sàn gọi vốn cộng đồng (crowdfunding) cho các triển lãm nghệ thuật. Nghệ sĩ gọi vốn cho các triển lãm sắp tới, còn nhà đầu tư được tiếp cận nghệ sĩ mới nổi sớm hơn so với khi chờ họ lên sàn đấu giá.

Phần sản phẩm người dùng nhìn thấy được cố tình giữ đơn giản. Nghệ sĩ đăng các triển lãm sắp tới đang cần vốn (địa điểm, ngày tổ chức, các tác phẩm dự kiến). Nhà đầu tư rót tiền cho từng triển lãm cụ thể theo các mức ($100, $500, $1k, $5k), và được chia phần lời khi tác phẩm bán được. AI agent lo phần lớn việc trò chuyện giữa nghệ sĩ và nhà đầu tư, nên hai bên không cần cùng online mà câu chuyện vẫn tiếp tục. Điều này đặc biệt có ích khi một gallery ở Hàn Quốc làm việc với một nhà sưu tập ở Mỹ, hai bên lệch nhau tới 14 tiếng.

Một khi đã thấm rằng tài sản thật sự là người nghệ sĩ chứ không phải tác phẩm, thì data model cũng phải đổi theo. Thứ bạn cần ghi lại là ai từng sở hữu từng tác phẩm, tác phẩm đã được trưng bày ở đâu, các tác phẩm tương đương bán được bao nhiêu, và còn ai khác đang giữ tác phẩm của cùng nghệ sĩ. Chuỗi sở hữu, sự công nhận từ các tổ chức, dữ liệu đấu giá để so sánh, mạng lưới nhà sưu tập: knowledge graph sinh ra chính là để lưu những thứ như vậy.

Backend Django (apps/artworks/models.py) mô hình hóa bốn thành phần cơ bản:

  • Artist: người làm ra tác phẩm.
  • AuctionRecord: các giao dịch trong quá khứ, kèm giá, ngày bán và nhà đấu giá.
  • OwnershipRecord: ai nắm giữ tác phẩm nào, từ ngày nào đến ngày nào.
  • ScrapeLog: nguồn gốc của chính dữ liệu, để kiểm tra lại được từng bản ghi lấy từ đâu.

Ứng dụng di động (Expo + React Native + @shopify/react-native-skia) hiển thị toàn bộ dữ liệu này thành một đồ thị force-directed. useGraphData gọi endpoint /api/graph/ của Django, useForceLayout chạy mô phỏng d3-force bằng JS ở mỗi tick, còn GraphCanvas vẽ kết quả bằng Skia. Có một thanh trượt thời gian để bạn kéo qua từng năm và xem mạng lưới thay đổi ra sao: nhà sưu tập nào tham gia vào lúc nào, nghệ sĩ nào được bảo tàng nào để mắt tới, tác phẩm nào đổi chủ trong đợt suy thoái năm 2008.

Mỗi loại node có hình dạng và màu sắc riêng:

Loại nodeHình dạngMàu
Nghệ sĩHình thoiđỏ
Tác phẩmChữ nhật bo gócxanh dương
Nhà sưu tậpHình trònxanh lá
Người buôn tranhHình tròncam
Bảo tàngHình tròntím
Di sản nghệ sĩ (estate)Hình trònxanh mòng két
Nhà đấu giáHình lục giácxám

Mấy hình dạng này không phải để trang trí. Khi zoom ra để xem vài trăm node cùng lúc, chỉ cần nhìn đường viền là biết đó là loại thực thể nào, khỏi phải chờ nhãn hiện lên. Một hình thoi có nhiều hình tròn vây quanh là một nghệ sĩ cùng mạng lưới nhà sưu tập của họ. Một hình lục giác nối với nhiều hình thoi là một nhà đấu giá đang phụ trách cả một danh sách nghệ sĩ. Chỉ cần liếc qua là đọc được cấu trúc của cả một thị trường.

Tab thứ hai hiển thị cùng dữ liệu đó trên trục thời gian vis-timeline: các giai đoạn sở hữu là những thanh ngang, còn mỗi lần bán là một điểm sự kiện. Vẫn là đồ thị ấy, chỉ nhìn qua một lăng kính khác. Cách này hữu ích khi bạn muốn xem ai nắm giữ tác phẩm nào theo trình tự thời gian, thay vì hình dạng của mạng lưới ở một thời điểm.

Bản thân Art Evaluator không phải công cụ dự đoán giá. Nó là tầng dữ liệu nằm bên dưới một công cụ như thế. Nếu muốn nuôi một mô hình kiểu của Lee và cộng sự bằng dữ liệu live, luôn được cập nhật, thay vì mấy tệp CSV đóng băng từ năm 2012, thì đây chính là cấu trúc bạn cần.

Định giá bằng đám đông, dưới dạng một trò chơi
#

Phần tôi chưa làm, nhưng lại là phần tôi hứng thú nhất, là biến việc định giá nghệ thuật thành một trò chơi.

Bài báo của Lee và cộng sự lấy mức ước tính trước phiên của nhà đấu giá làm feature, và nhờ nó mà R² tăng vọt. Những ước tính này có giá trị vì chúng là phán đoán tổng hợp của các chuyên gia được đào tạo bài bản, đã từng xem hàng nghìn tác phẩm tương đương, và bản thân họ cũng có quyền lợi gắn với kết quả. Nhưng chuyên gia của nhà đấu giá là nguồn lực vừa hiếm vừa đắt. Cả thế giới chỉ có vài trăm người, họ chỉ làm việc với những lô tác phẩm được ký gửi cụ thể, và họ không đụng tới phần đuôi dài (long tail): những nghệ sĩ mà chưa ai mang tác phẩm đi ký gửi.

Tôi cứ quay đi quay lại một câu hỏi: liệu có tổng hợp được một tín hiệu tương đương từ phán đoán của một nhóm người đông hơn và rẻ hơn nhiều hay không?

Thiết kế sơ bộ như sau:

  • Cho người dùng xem một tác phẩm: ảnh, kích thước, năm sáng tác, tên nghệ sĩ, CV tóm tắt.
  • Hỏi họ tác phẩm đó sẽ bán được bao nhiêu ở phiên đấu giá.
  • Cho họ chọn một khoảng giá, hoặc đoán thẳng con số giá búa.
  • Sau khi họ chốt câu trả lời thì mới cho xem giá bán thật.
  • Chấm độ chính xác của họ theo kiểu Brier score, tích lũy theo thời gian.
  • Hiển thị bảng xếp hạng, chuỗi ngày chơi liên tục (streak) và huy hiệu cho những chuỗi đoán trúng liên tiếp.
  • Đánh trọng số cho các dự đoán sau này của từng người dựa trên độ chính xác trước đó của họ.

Về bản chất, đây là một thị trường dự đoán (prediction market) cho giá tranh, chỉ khoác lên lớp áo của một trò đoán giá. Vòng lặp y hệt Geoguessr hay điểm puzzle trên chess.com: chơi lại được nhiều lần, chấm điểm được, và có phản hồi để bạn luyện kỹ năng dần lên. Ai đoán giỏi sẽ leo lên bảng xếp hạng, và những lần đoán sau của họ sẽ có trọng lượng lớn hơn trong tín hiệu tổng hợp.

Cái hay nằm ở phía mô hình. Kết quả tổng hợp có trọng số của các lượt đoán trở thành một feature để đưa vào XGBoost, bên cạnh các tín hiệu xã hội. Nếu trung vị các lượt đoán của đám đông, sau khi đánh trọng số theo độ chính xác, bám sát giá búa, thì bạn đã có trong tay thứ gần giống một bản ước tính “nhân tạo” của nhà đấu giá cho những tác phẩm chưa có ước tính thật. Đó đúng là lỗ hổng ở phần đuôi dài các nghệ sĩ, chỗ mà mô hình của Lee và cộng sự cần được hỗ trợ nhất.

Còn một khía cạnh nữa là bài toán cold-start. Mô hình học tốt với những nghệ sĩ có lịch sử giá dày dặn, nhưng học rất tệ với nghệ sĩ mới chỉ có ba lần bán. Ba lần bán cộng thêm một nghìn lượt đoán của đám đông thì ít ra cũng có cái để làm việc. Định giá bằng đám đông là một cách tạo ra tín hiệu để train cho những trường hợp mà dữ liệu gốc không bao phủ tới.

Gamification quan trọng ở đây, vì cách duy nhất để đám đông trở nên đáng tin là làm cho việc tham gia đủ vui để người ta chơi thật nhiều. Một form hỏi đúng một câu chỉ cho bạn dữ liệu nhiễu, từ những người bấm cho xong một lần rồi thôi. Còn một streak hằng ngày có bảng xếp hạng và huy hiệu cho người đoán sát thì giữ chân được cùng một người, để họ đưa ra 500 dự đoán cân nhắc kỹ lưỡng trong một năm. Số lượng lớn, cộng với việc người chơi tự sàng lọc (người đoán giỏi ở lại, người đoán dở chán rồi bỏ đi), mới là thứ cho bạn tín hiệu thay vì nhiễu.

Trước khi xây bất cứ thứ gì, tôi còn phải trả lời vài câu hỏi thiết kế. Nên cho người dùng xem bao nhiêu thông tin: chỉ ảnh và CV, hay cả các giao dịch tương đương? Càng nhiều ngữ cảnh thì đoán càng có cơ sở, nhưng quá một ngưỡng nào đó thì người dùng chủ yếu chỉ nhắc lại những gì bạn vừa cho họ xem. Phản hồi về giá nên chi tiết đến đâu: tiết lộ chính xác giá búa, chỉ đưa một khoảng, hay chỉ báo họ có nằm trong ±20% hay không? Chi tiết quá thì người chơi quen neo vào những con số cụ thể, còn mơ hồ quá thì họ không tự điều chỉnh được. Rồi còn chuyện lách bảng xếp hạng: người chơi sẽ tìm đến những nghệ sĩ họ đã biết, mà đoán giá một bức Banksy thì chủ yếu là kiến thức đố vui chứ đâu phải kỹ năng. Có lẽ cách xử lý là bắt buộc chọn tác phẩm ngẫu nhiên, giống cách Duolingo chọn bài học, cộng thêm một bảng xếp hạng riêng cho các vòng “chơi mù” giấu tên nghệ sĩ. Cuối cùng, thiên kiến nhận thức muộn (hindsight bias) là không tránh được: một khi người dùng đã biết một bức Basquiat bán được $110M, họ không thể giả vờ là chưa biết. Thứ giữ cho vòng lặp này trung thực là nguồn tác phẩm mới, chưa ai xem, mà nguồn đó thì mỗi tuần chỉ có hạn.

Cách tiếp cận bằng gamification cũng giúp gắn kết hai nửa của nền tảng. Phía crowdfunding thưởng cho nhà đầu tư khi triển lãm làm ăn có lãi. Phía trò đoán giá thì thưởng cho bất kỳ ai đoán giá giỏi, dù có bỏ tiền đầu tư hay không. Cả hai đều xuất phát từ cùng một ý tưởng: biến phán đoán tập thể của đám đông thành một tín hiệu có thể giao dịch. Một bên giao dịch bằng vốn, bên kia giao dịch bằng sự chú ý. Người chơi nào thật sự có nghề thì về sau có thể “lên lớp” sang phía nhà đầu tư, mang theo một thành tích đoán giá kiểm chứng được. Đó là một bộ lọc tốt hơn nhiều so với kiểu “quen đúng ông chủ gallery”.

Những gì tôi rút ra
#

Ước tính trước phiên thật sự rất tốt. Nhà đấu giá hay bị chê là định giá thiếu minh bạch, nhưng chỉ riêng các ước tính của họ đã giải thích được gần 90% độ biến thiên của giá. Chuyên gia làm cách nào thì làm, họ làm tốt. Vậy mà xét về mặt thống kê, bản thân tác phẩm lại gần như không quan trọng, một sự thật khá khó chịu nếu bạn yêu nghệ thuật vì cái đẹp. Thị trường không định giá thứ bạn nhìn thấy. Nó định giá dựa trên số tiền người khác đã trả cho những tác phẩm na ná.

Về phía mô hình hóa, có hai thói quen tỏ ra rất đáng giá. Chia dữ liệu theo thời gian là cách trung thực duy nhất để đánh giá mô hình dự đoán giá. Chia ngẫu nhiên thì cho bạn những con số R² đẹp như mơ, nhưng đưa lên production là vỡ. Và gradient-boosted tree vẫn là công cụ phù hợp cho bài toán này: XGBoost đánh bại mọi baseline dùng neural net trong bài báo, và với dữ liệu dạng bảng ở quy mô này, lại có sẵn chừng ấy feature được thiết kế công phu, thì chẳng có lý do gì phải tìm đến transformer.

Về mặt kinh doanh, cơ hội thú vị nằm ở các thị trường mới nổi, nơi định giá của chuyên gia còn mỏng nhất và dự đoán bằng thuật toán có nhiều khoảng trống nhất để lấp. Đám đông cũng là một nguồn dữ liệu đang bị bỏ phí. Feature mạnh nhất trong mô hình của Lee và cộng sự là mức ước tính trước phiên của nhà đấu giá. Nếu một đám đông đã được hiệu chỉnh tạo ra được tín hiệu tương đương cho phần đuôi dài các nghệ sĩ, thì đó là một cơ hội thật, vừa làm đầu vào cho mô hình, vừa có thể đứng riêng thành một sản phẩm.

Rốt cuộc, hai dự án bổ trợ cho nhau nhiều hơn tôi dự tính. Bản tái hiện bài báo cho tôi biết điều gì dự đoán được giá. Phần làm nền tảng cho tôi biết cần cấu trúc dữ liệu thế nào để đem hiểu biết đó ra dùng. Ý tưởng gamification nối hai thứ lại: knowledge graph cung cấp tác phẩm và lịch sử giao dịch, trò đoán giá tạo ra một feature ước tính từ đám đông, rồi mô hình dùng feature đó cùng các tín hiệu xã hội để dự đoán giá cho những nghệ sĩ mà nếu thiếu nó thì mô hình hoàn toàn không nhìn thấy.

Chưa phần nào xong cả. Bản tái hiện bài báo mới là một prototype chạy được kèm bản báo cáo, nền tảng là một bản demo với dữ liệu mẫu, còn trò đoán giá thì mới chỉ nằm trên mấy ghi chú thiết kế bạn vừa đọc. Nhưng ý tưởng xuyên suốt đủ nhất quán để tôi tin rằng hướng đi đúng đã khá rõ: định giá nghệ sĩ thay vì tác phẩm, tổng hợp ý kiến đám đông thay vì chỉ trông vào chuyên gia, và coi giá trị của tác phẩm là thứ cả thị trường cùng tạo ra, chứ không phải thứ do chuyên gia định sẵn rồi ban xuống.

Nếu có thời gian để xây, đó sẽ là phiên bản tôi làm tiếp theo.