Software 1.0과 Software 2.0은 일종의 프로그래밍의 기술의 방법이다. Software 2.0이 나온 이후로 딥러닝은 엄청난 속도로 발전했다. 그렇다면 Software 1.0과 Software의 2.0이란 무엇이고 그 차이는 무엇일까? 먼저, Software 1.0의 정의는 다음과 같다.
The “classical stack” of Software 1.0 is what we’re all familiar with — it is written in languages such as Python, C++, etc. It consists of explicit instructions to the computer written by a programmer. By writing each line of code, the programmer identifies a specific point in program space with some desirable behavior."
"Software 2.0", Andrej Karpathy
Software 1.0은 개발자에 의해서 작성된 코드에 따라서 특정한 행동을 취하도록 만들어진 것으로, 어떤 연산을 수행할지 사람이 고민하여 정하는 것이다. 처음의 컴퓨터를 활용한 기술은 이 방법으로 나름 효과적인 성능을 보였다. 하지만 사람의 개입으로 편향될 가능성이 높으며, 사람의 수와 시간의 제약으로 복잡한 프로그램은 개발하기 어려웠다. 이로 인하여, 대응하기 어려운 케이스가 정말 많았고, 이에 대한 해결책으로 나온 것이 Software 2.0이다.
Software 2.0은 사람의 개입 없이, 뉴럴 넷에 의해서 연산이 정의된다. 그리고 데이터와 최적화 방법을 통해서 최적의 프로그램을 찾는다. 초기에는 구조를 설계하는 데 사람의 개입이 필요했지만, 최근에 사용하는 SOTA 모델의 경우, 단순히 사람이 만든 모델의 weight를 조절하며 feature를 잘 뽑아내기 위해서 학습하는 것이 아니라 더욱 최적화하기 위해서 모델의 구조마저도 스스로 조절하여 학습한다. 그만큼 사람의 개입이 점점 줄고 있으며, 그에 따라서 많은 데이터를 필요로 하지만, 성능이 지속해서 향상되고 있다. 이러한 방법은 분야를 가리지 않고 다양한 분야에서 성과를 내고 있으며, 전체 시스템에서의 Software 2.0의 비중이 커지는 추세이다.
'Study > CS' 카테고리의 다른 글
객체지향 프로그래밍 (2) | 2022.02.25 |
---|---|
[자료구조] 대표적인 자료구조 정리 (1) | 2022.02.09 |
[자료구조] 자료구조? 왜 그렇게 중요할까 (1) | 2022.02.08 |