Skip to main content
QUICK REVIEW

[논문 리뷰] Code Smells in Machine Learning Systems

Jiri Gesi, Siqi Liu|arXiv (Cornell University)|2022. 03. 02.
Software Engineering Research인용 수 12
한 줄 요약

이 연구는 59개의 오픈소스 딥러닝(DL) 프로젝트에서 426개의 유지를 분석한 결과, 딥러닝 시스템 전용으로 특화된 다섯 가지 새로운 코드 스멜을 규명하고 검증한다. 혼합형 정성적·정량적 방법을 통해 이러한 딥러닝 전용 코드 스멜—예를 들어, 뒤섞인 모델 아키텍처와 데이터 기반 설정—이 널리 퍼져 있으며 유지보수성에 상당한 영향을 미친다는 점을 입증한다. 개발자들은 이러한 스멜을 빈도는 높지 않지만 고도로 영향을 미친다고 평가한다.

ABSTRACT

As Deep learning (DL) systems continuously evolve and grow, assuring their quality becomes an important yet challenging task. Compared to non-DL systems, DL systems have more complex team compositions and heavier data dependency. These inherent characteristics would potentially cause DL systems to be more vulnerable to bugs and, in the long run, to maintenance issues. Code smells are empirically tested as efficient indicators of non-DL systems. Therefore, we took a step forward into identifying code smells, and understanding their impact on maintenance in this comprehensive study. This is the first study on investigating code smells in the context of DL software systems, which helps researchers and practitioners to get a first look at what kind of maintenance modification made and what code smells developers have been dealing with. Our paper has three major contributions. First, we comprehensively investigated the maintenance modifications that have been made by DL developers via studying the evolution of DL systems, and we identified nine frequently occurred maintenance-related modification categories in DL systems. Second, we summarized five code smells in DL systems. Third, we validated the prevalence, and the impact of our newly identified code smells through a mixture of qualitative and quantitative analysis. We found that our newly identified code smells are prevalent and impactful on the maintenance of DL systems from the developer's perspective.

연구 동기 및 목표

  • 딥러닝 시스템에서 유지보수와 관련된 코드 수정의 성격과 빈도를 이해하기 위해.
  • 일반 소프트웨어와는 구별되는 딥러닝 시스템 전용으로 특화된 코드 스멜을 식별하고 특성화하기 위해.
  • 딥러닝 전문가들의 실증적 분석을 통해 이러한 코드 스멜의 보편성과 인식된 영향력을 검증하기 위해.
  • 딥러닝 분야의 코드 품질 향상, 도구 통합, 소프트웨어 공학 교육 향상을 위한 실질적 통찰을 제공하기 위해.

제안 방법

  • PythonChangeMiner와 GitcProc를 사용하여 59개의 오픈소스 딥러닝 프로젝트에서 426개의 유지보수 관련 코드 수정을 수집하고, 패tern 마이닝 및 버그 수정 필터링을 수행하였다.
  • 수정 패턴의 반복성과 유사성을 파악하기 위해 일부 수정 사례에 대해 수작업 분석을 수행하여 9개의 유지보수 관련 카테고리로 분류하였다.
  • 다수의 연구자가 독립적으로 라벨링 및 분류를 수행한 정성적 코드 분석을 통해 상당한 간이 평가자 간 일致도를 확보하였으며, 캄파(κ) 값은 0.61~0.83였다.
  • 식별된 패턴을 바탕으로 딥러닝 시스템 전용으로 특화된 다섯 가지 새로운 코드 스멜—예를 들어, 뒤섞인 모델 아키텍처와 데이터 기반 설정—으로 매핑하였다.
  • 112명의 딥러닝 전문가를 대상으로 설문 조사를 수행하여 이러한 코드 스멜의 영향력을 검증하였으며, 언어 편향을 줄이기 위해 번역된 버전도 활용하였다.
  • 코드 수정 빈도의 정량적 분석과 정성적 개발자 피드백을 융합하여 코드 스멜의 보편성과 인식된 심각도를 동시에 평가하였다.

실험 결과

연구 질문

  • RQ1딥러닝 시스템에서 가장 빈번하게 수행되는 유지보수 수정 유형은 무엇인가?
  • RQ2딥러닝 시스템 전용으로 특화된 코드 스멜의 특성은 무엇이며, 일반 소프트웨어의 코드 스멜과 어떻게 다를까?
  • RQ3이러한 새로 규명된 딥러닝 전용 코드 스멜은 실질적인 딥러닝 개발자 관점에서 얼마나 보편적이고 영향력이 깊은가?
  • RQ4가장 빈번하게 발생하는 코드 스멜이 실제 딥러닝 개발 현장에서 가장 영향력 있는 것들과 얼마나 일치하는가?

주요 결과

  • 딥러닝 시스템에서 9개의 구체적인 유지보수 수정 카테고리가 규명되었으며, 모델 아키텍처 리팩터링, 데이터 파이프라인 변경, 설정 관리 등이 포함된다.
  • 딥러닝 시스템 전용으로 특화된 다섯 가지 새로운 코드 스멜이 규명되었으며, 뒤섞인 모델 아키텍처, 데이터 기반 설정, 하드코딩된 하이퍼파라미터, 모델-데이터 결합, 일관되지 않은 모델 버전 관리가 포함된다.
  • 가장 빈번하게 발생하는 코드 스멜이 반드시 가장 영향력 있는 것은 아니었으며, 개발자들은 뒤섞인 모델 아키텍처와 데이터 기반 설정을 유지보수성에 가장 해로운 것으로 평가했다.
  • 112명의 딥러닝 전문가를 대상으로 한 설문 조사 결과, 이러한 코드 스멜이 널리 인식되며 코드 이해 가능성과 장기적 유지보수성에 심각한 영향을 미친다는 점이 확인되었다.
  • 이 연구는 코드 스멜이 59개의 오픈소스 프로젝트 전반에 걸쳐 널리 퍼져 있음을 발견하였으며, 이는 개발 워크플로우에서 주의를 기울여야 할 체계적인 문제임을 시사한다.
  • 결과적으로, 딥러닝 개발 워크플로우에 코드 스멜 탐지 기능을 통합할 경우 유지보수성이 향상될 수 있으며, 특히 비간섭적이고 맥락 인식 기능을 갖춘 도구일 경우 효과가 클 것으로 보인다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.