On “The Sympathizer”


I made great progress and almost finish The Sympathizer. There is only one final knot to be untied, but I would write something about it now, otherwise I will be too lazy when I am done with it.

Usually I am highly reluctant to read trending books. Books, especially fictions, are written to sustain the test of time, hence if a book is good for today, it shouldn’t be too bad 10 years later, otherwise it isn’t worth it. Therefore, it usually isn’t worth the effort to read a book when you are not sure if it would last for 10 years (or 5 years, perhaps).

The Sympathizer is different though. Reading a fiction of one of your countrymen in a foreign language is a pretty weird experience, so weird that I simply couldn’t resist, especially when I was in short supply of good Vietnamese books.

Without spoiling the content, here are a few random comments on the book. It was very enjoyable and turned out to be a good investment.

The story told in the book was inspired by many events that are not too unfamiliar with many Vietnamese. Even the way the war was explained, although totally different from the way it was taught in Vietnam, is in fact, well-informed and thoughtful. Therefore, if you are a self-respected Vietnamese who cares to learn about history more than what being taught in schools, the story wouldn’t be too surprising.

The surprise for me though, was the writing style. Being a debut fiction, the book was remarkable. Readers are left with the feeling that the author puts effort in every single word appeared in the book. He would use bachelor to describe someone in celibacy, or use naïveté instead of naivety, perhaps just to make the narrator sounds a bit more French. In other scenario though, he would use tummy instead of stomach, just to highlight the intimacy of the plot being told. Sentences are often short, but he does not hesitate to write sentences that are one-page long, sometimes just to make a point. I haven’t read too many fictions in English, except a few from Charles Dickens, Jack London and Dan Brown (yea, I read Dan Brown too), so I might be bias, but this kind of dedication makes the book a pleasant read.

Many people praised the book for its satire and sense of humour, but those probably come from the brutal honesty of the unnamed narrator, speaking of whom, is quite a unique character.

The narrator is a hybrid, whose parent is a French priest and a Vietnamese maid. During the war, he found himself being an assistant to a General of the Army of South Vietnam, although he is actually a sleeper agent of the North. Like any other human being, he has his own weaknesses, in this case being his bastard status, which drives him nut every time it is mentioned by other people. Having studied in the US, he consumed the Western values and culture. The whole book is, therefore in some ways, his fight to find his true identity, the true home that he really belongs to. These existentialist questions are echoed by the fact that the book was opened with a quote from Friedrich Nietzsche.

Having such a complicated background, readers could easily expect him to be quite a man they could possibly have a beer with. He would make smart, provoking comments on every single chance, from the name of the USA to that of the USSR, from sex workers to how dating works, from wines to guns, from Saigon to Hollywood, from military to, you bet, politics, philosophy and arts. He could draw, or perhaps more precisely throw, deep philosophical thoughts on seemingly random events and stories. Having seen everything from both sides, perhaps multiple sides, his opinions are well-informed, brutal and amusing at the same time. He would take every chance to reflect and show the differences, or correspondences, between Oriental and Western world, as part of his identity crisis.

I still have couples of chapters left to work on, and therefore haven’t seen everything from the book yet. However, if there is anything to criticize, I would perhaps be concerned about how naive the narrator was when it comes to his loyalty with the North. Just in the same way he cracked the American politics and culture, as well as the war, it would be amazing if he spends a bit more effort to expose the Communist side. That would make the book a fair treatment on many sides involved in this bloody war.

Moreover, although the author was tactically smart about where to let the story speaks for itself and where to make comments, sometimes he made too much of a comment, making some part of the novel a bit heavy and overdone.

Nonetheless, The Sympathizer was a good book. For many Vietnamese who are not yet exposed to the minuscule details of the Vietnam war aftermaths, this is certainly a good read. For others, this is a refreshing book that probably will keep them thinking for a while after finishing it.


Object Detection – recap

Since the rise of Deep learning, I was quite lagged behind in the Object Detection domain. It has been known that the “state-of-the-art” at circa. 2010 was the Deformable part models. After that I have no idea, mostly because I haven’t done anything serious with this (except for HoG, which was used for some hobby-ish projects).

Turns out it advanced quite a bit. We had a reading group this week, where I was educated on recent advances in Object Detection, and this is a recap.

