Skip to main content

Command Palette

Search for a command to run...

AI Software Quality Lecture Note: From Core Concepts to Development Process

Updated
17 min read
AI Software Quality Lecture Note: From Core Concepts to Development Process
H
Hi there, I'm a full time software engineering student, and full time mum based in Brisbane, QLD, Australia. Korean is my native language and English is my second, but I love learning software in English. My posts are a mix of both Korean and English, so there's something for everyone! All my posts come straight from my lecture notes, so follow along my study journey with me <3

1️⃣Overview of AI Software
2️⃣Quality Issues and Characteristics of AI Software
3️⃣ AI Software Development and Quality


1️⃣Overview of AI Software

AI 소프트웨어 개요(AI Software Overview)

AI 소프트웨어(AI Software)는 인공지능 기술을 활용해 만들어지는 소프트웨어 제품이다. 일반적인 소프트웨어가 정해진 명령과 규칙에 따라 동작한다면, AI 소프트웨어는 데이터를 바탕으로 판단하거나 예측하고, 사람의 지능적인 작업을 모방하도록 만들어진다.

AI 소프트웨어에는 기계학습(Machine Learning), 자연어 처리(Natural Language Processing), 컴퓨터 비전(Computer Vision), 빅데이터(Big Data) 등의 기술이 복합적으로 적용될 수 있다. 이를 통해 사용자의 질문에 답변하거나, 주변 환경을 인식하고, 상황에 맞게 스스로 판단하여 행동할 수 있다.

예를 들어 챗봇(Chatbot)이나 GPT와 같은 대화형 인공지능 모델(Conversational AI Model)은 사람이 대화하는 것처럼 사용자의 요청에 자연스럽게 응답한다. 또한 서빙 로봇이나 물류 로봇은 주변 상황을 인식하고, 멈추거나 이동해야 하는 상황을 판단하여 서비스를 제공한다.

자율주행 자동차(Autonomous Vehicle)도 AI 소프트웨어가 활용되는 대표적인 사례이다. 자율주행 자동차는 도로, 사람, 차량, 장애물 등 다양한 환경을 인식하고, 운전자가 판단하듯이 안전한 주행을 수행하도록 설계된다.

따라서 AI 소프트웨어는 사람이 수행하는 판단, 예측, 인식, 대화와 같은 지능적인 작업을 모방하거나, 스스로 판단하여 작업을 수행할 수 있도록 돕는 소프트웨어라고 정리할 수 있다.


기존 소프트웨어와 AI 소프트웨어의 차이(Difference Between Traditional Software and AI Software)

기존 소프트웨어(Traditional Software)는 정해진 요구사항(Requirements)을 만족하도록 개발된다. 사용자가 제시한 기능이나 조건에 맞게 동작하면 품질이 좋은 소프트웨어라고 판단할 수 있다. 즉, 요구사항이 비교적 명확하게 정의되어 있고, 그 요구사항대로 동작하는지가 중요한 기준이 된다.

반면 AI 소프트웨어(AI Software)는 모든 요구사항을 명확하게 정의하기 어렵다는 특징이 있다. 사람도 모든 상황을 미리 경험하지 못하지만, 과거의 경험을 바탕으로 새로운 상황을 판단한다. AI 소프트웨어도 이와 비슷하게 제한된 데이터(Data)를 바탕으로 학습하고, 새로운 상황이 주어졌을 때 학습한 내용을 기반으로 판단하거나 예측한다.

따라서 AI 소프트웨어는 기존 소프트웨어처럼 모든 동작을 미리 정해두기보다는, 학습 데이터(Training Data)를 기반으로 상황에 맞는 결과를 만들어내는 방식으로 동작한다. 이 점이 기존 소프트웨어와 AI 소프트웨어의 가장 큰 차이이다.


AI 소프트웨어의 동작 방식(How AI Software Works)

AI 소프트웨어(AI Software)는 데이터(Data)를 기반으로 학습하고, 학습한 내용을 바탕으로 새로운 상황을 예측(Prediction)하거나 판단(Decision)한다. 입력된 데이터에서 규칙적인 패턴(Pattern)을 찾고, 이를 통해 학습된 모델(Model)을 만든다.

예를 들어 동물을 식별하는 AI는 개와 고양이 이미지 데이터를 학습한다. 이때 각 이미지에는 “개(Dog)” 또는 “고양이(Cat)”처럼 정답을 표시한 레이블(Label)이 붙어 있을 수 있다. AI는 이러한 학습 데이터(Training Data)를 신경망(Neural Network)이나 알고리즘(Algorithm)을 통해 학습하고, 개와 고양이를 구분하는 모델을 만든다.

