題:
當基準(最新)發表的結果聲稱性能好於我無法複製時,如何進行?
Monii_80
2019-10-14 19:21:27 UTC
view on stackexchange narkive permalink

我是研究生,要完成我的學位課程,我需要構建出優於現有方法的方法。我遇到的一個問題是,兩篇論文的報導方式(我的意思是超過20%)比我重新實現的方式報導的方式更多。這可能是由於兩個原因:

  1. 在實現過程中我錯過了一些東西。我一直在告訴自己。幾個月以來,我嘗試了所有可能的組合和可能的路徑。其中一種方法很簡單。不過,我無法達到他們聲稱的性能。

    我聯繫了相應的作者,沒有人回答。因此,我嘗試與其他作者聯繫。

    第一篇論文的作者回复並將代碼發送給我。他/她告訴我將所有細節“保密”。好吧,事實證明他們沒有使用他們在論文中聲稱的數據,當然他們的結果與我的重新實現不同。而且我的實現是正確的。

    第二篇論文的作者也回答說,他們沒有發送代碼給我,因為他們說這很容易實現,但是確認我所做的仍然正確,但我做不到了解為什麼會有這種差異。

    這兩篇論文都發表在<2影響因子期刊上。他們的Web服務器無法正常工作。

  2. 他們不誠實。

  3. ol>

    現在,我被困住了,我的方法確實表現出色我對他們的方法的重新實現,而不是他們所聲稱的。第一篇論文我什麼也沒說,因為它是“機密的”。第二篇論文我只能確認我大部分時間都正確實現了他們的方法(基於與作者的聊天)

    我知道我可能無法發表這部分工作,因為誰會相信剛剛起步的年輕科學家?但不確定委員會將如何相信我。我能說什麼或做什麼?請幫助我

發布不同的結果是真實科學的核心。畢竟,如果您完全一樣,那麼沒人會學到新的東西。
您指的是“績效”的度量標準,它的定義可能是造成20%差異的根源嗎?作為軟件開發人員,我習慣於(在運行時)僅通過很小但很重要的優化調整來獲得這種性能提升,這些調整非常依賴於平台。
-1
我不能真的對此表示懷疑。但這仍然證明了取得進展的舊理論是錯誤的。就像我們弄清楚牛頓的力/加速度思想在接近c時確實不足。我想說的是,不要害怕不同意。
在假設最壞的情況(學術不端行為)之前,您可以考慮到可能存在導致20%的收益的細微差異(優化?更好的數據結構?)。我曾經給學生寫過一些代碼,然後,我自己編碼了。對於更複雜的情況,我的代碼快1000倍。不僅是語言,而且是我編寫代碼的方式也提高了速度。當然,如果他們的代碼和原始數據不能對您這麼快地運行,則可能出了點問題。同樣,這可能是一個誠實的錯誤,而不是不當行為。報告您的結果作為旁注。
第三種選擇:他們犯了一個誠實的錯誤。
正如其他人所說,繼續進行發布。不錯的事情是聯繫作者-您做到了。(您甚至可以參考“個人交流”。)-因此,如果您的方法更好,請繼續進行發布,請確保在論文中保持禮貌並在應歸功的地方給予好評。
除了@mvds提到的特定實現中的調整之外,性能的20%差異很容易來自硬件,操作系統,編譯器或開發/測試設置的任何其他部分的差異。
““事實證明,他們沒有使用他們在論文中聲明的數據”。我們能否獲得更多有關此方面的詳細信息(或更強調該問題的特定部分)?到目前為止,我所看到的答案似乎都假定這些差異可能是由於誠實的錯誤造成的,但是,如果它們在一個數據集上發布結果並聲稱它們是針對另一個數據集的,則需要向編輯器報告。
@mvds我的意思是預測準確性,而不是運行時間。我完全同意運行時間和優化。
@Ray他們表示他們使用了bla bla的基準數據集,但並未使用(基於作者發送給我的信息)。在某個時候,有人弄亂了數據(刪除了困難的示例,然後添加了其他示例),而向我發送代碼的作者絕對不知道。他/她告訴我,主管提供了數據(!)
運行計時性能的任何有意義的比較都將要求一個受控的平台同時運行代碼樣本和受控的數據集。
您應該使用聲稱可改善20%的相同數據運行代碼。如果得到相同的結果(或幾乎相同的結果),則有充分的理由斷定該方法對數據的變化不穩健。
@Monii_80好的,確實是另一回事,也是我問的原因;-)仍然有一些平台相關的因素,例如浮點類型的大小和異常的處理,也許還有其他取整規則,具體取決於語言的選擇,但要考慮到對於完全相同的算法有20%的差異,我不知道...這會很麻煩。
@Monii_80還要詳細說明:如果這是一個涉及很多步驟的算法,則可能只是中間結果存儲在數據庫中或在具有有限字段寬度的進程之間傳輸。也可能:中間值的意外舍入(例如,無意地轉換為整數)。我已經看到了這樣的事情在預測算法中產生了真正的差異,起初並沒有清晰可見,但是最終結果沒有加在一起的原因。這樣的問題很容易導致最終結果不確定20%。也很難追踪!
六 答案:
Ian Sudbery
2019-10-14 21:39:35 UTC
view on stackexchange narkive permalink