One key problem in Object Detection is how to detect the bounding box around the objects to be detected in the image. Traditionally, people use sliding windows for this. The good news is we are already graduated from that. Recent works use Region proposals approach, where some forms of heuristics are used to propose category-independent regions. Some methods for region proposals are Selective Search, CPMC, etc… The proposed regions are then scored by a classifier to tell whether it is an object or a background patch.

  1. Naturally you would like to use a CNN on top of Region proposals. In case you are hurry (rushing for a paper to get graduated from grad schools), you would just take the pre-trained AlexNet, extract the features from AlexNet and train a simple SVM for classification. No kidding, this is how the R-CNN was built. With some fine-tuning, it got 53.3% mAP on VOC 2012, best result at that time.
  2. But R-CNN is slow. The Region proposals can easily create ~2000 candidates for each image. Then for each of the proposed regions, you would need to run AlexNet to extract the features. So for each image, you will need to run AlexNet ~2000 times. This is quite costly.
    One way to fix that is to make sure the image are fed into the convolutional layers only once, and the information about regions is applied on the feature space (after all the convolutions), not on the image space. This is the original idea of SPPnet and Fast R-CNN (the method is called ROI pooling). Using the VGG architecture, and a multi-task loss function, Fast R-CNN gave better results than R-CNN.
  3. In Fast R-CNN, the information about the regions are somehow hand-coded in the data that is fed into the network. Since we are Deep learners,  we want the network to learn the regions as well. Faster R-CNN does that. By cleverly designing a Region Proposal Network (RPN) that shares the same convolutional layers with the main network (check Fig. 2), the whole network can be trained end-to-end. The RPN module works based on k anchors. With 3 scales and 3 aspect ratios, there are k = 9 anchors, that will be used to “scanned” on the feature maps of the image, and propose the regions. For each region there are 4 numbers encoding the coordinates. Those coordinates will be compared against the groundtruth using a smooth L1 loss function. This loss (called bounding-box regressor), combined with the usual softmax loss for classification, is the multi-task loss function to be optimized.
    Btw, the smooth L1 loss is quite clever. It is the absolute function, smoothed at zero by the square function.
    Using VGG, Faster R-CNN runs at 5fps, approaching real-time object detection.
  4. The whole point in object detection is how to detect the regions. We have seen various approaches, but the approach used in the Single-Shot detector (SSD) is way more “deep-learning-style”. Similar to the Fully Convolutional Nets (FCN), it applies a cascade of convolutional layers, which all being combined into a long 7308-dimensional vectors. At the last layer, the receptive field of each neuron will be a region of the image at some specific location and scale. This, in fact, does the heavy-lifting job of region detection (see Fig. 2). Each unit will be scored whether it is an object or a background patch. The whole thing can be again trained end-to-end in the deep learning style. Finally there will be some non-maximal suppresion step for filtering all the overlapping regions, and only the region with maximal score will be kept.
    SSD runs at 59fps and gives 74.3% mAP.
  5. The Inside-Outside Net is another revelation. After the ROI pooling step (like in Fast R-CNN), they feed the sequence into an four-directional IRNN to extract a context feature, which will then combined with all the convolutional features in a “cascade” style (similar to Single-Shot detector), which will then be evaluated in a multi-task loss function.
    Four-directional IRNN is something quite clever. They have 2 RNN layers. The first RNN layer scan the whole feature maps from left to right, right to left, top to bottom and bottom to top. It does that for every column (when scanning left-right) or every row (when scanning top-bottom) at once, instead of every pixel at once. This is so to facilitate parallelization.
    The second RNN layer is the same but applied differently. The output of the left-to-right scan from the first RNN layer will be fed into the top-to-bottom scan of the second layer. This feels like we are rotating the photo and apply the same thing again, which hopefully gives the context feature the full context around each region in the image.
    The IRNN thing caught my eyes. It is probably the first time I saw IRNN being used. However at the end of the paper, they said it turns out that even when they don’t train the IRNN weights (i.e. keeping the recurrent weights to be the identity matrix forever) gives approximately the same performance. This is quite curious, and I think it would be interesting to try out LSTM/GRU for this architecture.
    Apparently ION is the state-of-the-art with 76.4% mAP on Pascal VOC.

That’s about it. Let me know if I missed any paper.