이후 새로운 이미지 데이터가 들어오면, 학습된 모델은 해당 이미지가 개에 가까운지 고양이에 가까운지 예측한다. 다만 AI의 판단은 항상 100% 정확한 것이 아니라, 학습한 데이터와 패턴을 바탕으로 가장 가능성이 높은 결과를 예측하는 것이다.

따라서 AI 소프트웨어의 품질을 확보하기 위해서는 충분한 양의 데이터뿐만 아니라, 데이터가 정확하고 적절하게 구성되어 있는지도 중요하다. 잘못된 데이터나 부족한 데이터로 학습하면 AI 모델의 예측 결과도 부정확해질 수 있다.


AI 소프트웨어에서 발생할 수 있는 문제점(Problems in AI Software)

AI 소프트웨어(AI Software)는 데이터(Data)를 기반으로 학습하고 예측하기 때문에, 품질 문제가 발생할 수 있다. 대표적인 문제는 크게 세 가지로 정리할 수 있다.

첫째, 훈련 데이터(Training Data)의 품질이 낮거나 편향(Bias)될 수 있다. 데이터가 부족하거나 잘못되어 있으면 AI 모델(Model)도 잘못된 패턴을 학습하게 된다. 또한 특정 집단이나 상황에 치우친 데이터로 학습하면 실제 결과도 편향될 수 있다.

둘째, 훈련 과정(Training Process)에서 에포크(Epoch) 수나 파라미터(Parameter) 값이 적절하지 않을 수 있다. 학습이 너무 부족하면 모델이 충분히 패턴을 배우지 못하고, 반대로 너무 과도하게 학습하면 훈련 데이터에만 지나치게 맞춰지는 문제가 생길 수 있다.

셋째, 훈련 데이터와 실제 데이터(Real-world Data) 사이에 차이가 생길 수 있다. AI 모델은 학습한 환경과 실제 사용 환경이 다르면 예상보다 낮은 성능을 보일 수 있다. 특히 시간이 지나면서 환경이 변하면 기존 모델의 판단이 부정확해질 수 있다.


훈련 데이터 품질과 편향(Training Data Quality and Bias)

AI 소프트웨어(AI Software)의 성능은 훈련 데이터(Training Data)의 품질에 큰 영향을 받는다. 훈련 데이터의 품질이 낮으면, 이를 바탕으로 학습한 모델(Model)의 성능도 떨어질 수밖에 없다.

예를 들어 얼굴 인식(Face Recognition) AI를 학습할 때 흐릿한 이미지, 조명이 좋지 않은 이미지, 각도가 불안정한 이미지가 많이 포함되어 있다면 모델이 얼굴을 정확하게 식별하기 어렵다. 즉, 데이터가 부정확하거나 품질이 낮으면 AI의 판단 결과도 부정확해질 수 있다.

또한 훈련 데이터가 특정 인종, 성별(Gender), 연령(Age)에 치우쳐 있으면 편향(Bias) 문제가 발생할 수 있다. 특정 그룹의 데이터가 많으면 그 그룹에 대해서는 성능이 좋을 수 있지만, 데이터가 부족한 그룹에 대해서는 성능이 낮아질 수 있다. 따라서 다양한 집단을 포함한 균형 잡힌 데이터가 필요하다.

마지막으로 훈련 데이터가 특정 인물이나 특정 환경(Environment)에만 한정되어 있으면 일반화(Generalization) 능력이 부족해질 수 있다. 예를 들어 자율주행 자동차(Autonomous Vehicle)가 도시 환경 위주로만 학습했다면, 시골길이나 낯선 도로 환경에서는 안전하게 판단하지 못할 수 있다. 따라서 AI 모델이 실제 환경에서도 잘 동작하려면 다양한 상황과 환경을 반영한 데이터로 학습해야 한다.


훈련 과정의 문제: 과적합과 과소적합(Overfitting and Underfitting)

AI 소프트웨어(AI Software)는 훈련 과정(Training Process)에서 에포크(Epoch) 수나 파라미터(Parameter) 값이 적절하지 않으면 품질 문제가 발생할 수 있다. 대표적인 문제는 과적합(Overfitting)과소적합(Underfitting)이다.

과적합(Overfitting)은 모델(Model)이 훈련 데이터(Training Data)에 지나치게 맞춰진 상태를 말한다. 에포크 수가 너무 많거나 모델이 너무 복잡하면, 훈련 데이터에서는 좋은 성능을 보이지만 새로운 데이터(Unseen Data)에 대해서는 정확도가 떨어질 수 있다. 예를 들어 훈련 데이터의 대부분이 개 이미지이고 고양이 이미지는 적다면, 모델은 개는 잘 구분하지만 고양이는 제대로 예측하지 못할 수 있다.