您絕對沒有理由發表一篇論文,其中說:“我們將我們的方法與方法X和Y進行了比較。由於代碼對於X和Y不可用,因此我們盡可能地重新實現了這些方法。這些重新實現的代碼可在補充文件A和B中找到。我們的新方法以X%的方式執行X和Y的重新實現,但是,應注意,不可能重現X的報告結果。和Y。“

想要了解的人將不得不查看您的重新實現,並自行決定是否認為您正確地重新實現了。

高級與它無關,它是透明的,世界將判斷他們是否相信您或不會發布其代碼的人。

這麼多。我們需要鼓勵科學中的生殖嘗試。如果OP犯了一個錯誤,那麼希望有人會發現它並(友好地)指出它。
老實說,我也很想寫一個簡短的,略微被動的聲明,以致無法從作者那裡提取原始實現。這種事情應該比目前更多的皺眉。
在理想的世界裡,這。但是,請與您的主管/同事/ ...核對一下,以查明野獸的性質:如果其中一個或多個相對被低估,但在您所擅長的小領域具有實際實力的鬥氣人,這可以不好(因為他們和他們的朋友將同時審查您的論文和申請,並拒絕)。如果他們是報復性的卡通惡棍,與遭到期刊編輯等的拒絕相比,您將獲得更多的同情。如果他們是科學家,他們會更加尊重您(因為事實,而不是原則)。
確實,“使您自己的研究完全可重複”並提交。確保將您要發表的期刊的信息告知您是否要將有關作品的作者排除在裁判之外。儘管它們現在似乎有所幫助,但它們可能會影響審核過程。當然,他們可能不會,但是最好還是保持安全,並爭取成為真正的第三方聯盟。同行評審不是一個完美的系統,但是它是最不完美的,始終是完美的並且無論如何都是主導。您的社區將珍惜您的貢獻。
我擔心的是,該論文由於缺乏“新穎性”而被拒絕。
@thermomagneticcondensedboson您的*方法*似乎很新奇,即使性能僅與舊方法一樣好,這仍然可以算作
根據問題,OP應注意原始論文中的數據未用於結果-因此結果存在差異的問題通過發布其數據和結果,其他人可以確認他的方法正確。
儘管解決以前未解決的問題將使出版物的影響更大,但如果可以證明您有解決已解決問題的更好方法,則仍然可以發布該出版物。我的建議是使您的方法易於他人使用。具有適用於各種機器類型的正確且可靠的安裝過程,正確的接口(正確記錄的邏輯API或正確的CLI / GUI)以及經過深思熟慮的文檔,快速入門指南和教程。然後,您將成為*有用*解決方案的唯一提供者。
我會做得比這更進一步:*您的方法不必勝過任何方法,它與之前嘗試的方法*有所不同。(在合理範圍內)。如果您有一種新穎的方法比公認的方法好20%,那將是非常有價值的,因為人們會使用您的方法。但是,如果您的新穎方法表現不佳30%,這也很有用,因為其他在同一領域進行研究的人會知道避免使用您的方法!不要害怕“證明自己是負面的”-是的,它並不是那麼有魅力,但是一個路標說“這裡有一個洞”仍然對其他人有幫助。
理論上,@IanKemp是有價值的,或者應該有價值;但實際上在許多領域,例如機器學習確實可以使您的論文在競爭場所被接受的可能性大大降低。
Buffy
2019-10-14 19:51:53 UTC
view on stackexchange narkive permalink

