모든 코딩 관련 머신 러닝 주제에 대한 광범위한 읽기 목록을 찾았 습니다 .
보시다시피 사람들은 코딩에 머신 러닝을 적용하려고 시도했지만 모든 방식의 코딩 또는 디버깅을 처리 할 수있는 머신이 아니라 항상 매우 좁은 분야에 있습니다.
이 답변의 나머지 부분은 상대적으로 넓은 범위의 "디버깅"시스템과 이것이 실제로 시도되지 않은 이유 (주제에 대한 나의 연구가 보여주는 한)에 초점을 맞추고 있습니다.
나는 답변의 긴 부분을 수정했습니다. 요약하면 (다음 부분에서 중요합니다) : 현재 기계 학습 방법론, 인간이 배울 수있는 것, 기계도 할 수 있습니다. 우리는 물리적 영역 (CPU 속도, 머신의 크기 등)에 의해서만 제한되며 학습 알고리즘 자체의 적용 가능성은 제한되지 않습니다.
코드 학습에 머신 러닝을 적용하기 위해 지금까지 어떤 연구가 수행 되었습니까? 디버깅은 어떻습니까?
여기서 문제는 불가능한 것이 아니라 매우 복잡한 주제라는 것입니다.
인간은 모든 사람이 동의하는 보편적 인 코딩 표준을 정의하는 데 근접하지 않았습니다. SOLID와 같이 가장 널리 동의 된 원칙조차도 얼마나 깊이 구현 해야하는지에 대한 토론의 원천입니다 . 모든 실질적인 목적을 위해 재정적 또는 시간적 제약이없는 한 SOLID를 완벽하게 준수하는 것은 불가능합니다. 대부분의 개발이 이루어지는 민간 부문에서는 불가능합니다. SOLID는 가이드 라인이며 하드 제한이 아닙니다.
옳고 그름에 대한 객관적인 측정치가 없다면 어떻게 기계에게 긍정적 / 부정적 피드백을 제공하여 학습하게 할 수 있을까요?
기껏해야 많은 사람들이 기계에 대한 자신의 의견을 제시하도록 할 수 있으며 ( "이것은 좋은 / 나쁜 코드입니다") 기계의 결과는 "평균적인 의견"이 될 것입니다. 그러나 반드시 올바른 솔루션 과 같을 필요는 없습니다 . 가능하지만 보장되지는 않습니다.
둘째, 특히 디버깅의 경우 특정 개발자가 특정 유형의 버그 / 실수를 도입하는 경향이 있음을 인식하는 것이 중요합니다. 실수의 특성은 경우에 따라 실수를 도입 한 개발자의 영향을받을 수 있습니다.
예를 들어, 직장에서 다른 사람의 코드를 버그 수정하는 일에 자주 관여하기 때문에 각 개발자가 어떤 종류의 실수를 저지르는지를 기대합니다. 특정 문제가 발생하면 dev A는 구성 파일 업데이트를 잊어 버릴 수 있지만 dev B는 종종 잘못된 LINQ 쿼리를 작성합니다. 개발자를 기반으로 구성 파일이나 LINQ를 먼저 살펴볼 수 있습니다.
마찬가지로, 저는 현재 여러 회사에서 컨설턴트로 근무했으며 특정 유형의 회사에 버그 유형이 바이어스 될 수 있음을 분명히 알 수 있습니다. 결정적으로 지적 할 수있는 것은 어렵고 빠른 규칙은 아니지만 명확한 추세가 있습니다.
기계가 이것을 배울 수 있습니까? 개발자 A가 구성을 망칠 가능성이 높고 개발자 B가 LINQ 쿼리를 망칠 가능성이 높다는 것을 알 수 있습니까? 물론 가능합니다. 내가 전에 말했듯이, 인간이 배울 수있는 것, 기계도 할 수있는 것.
그러나 기계에게 모든 가능성을 가르쳤다는 것을 어떻게 알 수 있습니까? 어떻게 (전역이 아닌) 작은 데이터 세트를 제공하고 그것이 전체 버그의 스펙트럼을 나타내는 지 어떻게 알 수 있습니까? 아니면 보편적으로 사용할 수있는 디버거를 만드는 대신 특정 개발자 / 회사를 돕기 위해 특정 디버거를 만들겠습니까?
머신 러닝 디버거를 요청하는 것은 머신 러닝 Sherlock Holmes를 요청하는 것과 같습니다. 아마도 하나를 만드는 것이 불가능하지는 않지만, 종종 주관적 평가에 따라 디버거 / 셜록이되는 핵심 추론은 매우 다양하고 다양한 지식 / 가능한 결함에 대해 다루고 있습니다.
빠르게 입증 할 수있는 정확한 / 부정확 한 결과가 없기 때문에 기계를 쉽게 가르치고 좋은 진전을 보이고 있는지 확인하기가 어렵습니다.