과소적합(Underfitting)은 모델이 훈련 데이터의 패턴(Pattern)을 충분히 학습하지 못한 상태를 말한다. 에포크 수가 너무 적거나 모델 구조가 너무 단순하면, 훈련 데이터와 새로운 데이터 모두에서 성능이 낮게 나타날 수 있다. 예를 들어 감정 분석 AI가 “좋다”, “나쁘다”처럼 단순한 감정만 학습했다면, 복잡한 감정 상태를 제대로 구분하지 못할 수 있다.

따라서 AI 모델을 개발할 때는 에포크 수, 모델 복잡도(Model Complexity), 파라미터 값을 적절하게 조정하여 훈련 데이터에만 치우치지 않고 새로운 데이터에도 잘 동작하도록 만들어야 한다.


훈련 데이터와 실제 환경의 차이(Training-Serving Data Difference)

AI 소프트웨어(AI Software)는 훈련 데이터(Training Data)를 기반으로 학습하지만, 실제 사용 환경(Real-world Environment)이 훈련 환경과 다르면 예상대로 동작하지 못할 수 있다.

예를 들어 자율주행 자동차(Autonomous Vehicle)의 AI 모델이 주로 차량이 있는 도로 데이터만 학습했다면, 실제 도로에서 보행자(Pedestrian), 자전거(Bicycle), 공사 구간(Construction Zone) 같은 다양한 요소를 제대로 인식하지 못할 수 있다.

또한 훈련된 환경과 실제 운영 환경이 달라지는 경우도 문제가 된다. 예를 들어 모델이 건조하고 밝은 날씨의 도로만 학습했다면, 비가 오거나 안개가 낀 상황에서는 정확한 판단이 어려울 수 있다. 도로 구조가 바뀌거나 우회도로가 생기는 경우도 모델 성능에 영향을 줄 수 있다.

특히 자율주행처럼 안전(Safety)이 중요한 시스템에서는 이러한 차이가 큰 문제가 될 수 있다. 실제 환경에서도 AI가 안정적으로 판단하고 제어할 수 있도록 다양한 상황을 반영한 데이터와 지속적인 검증이 필요하다.


정리(Summary): AI 소프트웨어와 품질 문제(AI Software and Quality Issues)

지금까지 AI 소프트웨어(AI Software)의 정의와 품질에 영향을 주는 문제점을 살펴보았다. AI 소프트웨어는 데이터(Data)를 기반으로 학습하고, 학습된 모델(Model)을 통해 판단하거나 예측하는 소프트웨어이다.

AI 소프트웨어의 품질 문제는 주로 데이터와 모델 측면에서 발생한다. 훈련 데이터(Training Data)의 품질이 낮거나 편향되면 모델의 성능이 떨어질 수 있고, 훈련 과정에서 에포크(Epoch)나 파라미터(Parameter)가 적절하지 않으면 과적합(Overfitting) 또는 과소적합(Underfitting)이 발생할 수 있다. 또한 훈련 환경과 실제 사용 환경이 다르면 모델이 예상대로 동작하지 않을 수 있다.

기존 소프트웨어(Traditional Software)는 정해진 요구사항(Requirements)을 얼마나 잘 만족하는지가 품질의 기준이 된다. 하지만 AI 소프트웨어는 모든 상황과 요구사항을 명확히 정의하기 어렵다. 아직 경험하지 못한 데이터와 환경이 많기 때문에, 제한된 학습 데이터를 바탕으로 최대한 적절한 결과를 내야 한다.

따라서 AI 소프트웨어의 품질 확보(Quality Assurance)는 앞으로 계속 해결해야 할 중요한 과제이다. AI가 실제 환경에서도 신뢰성 있게 동작하려면 데이터 품질, 모델 학습 과정, 실제 환경 변화까지 함께 고려해야 한다.


2️⃣Quality Issues and Characteristics of AI Software

AI 소프트웨어의 품질 문제와 영향(Quality Issues and Impact of AI Software)

이번 챕터에서는 AI 소프트웨어(AI Software)의 품질 문제와 특성에 대해 살펴본다. AI 소프트웨어는 자율주행 자동차(Autonomous Vehicle), 항공기(Aircraft), 의료기기(Medical Device)와 같은 최종 제품 안에서 시스템(System)이나 서브시스템(Subsystem)을 제어하는 중요한 요소가 될 수 있다.

AI 소프트웨어에 결함(Defect)이 발생하면 단순히 소프트웨어 내부 문제로 끝나지 않는다. 개발자의 실수, 낮은 품질의 데이터(Data), 편향된 데이터(Biased Data), 새로운 환경을 반영하지 못한 학습 문제 등으로 인해 모델(Model)의 성능이 낮아질 수 있다. 예를 들어 개를 고양이로 잘못 판단하는 것처럼 잘못된 예측이나 분류가 발생할 수 있다.