人們可能是不誠實的。他們還會犯誠實的錯誤並發表不良科學。不要以為你的成績差。而且不要以為博士委員會不會相信你。如果他們有能力在沒有較早結果的情況下判斷您,那麼他們應該有能力了解您的工作。

但是,我有兩個建議。首先是逐步了解您與顧問和/或另一位最有能力了解您的工作的教員所做的事情。實際上,您可能會獲得最佳結果。如果可以在那裡獲得支持,則更大的委員會應該沒有問題。我認為您不需要隱藏與委員會成員的來信。可能有必要解釋為什麼您不能相信另一篇論文的報導結果。我不認為“機密”在這裡確實適用。

但是另一個要難一些。查看您是否可以準確找出另一組未能將其方法與結果匹配的地方。如果您能做到這一點,那麼您將為自己的工作提供更有力的證據。

您在這裡提到的證據對我(局外人)而言似乎很強大,表明另一篇論文有問題。如果有任何原因,沒有理由不矛盾。

還有另一種情況:他們發現了一些被他們解釋為“數字錯誤”的東西,並將其駁回了-回到傳統的結果。他們不是數值方法的專家,並且誠實地認為他們所看到的只是計算中的故障。事實證明他們的模型還不夠好,“小故障”暗示了這一點,並且有人在他們的工作基礎上擴展了模型。他們對結果不太滿意,但是由於不幸的結果平滑導致發現而受到讚譽。發生在1995年:)
cbeleites unhappy with SX
2019-10-15 16:05:20 UTC
view on stackexchange narkive permalink

要完成我的學位課程,我需要構建優於現有方法的方法

不,那是不正確的。您需要進行一些適當的科學工作並提高知識水平,而這並不取決於您的發現要指向什麼方向。

當然,如果您的研究成果更簡單,更愉快,實施效果更好。但是,論文的實際科學部分是科學地研究舊方法,然後得出結論是否更好(以及在哪種情況下)。

您遇到的困難是證明與文學的差異並不是由於您的能力不足或缺乏辛勤工作(=>您應得到一個不好的成績),而是由於“性質”不如上一篇論文所預期的那樣。

您可以並且應該報告的是

  • 您無法複製論文1 + 2中的發現,
  • 重要的是,通過與論文2作者的私下交流以及與您再次從論文1作者那裡收到的(機密)代碼進行比較,您的實施已被確認為正確的
  • 如果

    好吧,事實證明他們沒有使用他們在論文中聲明的數據,當然還有他們的結果與我的重新實現不同。

    意味著您獲得了他們實際使用的數據集,並獲得了相同的結果,那麼您還可以報告相關數據集的相同結果
    如果沒有,可能可以問1 + 2號論文的作者,他們是否將運行您發送給他們的數據集並提供其實現的結果,以便您可以將其與您的結果進行比較。然後,您可以報告(希望)在其他數據集上獲得了相同的結果,並感謝那些論文的作者運行您的數據。

最後兩點應該清楚地表明,差異並不是由於您的實現錯誤所致-這對您的論文來說很重要。

作為個人說明,我獲得了最高分我的Diplom(≈Master)論文(除其他發現外)發現我正在使用的軟件實現未達到預期的效果。我能夠指出該錯誤的合理和可能的原因(可能是剩餘的調試“功能”),這對您來說要困難得多,因為您無權訪問其軟件的運行實例。測試(=研究)以形成並確認或消除關於其行為的假設。


作為@Buffy已經解釋的有關發表論文中誠實錯誤的可能性的補充:
作為科學家我們傾向於在已知的邊緣工作。這也意味著我們本來就冒著很高的風險,即(尚未)知道/尚未意識到我們所做工作的重要條件和局限性。
因此,我們也冒著相對較高的風險,我們認為暫時性的概括可能會變成現實。畢竟不是那麼普遍。或我們可能是完全錯誤的,並在以後(或根本沒有意識到)才意識到這一點。我相信人類很難完全意識到我們得出的結論的局限性-可能/可能是因為我們的大腦“過硬地”過度適應了。 (這也使我們在避免過度擬合(例如構建的機器學習模型)方面處於不利的起始位置)

由此得出的結論是,我們在閱讀已發表的論文時也要小心:我們需要保持論文有錯,包含誠實錯誤或不像乍一看那樣直接適用於我們的任務的可能性。


在實施過程中我錯過了一些東西。