Truyện ngắn Nguyễn Huy Thiệp

Hồi xưa đi học, phân tích truyện ngắn là thứ mình thấy khó viết nhất. Giờ nhìn lại, thể loại này vẫn khó như vậy, nhưng vì giờ đã quá tuổi viết văn tới hơn chục năm, nên mình sẽ cố review cả vài truyện cùng lúc. Hi vọng là văn chương, sau hơn chục năm, không quá khó ngửi.


Tìm thấy quyển này cách đây vài năm, lúc đang lang thang trong mấy tiệm sách ở SG (đi mua sách tiếng Việt là chuyện mình hay làm nhất mỗi khi về nhà). Vốn ít đọc văn Việt Nam sau 1975, trừ vài quyển của Bảo Ninh, Chu Lai… nên cảm giác chung của mình là Văn thời này khá tẻ nhạt, nếu không viết về chiến tranh thì là văn tuyên truyền. Khi đất nước oằn mình đau khổ, lại còn bị đóng khung giáo điều, thì văn chương khó mà cất cánh được.

Với Nguyễn Huy Thiệp, đây là quyển đầu tiên mình đọc. Mãi tới gần đây mới đọc xong, và nói chung là rất ấn tượng. Lần tới về VN chắc sẽ tìm đọc Tướng về hưu.

Truyện ngắn nói chung là khó viết, và cũng không dễ đọc. Trong quyển này, có những truyện thực chất là tập hợp của vài truyện rất ngắn, nên mình đọc khá chậm.

Nhìn chung về nghệ thuật, mình hơi bối rối vì không biết nên đặt tác giả vào đâu. Có những truyện viết rất chắc tay, thủ pháp điêu luyện, kết cấu chắc chắn; nhưng cũng có những truyện hơi lỏng lẻo, hay thòng vào những câu triết lí đôi chút gượng gạo.

Mặc dù vậy, vẫn có thể nhận ra vài nét lớn trong văn chương Nguyễn Huy Thiệp từ quyển này.


Review sách: Doctor Zhivago

Lâu rồi không viết review tiểu thuyết. Ban đầu định viết kiểu “ngoại giao” (ờ cũng hay nhưng còn nhiều hạn chế v.v….) nhưng nghĩ lại thấy ngoại giao thì cũng không ai đọc, nên sẽ review ở mức hơi “tàn bạo”.

Doctor Zhivago không phải là sách nổi tiếng, ít nhất là mình chưa bao giờ biết tới quyển này, mãi đến cách đây 1-2 năm khi nghe Lara Fabian hát Mademoiselle Zhivago. Âm nhạc của Lara vô cùng lôi cuốn về cảm xúc, và album này bản thân nó cũng có một tầm sâu nhất định (mà có thể xứng đáng một bài review khác được), vì vậy có thể nói mình biết tới Doctor Zhivago là do Lara Fabian.


Vậy Lara Fabian thì liên quan gì tới Doctor Zhivago? Trong một cuộc phỏng vấn, Lara nói rằng khoảng năm 195x, mẹ cô xem phim Doctor Zhivago, và vì quá cảm động nên bà quyết định đặt tên cho cô theo tên của Lara Fyodorovna, nhân vật trong phim. Và đương nhiên, Doctor Zhivago, bản tiểu thuyết, chính là nguyên bản của bộ phim kia. Trong truyện, Lara Fyodorovna yêu nồng cháy và có khoảng thời gian sống chung với bác sĩ Yuri Zhivago, nên có thể gọi cô là mademoiselle Zhivago cũng được. Cái tên Mademoiselle Zhivago từ đó gắn liền với Lara Fabian, và trong một chừng mực nào đó, có thể Lara Fabian cũng tin rằng cái tên này nói lên nhiều điều về cuộc đời cô.