이러한 오류는 상위 서브시스템과 전체 시스템으로 전달되어 최종 제품의 동작에 영향을 줄 수 있다. 특히 자율주행처럼 안전이 중요한 분야에서는 AI 소프트웨어가 경험하지 못한 환경에서 오동작을 일으키고, 그 결과 인명 피해, 상해, 경제적 손실, 환경적 피해로 이어질 수 있다.

따라서 AI 소프트웨어의 품질 문제는 단순한 성능 저하가 아니라 실제 사고와 위해(Harm)로 연결될 수 있는 중요한 문제이다.


AI 소프트웨어의 위험성(Risks of AI Software)

AI 소프트웨어(AI Software)는 다양한 분야에서 활용되지만, 결함이나 악용이 발생하면 실제 피해(Harm)로 이어질 수 있다. 대표적인 사례로는 딥페이크(Deepfake), 피싱(Phishing), AI 예술(AI Art), 의료 AI(Medical AI) 문제가 있다.

딥페이크(Deepfake)는 AI를 이용해 특정 인물의 얼굴이나 목소리를 실제처럼 흉내 내는 기술이다. 이를 악용하면 유명인이나 공인을 사칭해 가짜 광고, 투자 사기, 구매 유도 영상 등을 만들 수 있다. 실제로 호주 Scamwatch도 유명인 딥페이크를 이용한 투자 사기가 증가하고 있다고 경고했다.

대화형 인공지능(Conversational AI)도 악용될 수 있다. ChatGPT와 같은 생성형 AI(Generative AI)를 사용하면 자연스러운 문장이나 이메일을 쉽게 만들 수 있기 때문에, 피싱 이메일(Phishing Email)이나 사기 메시지가 더 그럴듯하게 작성될 수 있다. 사용자가 이를 진짜로 착각해 링크를 클릭하면 개인정보 유출이나 경제적 피해가 발생할 수 있다.

AI 예술(AI Art)도 논쟁이 되고 있다. 예를 들어 2022년 미국 콜로라도 주립 박람회(Colorado State Fair)에서 Jason Allen의 AI 생성 이미지가 디지털 아트 부문에서 1위를 차지하면서, AI로 만든 예술을 어떻게 평가하고 보상해야 하는지 논쟁이 커졌다.

의료 분야에서도 AI 소프트웨어의 위험성이 나타날 수 있다. IBM Watson for Oncology는 암 치료 추천에 사용된 AI 시스템이었는데, 2018년 STAT 보도에 따르면 내부 문서에서 안전하지 않거나 부정확한 치료 추천 사례가 지적되었다. 의료 AI가 환자의 상태나 실제 환경을 충분히 반영하지 못하면 잘못된 치료 방향을 제시할 수 있고, 이는 환자에게 큰 위해로 이어질 수 있다.

따라서 AI 소프트웨어의 위험성은 단순한 기술 오류를 넘어 경제적 손실, 사회적 논쟁, 개인정보 피해, 의료 사고와 같은 다양한 형태의 Harm으로 연결될 수 있다.


AI 소프트웨어의 품질 특성(Quality Characteristics of AI Software)

AI 소프트웨어(AI Software)는 기존 소프트웨어(Traditional Software)처럼 기능적 특성(Functional Characteristics)과 비기능적 특성(Non-functional Characteristics)을 가진다. 하지만 AI 소프트웨어는 데이터와 모델을 기반으로 학습하고 판단하기 때문에, 기존 소프트웨어와 구분되는 추가적인 품질 특성도 함께 고려해야 한다.

AI 소프트웨어의 대표적인 품질 특성에는 적응성(Adaptability), 자율성(Autonomy), 진화성(Evolution), 유연성(Flexibility), 편향성(Bias), 성능 메트릭(Performance Metric), 투명성(Transparency), 복잡성(Complexity), 비결정성(Non-determinism)이 있다.

이러한 특성들은 AI 소프트웨어가 실제 환경에서 얼마나 안정적으로 동작하는지, 새로운 상황에 얼마나 잘 대응하는지, 판단 과정이 얼마나 설명 가능한지 등을 평가하는 데 중요한 기준이 된다.


일반 소프트웨어의 품질 특성(ISO/IEC 25010 SQuaRE)

ISO/IEC 25010 SQuaRE는 시스템과 소프트웨어의 품질 특성(Quality Characteristics)을 정의한 국제 표준이다. 특정 산업에만 한정되지 않고 금융, 자동차, 의료, 공공 시스템 등 다양한 분야의 소프트웨어 품질을 평가하는 기준으로 활용될 수 있다.