當我還從文獻(相關但不同的領域)實現參考方法時,曾經經歷過類似的事情。事實證明,在數據預處理中存在不同的默認值會導致差異-但只有在我有一個聰明的想法嘗試省略預處理步驟之後-儘管模型沒有此步驟在物理上並沒有多大意義,但本文沒有提及任何此類步驟(本領域的許多論文也都沒有使用該步驟,因為出於物理原因,它被認為是必要的。)。


  1. 他們並不誠實。
  2. ol>

雖然這當然是可能的,但我已經看到了足夠的誠實錯誤,可以使用 Hanlon剃須刀(我第一次遇到是Murphy的剃須刀。 ):並且不要承擔欺詐或不當行為,除非有非常強烈的跡象。


證明優越性由於舊文件的限制,這種情況不可能

例如如果他們基於少量案例報告驗證結果,則這些結果的不確定性可能非常大,因此不能排除該方法比後來真正改進的方法要好。無法以統計上合理的方式展示其優勢。

不過,舊論文的這種缺點並不限制科學內容或工作的進步。

太糟糕了,我只能給一個+1。發布負面結果(即證明某事不起作用)非常重要,因為它可以避免其他科學家走上一條無路可走的道路。
引述[Hazon剃須刀](https://en.wikipedia.org/wiki/Hanlon%27s_razor)的相關性和價值:_從不歸因於惡意,而愚蠢足以解釋這種惡意_
@XavierStuvw您是說漢隆的剃須刀嗎?
@slebetman謝謝,我按照鏈接目標進行操作,但是當我意識到電線交叉時,進行編輯為時已晚。該註釋使我們有可能添加一個推論或確定一個前提:_惡意和愚蠢同樣令人討厭_
Lewian
2019-10-14 19:59:11 UTC
view on stackexchange narkive permalink

您可以說您使用了競爭方法的實現來獲得結果,並且無法複製已發布的結果。使您的代碼可用,以便人們檢查。

似乎其他論文的作者沒有發布他們的代碼,所以沒有人可以說您應該使用它。

Jericho Jones
2019-10-14 19:48:20 UTC
view on stackexchange narkive permalink

首先,您應該諮詢您的主管。紙張代碼通常匆忙而未完成,在一台機器上運行的代碼可能由於多種原因而無法在另一台機器上運行。最合理的方法是讓您的主管知道您實現了這兩種方法,並與原始作者進行了交流(僅提及非機密事物/說某些事情屬於機密/向作者徵求與您的主管討論實施的許可),但您卻未達到要求的性能。作為高級學術能力,他們更有能力決定對部門/領域/研究團隊的政治進行處理,勢必會從論文的作者那裡得到更快,更詳盡的答复,並在出現任何問題時處理潛在的後果。過程。我不建議您自己去解決此問題,並且如果您對項目中的這一重要內容有疑問,我當然會尋求他們的建議,他們會理解的。

“向作者徵求與您的主管討論實施的許可”“機密”是指應發布您的代碼。
我認為@jericho-jones答案是最合適的答案。 另外,以本課程為例。使用良好的編碼習慣。將您的工作檢入源代碼存儲庫。標記您的工作代碼,以便您輕鬆撤消更改。使所有內容都可重現,包括處理任何原始數據。使用文件許可權將原始數據設為只讀,拒絕數據庫更新/插入/刪除語句等。確保您的代碼每天或每隔一天生成一次。在簽入源代碼存儲庫之前,請確保所做的更改可以構建並通過所有測試,並重現已知結果。
allo
2019-10-17 13:43:16 UTC
view on stackexchange narkive permalink

除了其他答案,您還應該考慮發布重新實現。然後,任何審閱者都可以檢查他們是否認為您的結果合理,或者是否發現您的重新實施存在缺陷。

在第一種情況下,正確地說“我們實施了論文X,但無法再現所聲稱的效率”,第二種情況是審閱者發現的缺陷可能會幫助您改善您的實施,所以您可以獲得類似的結果。

大多數審閱者不會調試您的代碼,但是您盡了最大的努力使任何人都可以驗證您對效率較低的主張,至少您的論文盡可能誠實

如果該算法很有趣,則發布一個開放源代碼版本可能會吸引一些用戶,這也指出了您的代碼存在問題(或做出了改進)。但是請確保不要太接近機密代碼,因為原始作者可能會聲稱侵犯了版權。

您可以與其他人一起使用無塵室反向工程,或者至少自己使用給定的方法進行反向工程。代碼來寫下紙張中缺少的部分,然後從文檔而不是代碼中重新實現。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...