<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          在做算法工程師的道路上,你掌握了什么概念或技術使你感覺自我提升突飛猛進?

          共 8430字,需瀏覽 17分鐘

           ·

          2022-03-10 12:07

          點擊上方視學算法”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達


          作者丨金瀛若愚、桔了個仔、DLing(已授權)
          來源丨h(huán)ttps://www.zhihu.com/question/436874654
          編輯丨極市平臺
          禁止二次轉載,轉載須經(jīng)原作授權

          導讀

          ?

          算法工程師作為近幾年非常火熱的崗位,近幾年校招也開放了大量的算法崗位。作為想要在這個崗位上不斷前進不斷深入的人,有哪些tips或者經(jīng)驗可以傳授給這條賽道上的各位呢?本文匯總了知乎上三個優(yōu)質的回答,希望能給各位一點啟發(fā)。


          #?回答一

          作者:金瀛若愚

          來源鏈接:https://www.zhihu.com/question/436874654/answer/1808192248

          在科研中訓練到的思維方式,是我最寶貴的成長。

          一. 反饋的閉環(huán)

          在一個研究任務中,我首先嘗試了方法A,沒搞定,于是改用方法B。組里大哥問:為什么改方法B。我說A沒效果,或許B能work。大哥繼續(xù)問:為什么A不work。我說或許A不適合這個問題?大哥說:當你有一個嘗試,你一定要知道它為什么work以及為什么不work。每次不work了你就換另一個方法,那另一個方法就能work嗎?這不是科研,是賭博,是瞎試。你只有知道為什么一個方法有效或不有效,何時有效何時無效,你才能增進對這個問題的理解,然后基于此提出有價值的策略。

          我的思考是,既然做了一件事,就一定要得到反饋,要搞清楚哪里做得好哪里不好,這樣這個嘗試所投入的時間才是有效的。不然就是在碰運氣,如同做題不對答案,如同訓練模型不算loss不做backprop。

          二. 把煉丹技術推廣到生活中

          機器學習的很多技術都與現(xiàn)實世界的概念相互呼應。

          在深度學習里,模型掉入局部最優(yōu),就是生活中的內卷,就是在狹窄的賽道上追求極致。擺脫內卷就是跳出局部尋求全局最優(yōu)的過程。破局之道是嘗試新事物,或增加訓練數(shù)據(jù)。

          與人交流、觀察和學習他人可以避免閉門造車。與他人交流就是深度學習里的增加訓練數(shù)據(jù)。進入好的學校好的公司就是提高訓練樣本的質量:在label準確時,學得輕松。

          前面講的“構建閉環(huán)”,就是關注backprop時的梯度。你不能攢了特別多事情后再去反思或尋求反饋,這個反饋鏈太長,要么梯度消失,要么梯度爆炸,無法有效學習。類似對loss的求導過程:你必須清晰地看到因果鏈條,才能做到從結果倒推原因,進而優(yōu)化自己。

          已經(jīng)做得很好的事情沒必要重復。此時應該挑戰(zhàn)新的項目,保持自己在學習的狀態(tài)。這就是hard data mining. 遇到壞人后就認為全人類沒救了,是overfitting。對應在機器學習里,在unbalanced dataset上學習,要想到用weighted loss。

          挫折易使人變得復雜、內心沖突多。如果能用簡單的形態(tài)存在,我們或許應警惕過分復雜。機器學習里,解決小問題硬上大模型是一種粗暴且沒技術含量的辦法。用不必要大的模型是對探求事物本質的逃避,科研如此,生活亦然。你以為模型練成了,其實它學的是shortcut,因此有泛化能力差的問題:variance大,不robust(內心不穩(wěn))。同時,模型太復雜就不容易理解,遇到bug不容易診斷病因(內心不易平穩(wěn)和愉悅)。但避免復雜不是要當巨嬰,不是抗拒成長。當任務復雜、訓練數(shù)據(jù)也大的時候,就必須要上大模型。核心是模型復雜度(心智復雜度)要與任務復雜度和數(shù)據(jù)量(閱歷)匹配,才是健康的。

          三. 交流,交流,再交流

          組里的女神姐姐教導我:“做research要多和人交流,多去聽別人的paper reading,也把你讀到的論文和想法講給別人聽。因為在討論的過程里你會意識到未曾發(fā)現(xiàn)的問題。嘗試給人講明白的過程里,你的思路也會越發(fā)清晰。” 道理我都懂,每次我頭點得像敲鼓一樣,但也沒堅持做到。

          為什么做不到?大概是心理包袱,總想著搞出一個牛X閃閃的東西后再展示給別人,不然覺得丟臉。或者總有一種再試一下就能搞定的錯覺。這種錯覺和我炒股票的風格如出一轍。

          直到后來我看到越來越多平淡無奇的項目都逆襲了,我理解到,事物的發(fā)展都有必然的過程,要尊重其發(fā)展規(guī)律,不要總想直接搞個大新聞。高效的科研要主動的尋求身邊的資源,爭取讓良師益友把時間花在自己身上,如果自己不主動爭取,再照顧你的人也不能像親媽一樣耳提面命,他們畢竟不好逼迫你。具體的,應該多把自己讀懂的論文講給別人,在你給他人創(chuàng)造價值的同時,你也使他們幫助你這件事更容易了:他們只有懂了你懂的,才能給你最有效的建議,你才能借用他們的頭腦思考。

          我發(fā)現(xiàn)當我積極主動之后,身邊的人都默默支持起我來。稻盛和夫說:“心不喚物,物不至”。

          四. 「焦慮動力」模型

          勤奮上進、自我驅動、有行動力,本質是內心動力充沛的精神狀態(tài)。動力不足時,我們懶惰、拖延、自控力差。用向量分解的思維模型,我們可以看清「動力」的本質。

          Willpower=動力; Anxiety=焦慮;Pressure=壓力;Passion=熱情
          • 動力的分量是 1.焦慮/壓力 和 2.熱情。動力是二者的合力

          帶著上面這句話,我們可以舉出奮斗者的兩種極端狀況。一種由焦慮主導,被績效和deadline催促,常處于不安和壓力之中。希望獲得他人的認可,如果有了過失,會感到煎熬;另一種是熱情主導的。專注、投入,不易為外界干擾和誘惑所動。在做事的過程中,能收獲成就感和喜悅,認為工作與個人追求比較重合。

          警惕“動力”過分依賴“焦慮和壓力”的狀況。這個動力來源并不持久和可靠。隨著年齡增加,體力和心力會下降,且隨著閱歷增加,閾值變高,很多事會不再覺得重要。那時就會失去動力。

          分量之間存在代償。盲人的耳朵往往很敏銳。如果動力過多依賴焦慮和壓力,則留意到熱情和樂趣就更難。可能并不是你不熱愛,你只是太緊張了而已。

          五. 獨立思考

          我對獨立思考這件事體會最深的就是決定要不要讀PhD時。拿到UW的錄取后,因為微軟組里就很多博士、教授,我自然就去請教他們問要不要讀博,畢竟五年是一筆不小的投入。當時有一部分人說值得一讀,另一些人說專心做事業(yè)可能有更大回報。

          有趣的是,當我簽下offer后,所有的人,不論之前給了什么建議,都由衷恭喜和認可我的決定,并和我暢想畢業(yè)后Dr. Jin走向人生(996)巔峰的畫面。

          那之前他們的建議是真心的嗎?當然是真心的。簽offer后的認可也是真心的。于是我理解到,很多事情,做與不做都能找出道理。他人給建議時,也會考慮到我們的情緒,讓我們不論怎樣選擇都有臺階下。因此,我們要保持獨立思考,要對自己的決定負全責。

          建議的推導邏輯比結論重要。他人建議的正確用法是讓自己看問題多個角度,減少信息差,而不是直接取其結論,讓他人代為做選擇。

          六. 把工作當做一個二階優(yōu)化過程

          不管title是算法工程師還是應用科學家,產(chǎn)出都是代碼及其體現(xiàn)的知識產(chǎn)權。我們工作的過程就是優(yōu)化這個代碼及知識產(chǎn)權的過程。但這太basic。

          我們不僅要優(yōu)化產(chǎn)品,也要優(yōu)化產(chǎn)出產(chǎn)品的過程:一階優(yōu)化,是優(yōu)化代碼質量。二階的優(yōu)化,是優(yōu)化工作過程,這個工作過程是代碼質量更上一層的原因,是原因的原因,是二階導數(shù)。

          類比一下:為了走得遠,你可以優(yōu)化速度(路程的原因是速度),更進一步你可以優(yōu)化加速度(速度的原因是加速度)。不斷向上溯源,能解決根本問題、通用問題。

          回到優(yōu)化工作流程上,我們不斷問自己:在我工作的過程中,有哪些是重復工作?有哪些可以更高效的完成?有哪些可以被拎出來整理出可以復用的,于是后面就不再需要花心思重做或者檢查其bug?經(jīng)過一兩年我攢出了一套自己的代碼庫,很多被重復使用的部分(如用matplotlib畫各種圖,各種數(shù)據(jù)預處理)就都可以直接copy paste。這就形成了復利效應——時間越長,這些整理出來的代碼片段就創(chuàng)造越高的價值。

          七. 學習些銷售意識

          銷售是一門大學問,值得廣大猿類學習。

          • 像設計產(chǎn)品外包裝一樣設計履歷

          一個暢銷的產(chǎn)品必須有個特色,這個特色與其他競品形成了差異化競爭,才能有自己的市場,賣上個好價格。比如始祖鳥這個牌子的衣服顏值很一般,但它的防水面料好,就拿下了戶外市場。一個中庸的什么都不差也什么都不突出的產(chǎn)品就很難被你記住。同時,產(chǎn)品的優(yōu)秀比不上品牌的優(yōu)秀,如果產(chǎn)品的價值凝練成了品牌,那這個品牌本身就值高價。比如我們會為了logo付費。

          我們的職業(yè)發(fā)展,說得現(xiàn)實些,也是希望自己在市場上有個好價格。為此,我們不需樣樣精通,但必須有一個具有代表性的,能拿得出手的技能。比如,我就是要和所有人不同,去學遠古技術匯編語言。那只要市場出現(xiàn)了對這個技能的需求,你就能有極大的定價權。當我們深耕一個領域很久,又寫了很多優(yōu)質的博客,那你的名字就成為了品牌,可以幫助公司招賢納士,等等。

          我的老板兼導師也曾說:你做paper要想怎樣把你的paper賣出去。你要站在消費者角度想,他們?yōu)槭裁匆〞r間去讀你的文章?你的論文有沒有創(chuàng)意,能給他們帶來什么價值?寫作語言,圖表美觀程度,就是賣相。這和銷售很像。

          我們的簡歷就是商品的成分表——在決定選擇什么項目時,不妨想想這會在簡歷里留下一行什么樣的記錄,會不會幫你抬高自己的職業(yè)價值。

          • 用產(chǎn)品思維規(guī)劃項目

          科研項目的立項過程和產(chǎn)品策劃非常像。第一步都是要做survey,了解清楚目前技術有哪些分支,是什么歷史契機促成了某個技術的出現(xiàn)(比如有了新的數(shù)據(jù)集),不同的技術優(yōu)點缺點在哪(A更準確,B速度更快,C不需要很多訓練數(shù)據(jù),等等)。然后了解這個任務的定義,metric(關鍵指標)是什么,也就是搞清楚游戲規(guī)則,知道大家在比些什么,頭部的玩家都是誰等等。不了解清楚,后面的一切都是錯的。

          導師們經(jīng)常問我的一個問題就是“這個task的upper bound是什么”。我說我知道state-of-the-art是什么,還要知道upper bound嗎?導師說你在開始一個嘗試前,要知道還有多少空間留給你去做。如果SOTA(目前最好的)已經(jīng)比較接近upper bound了,你就很難再往上去攻了,你可能找個別的任務更有成就感。你跳進一個賽道前,要對其發(fā)展到了什么階段有些概念。

          八. 關于忙碌

          在上面各種催人上進的內容之后,我再來分享一個故事來結尾。

          一次公司的一位高層前輩見面,臨走前我問他能不能給我個過來人的建議。

          我以為他會給我講一些勤奮工作的態(tài)度、人生規(guī)劃的經(jīng)驗、或者給我打打雞血這種內容。

          而前輩只是指了指辦公室書架上的一排沒拆封的樂高跟我說,我給你一個建議,就是年輕時多花點時間在自己的嗜好上。我年輕時喜歡樂高,但因為一直忙于工作,并沒有花很多時間在我這個小小的嗜好上。現(xiàn)在我時間多了,但對樂高也不再有那種熱情了,現(xiàn)在只把他們擺起來,包裝都沒拆。所以年輕的時候,你可以花點時間在自己的愛好上。不能只有忙碌的工作。

          很片面,歡迎指正。


          #?回答二

          作者:桔了個仔

          來源鏈接:https://www.zhihu.com/question/436874654/answer/1846044111

          很片面,歡迎指正。
          謝邀。這道題我猶豫了很久,三個月前就放草稿箱里了,一直沒答的原因是,感覺這些年好像沒有什么瞬間讓我感覺自己水平突飛猛進,感覺這些年的進步都是慢慢進步的,好像沒有「突飛猛進」的時候。昨天帶我入行的同事離職了,在部門的送別儀式上,我們回憶起我第一天入職時我有么的「小白」,后來怎么獨擋一面。于是我在想,如果要總結一個讓我的水平提升的關鍵「概念」或者「技術」,那會是什么。
          于是我回顧這些年的技術歷程。說實話,在我開始搞算法后,我日均代碼量遠遠低于我之前做游戲時,甚至有的時候,幾天都不寫一行代碼。當然,我并不能代表所有算法工程師,我雖然也是做數(shù)據(jù)科學工作,但我需要和客戶保持聯(lián)系,理解需求。但無可否認,代碼量少的這些日子,我反而做的事情更靠譜,讓我更有成就感。
          我于是總結出一句話:
          解決問題不要于拘泥于技術。
          當然,僅僅一句話的話,大家可能看得一頭霧水,我展開說說吧。
          不要拘泥于技術分為三層:

          1. 不要執(zhí)著于使用最新的技術。

          有的人想走技術專家的路線,那非常好。每天看看arxiv,看看最新的SOTA,那是一個好習慣。但不要太頻繁的變更技術方案。你那種想把產(chǎn)品做到極致的思維,我能理解,我也有過,但你真正做產(chǎn)品落地了,會發(fā)現(xiàn),產(chǎn)品是一個系統(tǒng),你的技術方案變更可能會對其他模塊造成影響。
          舉個例子,我們的模型是XGBoost,不算很復雜吧?由于我們給多個客戶部署過系統(tǒng),我們知道在什么樣的硬件條件下運行時間是多少。例如在每日1萬條數(shù)據(jù)的情況下,我們用AWS的t2.xlarge實例,運行時間是1~2小時,符合客戶要求。但如果你看到最新的paper提出了一個新模型,決定要采用的話,除了你的技術方案可行性要得到驗證,你的技術方案對系統(tǒng)運行時間的影響也要重新評估。如果你的方案確實效果更好,但服務器成本高出幾倍,我們該如何說服客戶?這都是是一環(huán)扣一環(huán)的,實際可能遇到的情況可能比我說的要復雜得多。這,就是系統(tǒng)的世界。
          統(tǒng)計建模并不是為了獲得完美的預測能力,而是用最小的必要的模型來實現(xiàn)最大的預測能力。
          更何況,很多情況下,使用更復雜的方案未必是最合適的方案。我之前寫過一個回答,講了哪些深度學習效果不如傳統(tǒng)方法。
          有哪些深度學習效果不如傳統(tǒng)方法的經(jīng)典案例?:https://www.zhihu.com/question/451498156/answer/1802577845
          在這個回答里,我引用了那個著名的「電風扇吹香皂盒」的段子。
          某大企業(yè)引進了一條香皂包裝生產(chǎn)線,結果發(fā)現(xiàn)這條生產(chǎn)線有個缺陷:常常會有盒子里沒裝入香皂。總不能把空盒子賣給顧客啊,他們只得請了一個學自動化的博士后設計一個方案來分揀空的香皂盒。博士后拉起了一個十幾人的科研攻關小組,綜合采用了機械、微電子、自動化、X射線探測等技術,花了90萬,成功解決了問題。每當生產(chǎn)線上有空香皂盒通過,兩旁的探測器會檢測到,并且驅動一只機械手把空皂盒推走。中國南方有個鄉(xiāng)鎮(zhèn)企業(yè)也買了同樣的生產(chǎn)線,老板發(fā)現(xiàn)這個問題后大為發(fā)火,找了個小工來說“你他媽給老子把這個搞定,不然你給老子爬走。”小工很快想出了辦法他花了190塊錢在生產(chǎn)線旁邊放了一臺大功率電風扇猛吹,于是空皂盒都被吹走了。
          但這里需要說明的是,不執(zhí)著于使用最新技術,不代表不關注最新技術。有的時候,公司的需求是一回事,但我們的技術進步又是一回事,如果我們不care最新技術,那么當我們跳槽時,就會很吃虧。

          2. 不要只用技術

          技術不是職業(yè)生涯的全部,尤其是對于做商業(yè)產(chǎn)品的算法工程師。作為算法工程師,尤其是做商業(yè)產(chǎn)品的,其實有很多時候,技術并不能解決所有問題;有的時候,技術雖然能解決,但是中策,甚至下策,而上策不一定需要使用技術。代替技術的方法有下面四種,一種比一種境界高。
          用金錢代替技術。?例如你的產(chǎn)品上線了,發(fā)現(xiàn)在線上模型訓練總是不成功,發(fā)現(xiàn)是服務器性能不夠,那么你第一件事是優(yōu)化你的算法還是花錢擴充服務器?如果對于商業(yè)價值很高的項目,宕機一天損失可能遠遠超過服務器開支,這時候,你第一件事買服務器,優(yōu)化的工作放到日后。
          用溝通代替技術。?很多人經(jīng)常方案進展到一半推到重來的情況(設計師尤甚)。對于算法工程師,如果溝通不充分就直接開工,那么很容易做無用功。舉個大家都能理解的例子,例如有個銀行讓你開發(fā)個算法識別哪些客戶可能逾期,但由于銀行數(shù)據(jù)敏感,不能直接給你,只給了你data schema讓你自己模擬數(shù)據(jù),你說沒問題,回去花了一周寫了個模型,準確率(accuracy)是90%,很不錯,結果在客戶那一上線,準確率99%,你更高興了,但很快你發(fā)現(xiàn),客戶的數(shù)據(jù)label 0:1的比例是1:99,你準確率99%和瞎猜沒區(qū)別。事實上,如果你和客戶溝通得當,早點理解清楚數(shù)據(jù)情況,你就不會采用accuracy這個評價指標。
          用管理代替技術。?這是區(qū)別高階工程師和普通工程師的重要能力。一個項目,如果管理得當,那么可以讓一線開發(fā)人員輕松點的同時完成更多工作。
          • 有的工作是另一個工作的基礎,完成A再完成B的總時間可能小于先完成B再完成A。
          • 工作是永遠做不完的,即使都是技術工作,也有價值不同。好的技術管理人員應該讓大家先做價值高的。
          用眼光代替技術。?做到這個級別,基本就是CTO級別了,充分了解現(xiàn)有技術優(yōu)缺點,知道什么地方應該投入新技術,什么地方應該采用舊技術,什么地方甚至不需要技術。但畢竟我還沒做到這層,這里就沒什么經(jīng)驗可以分享了。
          更何況,對于算法工程師,除了技術能力,還有很多能力是必須的,如下圖,這些能力,組成了算法工程師的「落地能力」
          圖來自我之前寫的一個被知乎日報收錄了的回答。這里就不再重復其內容了。
          算法工程師的落地能力具體指的是什么?:https://www.zhihu.com/question/304695682/answer/1720475610

          3.不要只關注自己領域的技術

          拋開非技術的能力,來集中講講技術。對于技術能力,你是否以為你關注最新論文,會調參,就完事了。沒這么簡單。我每次講算法工程師工作內容時,都會貼這張圖
          中間那個小小的幾乎都快看不見的黑塊,你放大圖片,會發(fā)現(xiàn)里面寫著ML Code,這就是「算法」的部分。當然,別被這個圖嚇到,這不一定全是你的工作,這里是一個團隊的任務,這個團隊可能是兩人的團隊,也可能是幾十人的團隊,但可以肯定的是,無論你在哪個公司,一個算法工程師都不太可能只做純「算法」,不要忘了「工程師」三個字。
          我作為一個算法工程師,你以為我只寫python,偶爾加點scala?不,你可能想不到,我還寫vba。我們客戶是銀行,他們有內部的模型驗證團隊,我們需要根據(jù)他們提供的模板來生成模型性能報表,而且這個報表模板還不能往外網(wǎng)傳,那怎么辦?只能用VBA寫個Excel宏腳本自動生成報表唄唄。畢竟他們提供的可編程環(huán)境就只剩excel了,至于python什么的,由于沒聯(lián)網(wǎng),pip install啥都不行。
          所以我建議,作為算法工程師,多學習下周邊技術,不要僅僅只會調參,看論文。周邊技術是指能為你快速實現(xiàn)驗證與部署的技術,并非所有技術都要學習。你作為一個算法工程師,學習linux,可以方便你部署模型;學習spark,能方便你快速處理大數(shù)據(jù);這樣你有什么新的idea都可以快速驗證而不用再求數(shù)據(jù)工程師幫你反復做ETL。
          但,吾生也有涯,而知也無涯。以有涯隨無涯,殆已!?但你作為算法工程師,去學習安卓app開發(fā),似乎就有點不必要了,除非你確定用得上,或者你是你們公司唯一的程序員(這種情況建議跳槽)。
          這就是我在自我提升路上的一點小總結。



          #?回答三

          作者:DLing

          來源鏈接:https://www.zhihu.com/question/436874654/answer/1744174731

          突飛猛進不敢當,但是從事深度學習圖像算法這幾年來,卻是也有一些感慨。


          1. 數(shù)據(jù)放在第一位,成也數(shù)據(jù),敗也數(shù)據(jù)。深刻認識數(shù)據(jù)的重要性,把數(shù)據(jù)集維護好,數(shù)據(jù)量夠了,再談后面的模型優(yōu)化,數(shù)據(jù)都不干凈,用再好的模型,也不會出好的結果。


          2. 啟動開發(fā)前,多問問自己有沒有了解這個業(yè)務,目前定的方案還有沒有盲點沒有考慮到,畢竟啟動開發(fā)需要準備各種數(shù)據(jù)集,耗時長且需要一定的人員和經(jīng)濟投入,如果開發(fā)過程中或者測試階段發(fā)現(xiàn)方案不合適,這時候推倒重來的話,就DT了。


          3. 算法工程師并不只是調包俠,煉丹師,而是一個綜合要求很高的崗位。要訓的了模型;寫的了邏輯;優(yōu)化的了算法性能,時刻把運行速度,準確率,召回率,顯存利用率,顯存占用,cpu利用率,內存占用,并發(fā)路數(shù)等等記在心里;還得深刻了解業(yè)務,目前的方案合不合適?產(chǎn)品定的指標,給的需求有沒有坑?完成這些需求,要選什么樣的硬件最劃算,可不可以少幾個模型,畢竟看數(shù)據(jù)也很費眼;


          4. 多實驗,多記錄,多對比,勤討論,勤匯報,勤迭代。這一行多少還是有點玄學的,很多問題沒有很強的理論可以支撐,靠經(jīng)驗的地方很多,這個模型效果好,很多情況也不是推導出來的,而是實驗出來的,有時候想破腦袋,也沒有動手起幾個模型效果來的快。平時多跟同事同行討論討論,搞不好費了你好幾根頭發(fā)的問題,就被別人解決過呢?


          5. 多看行業(yè)頂會論文,多追追大牛的博客,思路打開了,落地也就簡單很多。


          以上是我從事算法行業(yè)幾年來的一點點體會,不是具體到看了某一篇論文,學了某一個框架,熟悉了某一個語言給自己帶來的提升。但就我而言,這些對崗位認知的更新,做事套路的更新對自己的提升有時候要強于某一項具體的技術。今天把這些體會分享出來,希望能符合題主預期。


          點個在看 paper不斷!

          瀏覽 14
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久大胆人体免费视频 | 成人黄色视频网站免费观看 | 国产精品一级a毛一级a | 婷婷精品在线观看 | 久久久影视四色777 |