이 표준에서는 좋은 품질의 소프트웨어가 갖추어야 할 대표적인 특성으로 기능 적합성(Functional Suitability), 성능 효율성(Performance Efficiency), 호환성(Compatibility), 사용성(Usability), 신뢰성(Reliability), 보안성(Security), 유지보수성(Maintainability), 이식성(Portability)을 제시한다. 즉, 소프트웨어가 원하는 기능을 제대로 수행하고, 성능이 좋으며, 다른 시스템과 잘 호환되고, 사용하기 쉽고, 안정적이며, 보안과 유지보수 측면에서도 문제가 적어야 좋은 품질이라고 볼 수 있다.

AI 소프트웨어(AI Software)도 기본적으로 이러한 일반 소프트웨어 품질 특성을 만족해야 한다. 다만 AI 소프트웨어는 데이터(Data)와 모델(Model)을 기반으로 학습하고 판단하기 때문에, 여기에 더해 적응성(Adaptability), 자율성(Autonomy), 편향성(Bias), 투명성(Transparency), 비결정성(Non-determinism)과 같은 추가적인 품질 특성도 함께 고려해야 한다.


AI 소프트웨어의 품질 특성: 적응성, 자율성, 진화(Adaptability, Autonomy, Evolution)

AI 소프트웨어(AI Software)는 기존 소프트웨어와 달리 환경 변화나 새로운 데이터에 따라 동작 방식이 달라질 수 있다. 그중 대표적인 품질 특성으로 적응성(Adaptability), 자율성(Autonomy), 진화(Evolution)가 있다.

적응성(Adaptability)은 환경이나 상황 변화에 맞춰 소프트웨어가 자동으로 조정되는 능력이다. 예를 들어 스마트홈 시스템(Smart Home System)은 사용자의 생활 패턴을 학습하여 에너지 사용을 조절할 수 있다. 사용자가 집에 없는 시간에는 에너지를 절약하고, 수면 시간에는 온도나 습도를 조절하는 방식이 이에 해당한다.

자율성(Autonomy)은 사람의 개입 없이 소프트웨어가 스스로 작업을 수행하고 의사결정(Decision Making)을 내리는 능력이다. 대표적인 예는 자율주행 자동차(Autonomous Vehicle)이다. 자율주행 자동차는 주변 환경을 인식하고, 차선 변경(Lane Change), 속도 조절(Speed Control) 등을 판단하며 안전하게 주행해야 한다.

진화(Evolution)는 시간이 지나면서 새로운 데이터(Data)나 요구사항(Requirements)을 반영해 성능을 향상시키는 능력이다. 예를 들어 대화형 인공지능 모델(Conversational AI Model)은 특정 시점까지의 데이터를 학습해 답변을 생성한다. 이후 새로운 데이터와 요구사항을 반영해 다시 학습하거나 개선되면 더 나은 성능을 제공할 수 있다.


AI 소프트웨어의 품질 특성: 유연성, 편향성, 성능 메트릭(Flexibility, Bias, Performance Metrics)

유연성(Flexibility)은 AI 소프트웨어가 다양한 데이터 유형(Data Type)이나 작업 유형(Task Type)에 맞게 조정될 수 있는 능력이다. 예를 들어 음성 인식 소프트웨어(Speech Recognition Software)는 여러 언어, 다양한 사람의 발음, 억양, 사투리까지 인식할 수 있어야 한다. 특정한 형태의 데이터만 처리하는 것이 아니라, 다양한 입력 상황에 대응할 수 있는 능력이 유연성이다.

편향성(Bias)은 AI 모델(Model)이 특정 그룹이나 특성에 대해 치우친 예측을 내리는 경향을 말한다. 훈련 데이터(Training Data)가 특정 인종, 성별, 연령, 환경에 치우쳐 있으면 모델도 그 방향으로 편향될 수 있다. 예를 들어 AI 채용 소프트웨어(AI Recruiting Software)가 특정 성별이나 인종에게 불리한 판단을 내린다면 공정성(Fairness)에 문제가 생긴다. 따라서 AI 소프트웨어는 편향을 줄이고 공정한 판단을 할 수 있도록 관리되어야 한다.

성능 메트릭(Performance Metrics)은 AI 소프트웨어의 성능을 수치로 평가하는 기준이다. 대표적인 지표로 정확도(Accuracy), 정밀도(Precision), 재현율(Recall)이 있다.

정확도(Accuracy)는 전체 예측 중 올바르게 예측한 비율이다. 예를 들어 100개의 이메일 중 90개를 올바르게 분류했다면 정확도는 90%이다.

정밀도(Precision)는 AI가 스팸(Spam)이라고 예측한 것 중 실제로 스팸인 비율이다. 예를 들어 AI가 15개를 스팸으로 예측했고, 그중 실제 스팸이 13개라면 정밀도는 13/15이다.

재현율(Recall)은 실제 스팸 메일 중에서 AI가 스팸으로 올바르게 찾아낸 비율이다. 예를 들어 실제 스팸이 20개인데 AI가 그중 15개를 찾아냈다면 재현율은 15/20이다.

