矽谷資深演算法大師:帶你學深度學習推薦系統(附8頁彩頁)
推薦系統對電商的重要性好比大樓的地基,在既有的商品品項上創造更大的利潤一直是演算法工程師深度挖掘的目標。深度學習早就跳出CV和NLP的範疇,進而分析購買行為。本書不但深入介紹了DNN,更將序列資料中最重要的Embedding包含進來,進而介紹各大巨頭的推薦系統,包括了特徵工程、注意力機制等,也說明了Youtube、Facebook、阿里巴巴等推薦系統的原理介紹,全書還使用了Spark MLlib來分析幾個案例,讓平凡百姓也能一窺矽谷等級實作的精彩內容。✤ 本書特色本書希望討論的是推薦系統相關的「經典的」或「前端的」技術內容。其中注重討論的是深度學習在推薦系統業界的應用。需要明確的是,本書不是一本機器學習或深度學習的入門書,雖然書中會穿插機器學習基礎知識的介紹,但絕大多數內容建立在讀者有一定的機器學習基礎上;本書也不是一本純理論書籍,而是一本從工程師的實際經驗角度出發,介紹深度學習在推薦系統領域的應用方法,以及推薦系統相關的業界前端知識的技術書。✤ 本書讀者群本書的目標讀者可分為兩種:一種是網際網路企業相關方向,特別是推薦、廣告、搜尋領域的從業者。希望這些同行能夠透過學習本書熟悉深度學習推薦系統的發展脈絡,釐清每個關鍵模型和技術的細節,進而在工作中應用甚至改進這些技術點。另一種是有一定機器學習基礎,希望進入推薦系統領域的同好、在校學生。本書儘量用平實的語言,從細節出發,介紹推薦系統技術的相關原理和應用方法,幫助讀者從零開始建置前端、實用的推薦系統知識系統。
依賴注入:原理、實作與設計模式
【名家名著】 21 想要讓程式更具彈性、更容易測試、更接近clean code, 你需要降低元件之間的耦合度, 依賴注入將是你強而有力的工具! 它是組合取代繼承的重要實踐! 要降低軟體元件之間的緊耦合程度,最好的方法便是引入「依賴注入(DI,Dependency Injection)」技術。在鬆耦合架構下,不用再自己手動指定資料庫連線時要使用的驅動,而是透過一個可被替換的第三方元件進行。本書將說明如何在ASP.NET Core這類應用程式框架下,利用DI架構幫助你管理軟體中的變更與複雜度議題。 《依賴注入-原理、實作、與設計模式》的前身是來自於暢銷經典書籍《Dependency Injection in .NET》一書的重編與增量版本。本書會從基礎開始從頭介紹何謂DI架構,並且在說明打造具備鬆耦合與完善架構的應用程式上,會遇到哪些設計模式、應避免的反模式、並且對此提出可供參考的範例內容。這些以C#程式語言寫成的範例,具備完善的說明註解並搭配圖表,可以幫助讀者在以現代物件導向程式語言以及支援DI架構的容器函式庫進行開發時,順暢無誤地遵循實務原則與設計模式。 ❖教你如何將既有程式碼,重構為鬆耦合架構 ❖以標準物件導向程式語言觀點來實作的DI技巧 ❖與標準.NET框架整合的教學內容 ❖將舊版範例內容重新編寫,以.NET Core框架來示範DI架構 本書適合那些對物件導向程式語言已有一定熟悉的讀者。 Odd-e Taiwan 敏捷技術教練 陳仕傑(91)專文推薦
高品質軟體文件|持續分享技術與知識
有效製作軟體文件 “真希望這本書20年前就出版,可以省下我很多時間” -Woody Zuill, Agile Guide與Mob Programming先驅 運用領域驅動設計(Domain-Driven Design)方法建立文件檔,於軟體開發生命週期中創造最大價值 軟體文件可以生動、動態,並在實質上幫助你創建出更好的軟體。本書為開發者、架構設計師和軟體專業工作者而寫,展示如何在設計與開發過程中建立隨之演進的文件。 透過模式解說、清晰圖示與具體範例,引領您應用良好的製作工具與自動化功能,在最低成本下大幅提升文件的價值。不論任何領域、語言或技術,您都無需在運行軟體和詳盡的高品質文件之間做取捨,讓魚與熊掌都能兼得。 ‧擷取與增強知識,讓它發揮實質效用 ‧自動建立隨著知識變化演進的文件與圖表 ‧使用開發工具重構文件 ‧利用文件改善軟體設計 ‧在原有與新環境中引入有效文件
Scratch 3.0程式設計好好玩:初學者感到安心的步驟式教學,培養邏輯思維,算數、遊戲、畫圖、配樂全都辦得
寫程式就像玩樂高一樣簡單又好玩! 扎根程式教育,從這一本開始 英國權威DK出版社開發的Scratch3.0全方位教學遊戲書 步驟最詳細、解說最到位 老師教案必備、親子共學最佳教材,自學者也能享受寫程式的樂趣! 更多應用、無限想像!Scratch 3.0介面功能全新升級! 麻省理工學院媒體實驗室開發,最多初學者使用的程式語言, 跟著本書的引導學會Scratch,也就掌握了銜接所有程式語言的基礎! 108課綱將「資訊科技」列為核心素養,並將「程式設計」列入進階的科技領域中。覺得程式設計聽起來很難?不知道要怎麼學?美國麻省理工學院媒體實驗室開發的Scratch是全球最多人使用的免費程式教學軟體,只要拖拉、組裝,就可以設計出好玩的遊戲,也是學童最容易上手的程式語言。 本書的每個專案都會分解成清楚的步驟,跟著圖解說明,就能熟悉Scratch 3.0程式語法,接著一步一步學會如何靈活運用工具完成故事、動畫、美術、音樂等專案,還可以加入自己的創意,玩出獨一無二的程式作品,打開程式學習的大門! =本書特色= ★新課綱「科技領域」最佳先修課程 ★最新!採用Scratch 3.0──由麻省理工學院媒體實驗室開發,最多初學者使用的程式語言升級版 ★ 導入PBL (專案式學習) 來探索興趣,引導教學並鼓勵創作延伸。創作後能與全世界分享作品,增加自學與共學樂趣! ★從「程式語言」到「專案管理」,培養程式邏輯思維、思考力、想像創造力 ★英國權威DK出版社最新發行,最詳細的步驟教學、在動手操作中成就達成 =各界推薦= 周子鈺 史汀實驗室研發總監 胡信忠 宜蘭縣二城國小老師、宜蘭縣科技領域兼任輔導員 許庭嘉 國立臺灣師範大學科技應用與人力資源發展學系教授 黃鐘瑩 兒童程式自由教育者 蔡淑玲 樂學科技創辦人 本書非常適合培養創造力,學生有自然而然整合及活用跨科能力的機會,在完成每個小專案的過程中,同時發掘控制電腦運作的邏輯,成為一個具備基本運算思維素養的孩子。──許庭嘉& 國立臺灣師範大學科技應用與人力資源發展學系教授 本書從Scratch入門的基礎概念開始,逐步引導到進階結構化程式,學習各種有趣好玩的程式設計專案,是一本非常值得推薦適合初學者安心學習的好書。──胡信忠 宜蘭縣二城國小老師、宜蘭縣科技領域兼任輔導員 &
管理技術債
減少軟體開發摩擦 “這是一本非常智慧和實用的書,展示作者在品質體系方面擁有豐富的實務經驗。讓你認識技術負債是什麼、不是什麼、如何管理,以及如何以負責任的方式償還。我希望在剛開始職業生涯時就讀到這本書。作者根據多年的經驗提出了無數的案例研究與可應用於專案的見解。” —Grady Booch,IBM同事 管理技術負債以提升軟體品質與生產力 隨著軟體系統的成熟,早期受限於預算或時程壓力下所做的設計或決策,逐漸阻礙後續的系統發展和創新,這種現象稱為技術負債。三位專家在管理技術負債方面提出了實用的解決方案,提供整合、務實的原則和做法,軟體開發者可依靠這些原則和做法來控制軟體系統中的技術負債。 作者以實際案例解釋影響軟體密集型系統(software-intensive systems)的技術負債形式,根本原因與影響。他們引入經過驗證的方法來識別和評估技術負債的具體來源、限制新債務,並隨著時間「償還」負債。他們說明如何將管理技術負債作為組織中的核心軟體工程實踐。 ‧發現技術負債如何影響管理、品質、生產力、士氣,以及如何處理 ‧找出負債原因,包括業務目標、原始碼、架構、測試、基礎設施 ‧分析技術負債的代價以安排優先行動 ‧為每一項技術負債選擇正確的解決方案:消滅、降低或緩和 ‧整合減少新負債的軟體工程實踐 《管理技術債》是軟體從業人員加速現有系統創新或讓新系統容易維護與進化的絕佳參考資源。
寫給所有人的運算思維入門:5堂基礎課程+演算法練習,邊做邊學,建構邏輯思考、培養程式設計(全圖解)
從解決問題到整合運用,從「想」到「做」,所有人都能鍛鍊的思維能力 ――――運算思維 &Computational Thinking―――― 沒有演算法,電鍋煮不出好吃的白飯? 有了運算思維,機器人也能煮咖哩飯! 沒有演算法,必需品不必要、特惠品不划算? 有了運算思維,聰明購物CP值爆表! 沒有演算法,假新聞、小道八卦滿天飛? 有了運算思維,人人都能判定消息真假! █ 不只是程式設計,最親切易懂的思維練習! ★視覺化圖解思維流程,將抽象的課題化為簡明的步驟! ★詳解了解事物本質的思考方式,循序漸進拆解問題! ★以生活化的實例建立關鍵概念,不需要懂程式語言也能學習! ★從煮咖哩飯到小道八卦,專家親授演算法該怎麼想、怎麼做! █ 邏輯思考的第一步,培養運算思維! ● 源自於計算機科學,但遠不只是程式設計 ● 資訊教育浪潮的核心,一切思考訓練的成功關鍵 ● 把看來困難的課題,重新闡釋成我們知道怎麼解決的方法 ● 利用啟發式推理尋求解答,數理領域、人文學科一體適用 █ 55道練習題step by step完全解析,人人都能提升的基本學力! 世界上沒有正確答案的問題多如牛毛,面對沒有正解的難題時,以演算法的步驟來進行邏輯推理,選擇合適的陳述方式,分解任務,決定完成目標的一連串動作,就是運算思維的訓練。 本書詳解將思考視覺化的方法,從猜拳到購物,從讓機器人行走到經典的囚徒困境和渡河問題,提供不同類型的大量範例圖解,化繁為簡「抽象化」,拆解問題「具體化」,使頭腦習慣運算思維的法則。 此外,書中介紹初階的人工智慧理論,以及如何將處理步驟統整為適合程式設計的內容。學習程式設計就像學會開車的技術,建立運算思維則是具備閱讀地圖的能力。要抵達目的地,就算不會開車,只要讀懂地圖就能找到方法到達。 學習運算思維不是為了成為電腦專家或計算機科學家,所有人都應該積極培養並運用這項基本技能,打造因應問題的有效策略、邏輯步驟和優化流程!
現代演算法|原來理解演算法並不難
重複的事交給演算法處理,你可以空出時間去做更有價值的事 “本書廣泛地探討演算法概念,避免標準的「趕潮流」做法。它介紹了多數演算法入門書籍都不會談到的投票系統與文字壓縮,讓初學者在還不會走之前就會跑了!” —Steven Skiena,著名的石溪大學電腦科學系教授;《The Algorithm Design Manual》作者 “演算法是電腦的核心思想。Panos Louridas寫了一本很棒的書,帶領你認識所有主要的演算法。他的寫法相當簡明與易懂,不會把你當成專家。會以具體範例而不是以抽象方式介紹演算法,具備電腦知識的人都可以閱讀這本書。本書也可以當成介紹性教科書。” —Noson S. Yanofsky,布魯克林學院電腦與資訊科學系教授,《The Outer Limits of Reason: What Science, Mathematics, and Logic Cannot Tell Us》作者 “演算法已經主宰現今的世界了。Louridas使用真實世界的應用來介紹演算法的宏觀概念與細節。如果你想要知道各種領域如何運用演算法,這本書是必備的指南。 —Mung Chiang, 普林斯頓大學Arthur LeGrand Doty教授;《The Power of Networks》的共同作者 演算法是為了不做事而做的事,它是由執行工作的指令組成,那些工作通常是枯燥且重複的。電腦演算法藉由簡單的建構元素來讓機器可以辨識與產生語音、轉換文字、分類與歸納文件、描述影像與預測天氣。你只要用幾行現代腳本語言程式,就可以瞬間完成原本要耗時好幾個小時的工作。這本書用真實世界的問題來介紹處理它們的演算法。本書使用虛擬碼來展示演算法,讓你可以輕鬆地用電腦語言來實作它們。 本書介紹的演算法既簡單且易懂,不會讓讀者倍感挫折,也不會折辱你的智慧。讀者必須具備基本的數學知識並大致瞭解電腦如何運作;書中會解釋所有其他必要的概念。本書會在介紹虛擬碼、基本術語與資料結構的背景之後,用其餘的章節來介紹壓縮、加密、圖、搜尋與排序、雜湊化、分類、字串與機會。每一章都會提出真正的問題,再展示處理它們的演算法。本書會用範例來說明廣大的應用,包括用最短路徑來解決文章分段問題、在選舉系統中使用最強路徑、用雜湊來辨識歌曲、投票強度Monte Carlo法,與機器學習領域的熵(entropy)。從主修經濟學到應用科學的學生都可以使用 《Real-World Algorithms》。主修電腦科學的讀者可以先閱讀這本書,再研讀更具技術性的文獻。
AI及機器學習的經脈:演算法新解
《AI及機器學習的經脈:演算法新解》同時用函數式方法和傳統方法介紹主要的基本演算法和資料結構,資料結構部分包括二叉樹、紅黑樹、AVL樹、Trie、Patricia、尾碼樹、B樹、二叉堆、二項式堆、斐波那契堆、Pairing堆、佇列、序列等;基本演算法部分包括各種排序演算法、序列搜索演算法,字串匹配演算法(KMP等),深度優先、廣度有限搜索演算法、貪心演算法以及動態規劃。
演算法
認識程式設計的基礎寫給初學者的「演算法」入門書詳細介紹變數&陣列,以及資料結構,收錄程式設計上必備的『各種演算法』!發明於20世紀的電腦以飛躍般的姿態發展,在21世紀的現在,已被應用於手機、電視、數位相機、遊戲機等生活用品之中。甚至自動驗票機、ATM終端機的控制、顧客管理、財務管理等,各種企業的業務也都仰賴電腦輔助。這些電腦都是由程式進行運作。本書將以電腦運作為前提,介紹編寫出絕佳程式前應該要學習的「演算法」相關基礎。期待讀者可以藉由本書,理解電腦程式設計的特有思考模式。本書特色深入淺出的解說,適合普羅大眾閱讀搭配彩色圖解與生動比喻,專業知識輕鬆學從「何謂演算法、何謂程式」為起始,到排序及檢索、測量演算法效率、其它演算法……均有詳細解說,內容涵蓋基礎到專業知識。