Bản thân tiểu thuyết Doctor Zhivago cũng có số phận đặc biệt. Ra đời vào khoảng 1955, giữa lúc chiến tranh lạnh đang căng thẳng, nhưng tiểu thuyết kể về thân phận những con người nhỏ bé trong khoảng thời gian 1900-1933, thời gian mà nước Nga trải qua những cơn chuyển mình vĩ đại: Thế chiến 1, Cách mạng tháng 10, nội chiến với Bạch vệ và hàng loạt những xung đột khác về giai cấp, lợi ích… Trong bối cảnh đó, sách thể hiện những quan điểm mà chính quyền Xô Viết đương thời không chấp nhận, nên bị cấm phát hành ở Nga. Tuy nhiên, bằng sự “giúp đỡ” của CIA và IM5, tiểu thuyết được tuồn ra nước ngoài, xuất bản và trở thành hiện tượng. CIA và IM5, vì mục đích tuyên truyền chống Xô Viết, ra sức lobby để tác phẩm này đạt giải Nobel văn học năm 1958, và chuyển thể thành phim sau đó. Mặc dù nhà nước Xô Viết không cho tác giả Boris Pasternak (vốn là một nhà thơ) nhận giải Nobel này, nhưng nhiều năm sau giải thưởng vẫn được trao cho hậu duệ của ông.

Một tiểu thuyết có “lí lịch” và bối cảnh như vậy hiển nhiên là đáng đọc?


Convolutional neural net rocks!

Sau khi nhóm của Hinton được Google mua lại thì chỉ vài tháng sau đó Google ứng dụng ngay Convolutional neural nets (CNNs) để hỗ trợ tìm kiếm ảnh trong Google Plus. Người in charge dự án này không ai khác là Alex Krizhevsky và Ilya Sutskever, hai đệ tử của Hinton. Có thể nói trong image recognition thì CNN hiện là state-of-the-art.

Không chỉ vậy, một paper trong ICASSP 2013 chỉ ra là CNNs cũng là state-of-the-art trong Speech Recognition. Paper này cho thấy một CNN được design cẩn thận cho kết quả tốt hơn so với Deep neural network (DNN) với layer-wise pre-training (vốn được trình bày ở đây).Gần đây nhất là paper này trình bày một mớ trick để tiếp tục improve kết quả của CNNs. Một trong những trick được dùng là kết hợp dropout với HF optimizer, điều trước đây chưa từng thấy.

Đáng nói nhất, CNNs có thể xem là một trong những deep architecture cổ xưa nhất của cộng đồng. LeNet-5 của LeCunn đã ra đời cách đây hơn 20 năm, và khi đó đã có ít nhất 5 layers (tùy cách đếm các lớp pooling và normalization). Và bây giờ lại chính là CNNs đạt các kết quả tốt nhất trong image và Speech Recognition.

Moral của câu chuyện có lẽ là việc phát triển của phần cứng máy tính đã thay đổi mọi thứ. Máy tính bây giờ nhanh hơn 20 năm  trước nên người ta có thể huấn luyện CNNs nhiều lớp hơn, trên dataset lớn hơn. Tất nhiên 20 năm “cần cù” lao động của không ít người nghiên cứu trong lĩnh vực này cũng đóng góp một phần đáng kể, điển hình nhất là đủ mọi thể loại trick và tips mà khi tập hợp lại có thể viết thành gần 800 trang sách.

Sự “lấn lướt” của CNNs có thể giải thích là vì CNNs sử dụng cơ chế weight sharing nên một CNN sẽ có ít tham số hơn nhiều so với một DNN có cùng số neurons. Nhờ có weight sharing nên thuật toán optimization có thể tìm local optimum tốt hơn. Đương nhiên đây chỉ là một cách giải thích khả dĩ, rất nhiều tricks trong huấn luyện CNN cũng có thể là lí do cho performance vượt trội của chúng. Hơn nữa có thể điều này còn “gợi ý” rằng năng lực của DNN thực ra vẫn còn lớn, và vấn đề là ta chưa  tìm được cách tốt hơn để huấn luyện chúng mà thôi.

Xác suất: Nhắc lại (I)

Loạt bài về xác suất, bắt đầu bằng bài này, sẽ cố gắng hệ thống lại những điểm chính mà tôi cần thấy phải ghi nhận trong khi đọc quyển All of Statistics của Larry Wasserman. Trong quá trình đọc, những phần kiến thức không có trong sách cũng sẽ được tìm hiểu và trình bày. Ngoài ra cũng sẽ giải các bài tập trong sách (không kì vọng là giải tất cả).

Bài này trích từ chương 1 của sách, hệ thống những kiến thức cơ bản. Phần lớn nội dung trong bài này là quen thuộc đối với những người đã từng học qua 1 khóa xác suất thống kê.