이처럼 AI 소프트웨어의 성능은 정확도, 정밀도, 재현율 같은 지표를 통해 평가할 수 있으며, 이러한 지표를 개선하는 것이 품질 향상과 연결된다.


AI 소프트웨어의 품질 특성: 투명성, 복잡성, 비결정성(Transparency, Complexity, Non-determinism)

투명성(Transparency)은 AI 소프트웨어가 어떤 근거와 과정을 통해 판단했는지 설명하거나 이해할 수 있게 하는 특성이다. AI 모델은 많은 데이터를 학습하고 복잡한 방식으로 결과를 예측하기 때문에, 내부 판단 과정을 사람이 바로 이해하기 어려울 수 있다. 예를 들어 이미지 분류 모델(Image Classification Model)이 고양이를 인식했다면, 어떤 특징을 보고 고양이라고 판단했는지 시각화하거나 설명할 수 있어야 한다. 이처럼 AI의 판단 과정을 이해 가능하게 만드는 것이 투명성이다.

복잡성(Complexity)은 AI 모델의 구조가 얼마나 복잡한지, 얼마나 많은 파라미터(Parameter)를 가지고 있는지를 의미한다. 심층 신경망(Deep Neural Network)은 매우 많은 파라미터를 사용해 데이터를 학습한다. 일반적으로 모델이 복잡할수록 더 다양한 패턴을 학습할 수 있어 성능이 높아질 수 있지만, 그만큼 내부 구조를 이해하거나 관리하기 어려워진다. 따라서 성능을 높이면서도 복잡성을 줄이려는 연구도 계속 진행되고 있다.

비결정성(Non-determinism)은 AI 모델의 결과가 항상 100% 확정적이지 않고, 확률적 판단에 기반할 수 있다는 특성이다. AI 소프트웨어는 모든 데이터를 학습할 수 없기 때문에 새로운 상황에서 정답에 가까운 결과를 예측한다. 따라서 기존 소프트웨어처럼 정해진 입력에 대해 항상 명확한 결과가 나오는 방식과는 차이가 있다. 이러한 불확실성이 AI 소프트웨어의 비결정성과 연결된다.

정리하면 AI 소프트웨어는 기존 소프트웨어의 품질 특성뿐 아니라 적응성(Adaptability), 자율성(Autonomy), 진화(Evolution), 유연성(Flexibility), 편향성(Bias), 성능 메트릭(Performance Metrics), 투명성(Transparency), 복잡성(Complexity), 비결정성(Non-determinism) 같은 추가적인 품질 특성을 함께 고려해야 한다.


3️⃣ AI Software Development and Quality

AI 소프트웨어 개발 품질(AI Software Development Quality)

AI 소프트웨어(AI Software)는 하나의 제품(Product)이기 때문에, 품질을 확보하려면 개발과 운영 과정 전체의 품질을 높이는 것이 중요하다. 앞에서 살펴본 것처럼 AI 소프트웨어는 데이터(Data), 모델(Model), 학습 과정(Training Process), 실제 운영 환경(Operational Environment)에 따라 품질 문제가 발생할 수 있다.

따라서 AI 소프트웨어의 품질을 높이기 위해서는 단순히 결과만 확인하는 것이 아니라, 개발 프로세스(Development Process)를 체계적으로 관리해야 한다. 데이터 수집, 데이터 품질 검토, 모델 학습, 평가(Evaluation), 배포(Deployment), 운영 및 모니터링(Monitoring) 과정이 잘 관리되어야 최종 AI 제품의 품질도 높아질 수 있다.

기존 소프트웨어와 마찬가지로 AI 소프트웨어도 개발 프로세스를 따르지만, AI는 데이터와 학습 과정이 핵심이기 때문에 기존 소프트웨어와는 다른 관리 기준이 필요하다. 특히 데이터 품질 기준(Data Quality Criteria), 모델 평가 기준(Model Evaluation Criteria), 운영 중 성능 변화 확인이 중요하다.

결국 AI 소프트웨어의 품질을 확보하기 위해서는 제품 자체만 보는 것이 아니라, 제품을 개발하고 운영하는 프로세스의 품질(Process Quality)을 함께 높여야 한다.


V모델(V-Model)과 AI 소프트웨어 개발(AI Software Development)

AI 소프트웨어(AI Software)도 기존 소프트웨어처럼 V모델(V-Model)을 기반으로 개발할 수 있다. V모델은 개발 단계와 테스트 단계를 서로 연결하여, 개발 초반부터 품질을 관리하는 방식이다.

기존 V모델의 왼쪽에는 고객/사용자 요구사항(Customer/User Requirements), 요구사항 분석(Requirements Analysis), 아키텍처 설계(Architecture Design), 상세 설계(Detailed Design)가 있다. 아래쪽에는 구현(Coding)이 있으며, 오른쪽에는 단위 테스팅(Unit Testing), 통합 테스팅(Integration Testing), 시스템 테스팅(System Testing), 인수 테스팅(Acceptance Testing)이 배치된다.

V모델의 핵심은 각 개발 단계에 대응되는 테스트를 함께 고려하는 것이다. 즉, 개발이 끝난 뒤에만 테스트하는 것이 아니라 요구사항과 설계 단계부터 어떤 기준으로 검증할지 생각해야 한다. 이렇게 앞단계부터 품질을 관리해야 최종 제품의 품질도 높아질 수 있다.

AI 소프트웨어도 V모델을 완전히 벗어나는 것은 아니다. 다만 AI 소프트웨어는 데이터(Data), 모델(Model), 학습(Training), 평가(Evaluation) 같은 요소가 중요하기 때문에 기존 V모델과 용어와 적용 방식에는 차이가 있을 수 있다.


V모델 기반 AI 소프트웨어 시스템 개발(V-Model-based AI Software System Development)

AI 소프트웨어(AI Software)를 포함한 전체 시스템도 V모델(V-Model)을 기반으로 개발할 수 있다. 먼저 시스템 관점에서 요구사항을 분석하고, 시스템 아키텍처(System Architecture)를 설계한다. 이후 시스템을 구성하는 요소 중 어떤 부분을 일반 소프트웨어(Traditional Software)로 개발할지, 어떤 부분을 AI 소프트웨어로 개발할지 결정한다.

일반 소프트웨어는 기존 V모델처럼 요구사항 분석(Requirements Analysis), 아키텍처/상세 설계(Architecture/Detailed Design), 구현(Coding), 단위/통합 테스팅(Unit/Integration Testing), 시스템 테스팅(System Testing)의 과정을 따른다.

AI 소프트웨어도 V모델의 개념을 적용할 수 있다. 다만 용어와 절차가 조금 다르다. AI 소프트웨어는 먼저 가능한 범위 안에서 요구사항을 정의한다. 예를 들어 “고양이와 강아지를 분류하는 모델을 만든다”와 같은 목표를 설정한다. 이후 훈련 데이터(Training Data)를 준비하고, 데이터를 기반으로 모델을 훈련(Training)한다. 그다음 평가 데이터(Evaluation Data)를 사용해 모델을 테스트하고, 최종적으로 모델이 요구사항을 만족하는지 확인한다.

이후 일반 소프트웨어와 AI 소프트웨어는 하나의 시스템으로 통합되고, 통합 테스팅(Integration Testing), 시스템 테스팅(System Testing), 인수 테스팅(Acceptance Testing)을 거쳐 최종 제품으로 완성된다.

핵심은 AI 소프트웨어도 품질 확보(Quality Assurance)를 위해 체계적인 개발 프로세스를 따라야 한다는 점이다. V모델은 개발 단계와 테스트 단계를 연결하여 초기 단계부터 품질을 관리할 수 있게 해준다.


AI 소프트웨어 개발의 주요 단계: 요구사항 분석(Requirements Analysis)

AI 소프트웨어 개발의 첫 단계는 요구사항 분석(Requirements Analysis)이다. 이 단계에서는 사용자(User), 고객(Customer), 이해관계자(Stakeholder)의 요구사항을 이해하고, AI가 해결해야 할 문제를 정의한다.

AI 소프트웨어는 기존 소프트웨어처럼 모든 요구사항을 완벽하게 정의하기 어렵지만, 가능한 범위 안에서 목표와 기준을 정해야 한다. 예를 들어 고양이 판별 AI를 만든다면, 단순히 고양이인지 아닌지만 분류할 것인지, 다른 동물도 함께 구분할 것인지, 고양이의 품종까지 세부적으로 분류할 것인지 등을 정해야 한다.

또한 입력 데이터(Input Data)의 범위도 요구사항에 포함된다. 고양이 얼굴만 판별할 것인지, 전신 이미지를 대상으로 할 것인지, 국내 고양이만 다룰 것인지 전 세계 다양한 고양이를 포함할 것인지도 결정해야 한다.

AI 소프트웨어에서는 성능 메트릭(Performance Metrics)도 중요한 요구사항이 된다. 예를 들어 정확도(Accuracy) 90%, 정밀도(Precision) 85%, 재현율(Recall) 90%와 같이 목표 성능을 정할 수 있다.

결국 AI 소프트웨어의 요구사항 분석은 기능적 요구사항(Functional Requirements)뿐만 아니라, 일반 소프트웨어 품질 특성과 AI 소프트웨어 고유의 품질 특성을 함께 고려하여 정리하는 과정이다.


훈련 데이터 준비(Training Data Preparation)

AI 소프트웨어 개발의 다음 단계는 훈련 데이터 준비(Training Data Preparation)이다. 요구사항 분석을 통해 AI가 어떤 문제를 해결해야 하는지 정했다면, 그 요구사항을 만족할 수 있는 데이터셋(Dataset)을 설계하고 준비해야 한다.

예를 들어 요구사항이 “고양이인지 아닌지만 판별한다”라면, 이미지마다 “고양이(Cat)” 또는 “고양이가 아님(Not Cat)”이라는 레이블(Label)이 붙은 데이터를 준비하면 된다.

반면 고양이의 종류까지 구분해야 한다면, 고양이 품종마다 다른 레이블을 부여한 이미지 데이터가 필요하다. 이 경우 단순한 이진 분류(Binary Classification)가 아니라 여러 종류를 구분하는 다중 분류(Multi-class Classification)가 된다.

또한 같은 종류의 고양이라도 자세, 배경, 밝기, 촬영 각도 등이 다양한 이미지를 준비해야 한다. 그래야 AI 모델(Model)이 특정 조건에만 맞춰지는 것이 아니라, 다양한 상황에서도 고양이를 잘 판별할 수 있다.

즉, 훈련 데이터 준비는 AI 소프트웨어의 요구사항에 맞게 데이터를 수집하고, 레이블을 붙이고, 다양한 상황을 반영하도록 데이터셋을 구성하는 과정이다.


모델 훈련과 테스트(Model Training and Testing)

세 번째 단계는 준비한 훈련 데이터(Training Data)를 이용해 AI 모델(Model)을 훈련하고, 모델이 제대로 학습되었는지 테스트하는 과정이다. 이 단계에서는 적절한 AI 모델을 선택하고, 훈련용 데이터셋(Training Dataset)을 기반으로 학습을 진행한다.

훈련이 끝난 뒤에는 훈련 데이터에 포함되지 않은 새로운 데이터(Unseen Data)나 테스트 데이터셋(Test Dataset)을 사용해 모델 성능을 평가해야 한다. 훈련 데이터에서만 성능이 좋고 새로운 데이터에서 성능이 낮다면, 실제 환경에서는 원하는 결과를 내기 어렵기 때문이다.

평가 결과가 부족하다면 선택한 AI 모델이 적절한지, 파라미터(Parameter)가 잘 설정되었는지, 훈련 데이터의 양이 충분한지, 데이터가 편향(Bias)되어 있지는 않은지 점검해야 한다. 필요하다면 모델을 수정하거나 데이터를 보완한 뒤 다시 훈련과 테스트를 진행한다.

또한 AI 소프트웨어는 한 번 높은 성능이 나왔다고 끝나는 것이 아니다. 실제 환경에서는 새로운 데이터와 상황이 계속 등장하기 때문에 지속적인 테스트(Continuous Testing)가 필요하다. 제품이 사용되는 동안 모델의 성능을 계속 확인하고, 필요한 경우 재학습(Retraining)이나 업데이트(Update)를 통해 품질을 유지해야 한다.


일반 소프트웨어와 AI 소프트웨어 개발의 차이(Difference Between Traditional Software and AI Software Development)

일반 소프트웨어(Traditional Software)와 AI 소프트웨어(AI Software)의 차이는 연역(Deduction)귀납(Induction)의 개념으로 이해할 수 있다.

일반 소프트웨어는 연역적(Deductive) 방식에 가깝다. 먼저 요구사항(Requirements)이라는 큰 전제를 정하고, 이를 만족하기 위해 설계(Design), 구현(Implementation), 테스트(Testing)를 구체화한다. 따라서 요구사항을 기준으로 예상 결과(Expected Result)를 정의하고, 실제 결과가 이를 만족하는지 테스트할 수 있다.

반면 AI 소프트웨어는 귀납적(Inductive) 방식에 가깝다. 개별 데이터 사례를 학습하고, 그 사례들로부터 일반적인 패턴이나 규칙을 찾아낸다. 예를 들어 여러 고양이 데이터를 보고 고양이의 특징을 학습한 뒤, 새로운 이미지가 들어왔을 때 고양이인지 판단하는 방식이다. Example: Observation 1: Every swan I have ever seen is white. Observation 2: Every swan my friends have seen is white. Conclusion: Therefore, all swans are white.

AI 소프트웨어는 모든 가능한 사례를 데이터로 수집하고 학습할 수 없기 때문에, 요구사항을 기존 소프트웨어처럼 명확하게 정의하기 어렵다. 알려지지 않은 상황(Unknown)이 많고, 실제 환경에서 새로운 데이터가 계속 등장하기 때문이다. 그래서 AI 소프트웨어는 일반 소프트웨어와 다른 개발 및 테스트 기법이 필요하다.

More from this blog

My dev journey

144 posts