2.1 챗봇 모델의 기능 정의 및 모델 선정
생성형 AI 기술을 전력계통에 효과적으로 적용하기 위해서는 다양한 자연어 처리 기능이 필요하다. 문자, 구문, 의미, 담론 수준의 처리 기능들은 데이터의
분석 및 해석에 중요한 역할을 한다. 문자 수준에서는 텍스트를 분석하여 구조를 파악하고, 구문 수준에서는 문장의 문법적 구조를 이해하며, 의미 수준에서는
문장의 실제 의미를 해석하고, 담론 수준에서는 대화의 맥락을 분석하여 새로운 정보를 생성한다[9]. 본 연구에서는 이 중 의미 분석, 텍스트 생성, 질문 답변 시스템, 그리고 챗봇 기능을 중심으로 전력계통에 적용할 AI 기술을 구현하였다. 이들
기능은 실시간으로 정확한 정보를 제공하고, 복잡한 질문에 답할 수 있도록 설계되었다.
본 연구는 GPT-Neo, GPT-J, Fairseq, spaCy, OpenNMT, Hugging Face Transformers, LLaMA 3
등의 오프라인에서 구동 가능한 모델을 검토하였다. GPT-Neo와 GPT-J는 텍스트 생성과 의미 분석에서 우수하지만 자원 요구량이 크다. Fairseq는
시퀀스 투 시퀀스 학습에 강점이 있지만 실시간 응용에는 적합하지 않다. spaCy는 빠르고 경량화된 모델이지만 복잡한 작업에서 한계가 있다. OpenNMT는
번역 작업에 적합하지만 자원 소모가 크다. Hugging Face Transformers는 다양한 NLP 작업에서 우수한 성능을 보이나, 자원 요구량이
매우 크다. LLaMA 3는 최신 대규모 언어 모델로서 자원 효율성과 성능 면에서 최적화되어 있으며, 실시간 문제 해결과 질문 답변에서 가장 뛰어난
성능을 발휘한다. 본 연구는 LLaMA 3를 최종적으로 선정하였다[10-16]. 표 1에 각 모델의 비교결과를 나타내었다.
표 1 주요 자연어 처리 모델의 장단점 비교 결과
Table 1 The caption must be followed by the table
모델명
|
의미
분석
|
텍스트
생성
|
답변
정확도
|
성능
최적화
|
실시간
처리
|
GPT-Neo&J
|
우수
|
우수
|
우수
|
우수
|
우수
|
Transformers
|
매우 우수
|
매우 우수
|
매우 우수
|
매우 우수
|
우수
|
Fairseq
|
우수
|
우수
|
우수
|
우수
|
제한적
|
spaCy
|
매우 우수
|
제한적
|
제한적
|
제한적
|
제한적
|
OpenNMT
|
우수
|
우수
|
우수
|
우수
|
제한적
|
LLaMA3
|
매우 우수
|
매우 우수
|
매우 우수
|
매우 우수
|
매우 우수
|
2.2 전력분야 특화 챗봇 모델 개발
본 연구에서는 배전계통의 운영자가 분산전원의 배전계통 연계와 관련된 정보를 찾을 수 있는 전력분야 특화형 챗봇을 개발하고자 한다. 이를 위해 학습데이터는
우리나라 분산전원 관련 주요 규정인 한국전력의 “분산형전원 배전계통 연계 기술기준”을 활용하였다[17]. 또한, 해당 학습데이터를 토대로 하여 다양한 전기분야 용어에 대해 응답을 출력하는 것을 목표로 설정하였다. 가령 사용자가 "분산전원이 뭐야?"라는
질문을 입력한다면, 챗봇은 “분산형전원 배전계통 연계 기술기준”을 참고하여 분산전원에 대한 정의를 제공한다. 본 연구에서는 이 과정에서 Retrieval-Augmented
Generation (RAG) 방식를 적용하였다. RAG 방식은 검색과 생성 과정을 결합하여 더욱 정확한 답변을 제공하는 방법으로, 질문에 대한 답변을
생성하기 전에 관련된 문서를 검색하여 그 정보를 취득 및 활용하여 사용자가 제공한 질문에 맞는 자연스러운 답변을 생성한다는 특징을 가진다[18]. 즉, RAG 방식은 정보 검색(retrieval)과 자연어 생성(generation)을 결합함으로써, 단순히 언어 모델만 사용하는 것보다 더 신뢰성
있고, 사실적인 정보를 제공할 수 있다는 장점을 가진다[18]. 본 연구에서 제안한 RAG 구조를 포함한 챗봇 모델의 알고리즘 흐름도 및 주요 코드를 아래의 그림 1과 표 2에 나타내었다.
그림 1. 제안 전력분야 특화 챗봇의 알고리즘 흐름도
Fig. 1. Flow chart of proposed chatbot algorithm
표 2 제안 챗봇의 Python 축약 코드
Table 2 Abbreviated Python code for the proposed chatbot
① 참고문서 추출 및 저장: PDF 문서에서 텍스트를 추출한 후, PyPDFLoader와 CharacterTextSplitter 라이브러리를 사용해
일정 크기의 청크(chunk)로 분할하여 저장한다. 청크는 문단 단위로 저장될 수 있도록 작성하였으며, 문맥을 고려할 수 있도록 앞뒤 문단의 일부가
오버랩되어 포함되도록 청크를 구성하였다. 이러한 구성을 통하여 동일한 대상을 설명하고 있는 여러 문단을 포함할 수 있도록 하였다. 청크를 분할하는
과정은 아래의 식 (1) 및 (2)와 같다.
여기서, $i_{k}$: $k$번째 청크의 시작 인덱스, $k$: 청크의 인덱스, $C$: 청크의 크기, $O$: 겹침의 길이, $N$: 총 청크의
개수, $L$: 텍스트의 총 길이
② 질문에서 키워드 추출: 사용자의 질문에서 핵심 단어를 추출한다. re 모듈을 사용해 불필요한 조사와 기호를 제거하며, 사전에 정의된 다중 단어
키워드를 탐지하여 질문의 본질을 파악하고 검색에 활용한다. 키워드 추출과정은 아래의 식 (3)과 같다.
여기서, $K$: 추출된 키워드 집합, $W$: 입력 문장의 단어 집합, $S$: 불용어 집합
③ 키워드 기반 문서 검색: 추출된 키워드를 활용해 문서에서 관련 문장을 검색하고, 연관성 높은 문장을 리스트로 저장한다. 이를 통해 질문에 맞는
문장들을 수집한다.
④ 문장 필터링: 추출된 문장에서 중복되거나 의미가 부족한 문장을 걸러내고, 핵심 정보를 남긴다. 이 과정을 통해 질문과 직접 관련된 문장만 선택한다.
⑤ 언어 생성 모델 입력: 선택된 문장들을 Llama 언어 모델에 입력하여 질문에 대한 답변을 생성한다. 문장들을 청크 단위로 분할해 더 정교한 응답을
유도한다.
⑥ 생성 문장 검증: 생성된 문장의 의미와 문법적 오류를 판단하며, 중복된 문장을 제거해 명확하고 일관된 내용을 담도록 한다. 이 과정에서 문장의
유효성 판단과 중복 문장의 필터링은 식 (4) 및 (5)를 따른다.
여기서, ${valid}({s})$: 문장의 유효성 판단 결과, $s$: 생성된 문장, $| s |$: 생성된 문장의 길이, ${Repet}ive(s,\:
P)$: 생성된 문장 $s$의 기-생성된 문장 집합 $P$ 포함여부 판단 결과
⑦ 최종 응답 출력: 유효성을 통과한 문장들을 결합해 최종 응답을 구성하고 출력한다. 이를 통해 신뢰성 있는 답변을 제공하며, 문서 기반의 응답 시스템을
완성한다.
2.3 사례연구 검증 및 결과 분석
전술한 것처럼, 본 연구에서는 우리나라 분산전원 관련 주요 규정인 한국전력의 “분산형전원 배전계통 연계 기술기준”을 선정하고, 해당 규정을 토대로
쳇봇이 구동할 수 있도록 하였다. 개발한 전력분야 특화 챗봇의 성능을 평가하기 위하여 중요도가 높은 용어들을 임의로 선정하고 해당 용어에 대한 질문에
대한 개발된 챗봇의 출력을 통해 개발된 전력분야 특화 챗봇을 검증하였다. 본 연구에서 검증을 위하여 사용한 용어들은 “서지, 플리커, 고조파”이다.
각 용어에 대한 질문, “분산형전원 배전계통 연계 기술기준” 내 관련 부분, 챗봇 모델의 출력을 아래의 표 3에 나타내었다. 표 3에서 확인할 수 있는 것처럼, 개발한 챗봇 모델의 경우, 다양한 용어들에 대한 납득할만한 수준의 출력을 확인할 수 있었다. 특히, 고조파의 경우 “분산형전원
배전계통 연계 기술기준”에 고조파 자체에 대한 명확한 정의가 존재하지 않음에도 불구하고 나름의 정의를 제공한 후 관련 규정에서 언급하고 있는 “배전계통
고조파 관리 기준”이 존재함도 언급하고 있음을 확인할 수 있다.
또한, 다양한 유형의 질문에 잘 대응하지는 평가할 수 있도록 Robustness Test를 진행하였다. Robustness Test란 모델이나 시스템이
입력이나 환경 조건에 작은 변화가 있을 때도 성능이 유지되는지 평가하는 방법으로 연구 결과가 특정 조건이나 가정에 크게 의존하지 않는지 검증하는 데
사용하는 데 목적이 있다[19-20]. 즉, 챗봇이 예상치 못한 입력이나 다양한 변형된 질문에 어떻게 반응하는지 테스트할 수 있다는 장점이 있다. 이를 위하여 표 4와 같이 플리커라는 동일한 주제에 대하여 질문을 변형하면서 입력을 제공하고, 그 결과를 분석하였다. 분석결과, 질문이 변형되더라도 플리커라는 주요
키워드를 정상적으로 인식하고 대답을 제공하는 것을 확인할 수 있었다.
표 3 제안 챗봇의 출력 예시(서지, 플리커, 고조파)
Table 3 Example outputs of the proposed chatbot(surge, flicker, harmonics)
질문
|
서지가 뭐야?
|
규정
|
33. 서지(surge)
전기기기나 계통 운영 중에 발생하는 과도 전압 또는 전류로서, 일반적으로 최대값까지 급격히 상승하고 하강시에는 상승시보다 서서히 떨어지는 수 ms
이내의 지속시간을 갖는 파형의 것을 말한다.
|
챗봇
출력
|
서지란 전기기기나 계통운영에서 발생하는 최대 전압이나 전류로, 일반적으로 ms 범위의 지속 시간을 가지는 파형을 말합니다. 연계 시스템은 서지를 견딜
수 있는 능력을 가져야 합니다. 서지를 견딜 수 있는 능력은 전기기기의 안정성을 높이는 데 중요한 요소입니다. 서지의 발생은 전기 시스템의 효율성을
저하시키고, 장비의 손상을 초래할 수 있습니다.
|
질문
|
플리커가 뭐야?
|
규정
|
27. 플리커(flicker)
입력 전압의 요동(fluctuation)에 기인한 전등 조명 강도의 인지 가능한 변화 를 말한다.
|
챗봇
출력
|
플리커(flicker)는 입력전압의 요동(fluctuation)으로 인해 전등조명의 강도가 변하는 현상을 말합니다. 이는 특히 분산형전원 시스템에서
빈번한 기동이나 타락, 출력 변동 등의 원인으로 발생할 수 있습니다. 이러한 전압 요동은 전기사용자에게 시각적인 자극을 줄 수 있으며, 플리커나 설비의
오동작을 초래할 수 있습니다. 이를 방지하기 위한 제어가 필요합니다.
|
질문
|
고조파가 뭐야?
|
규정
|
제15조(전기품질)
④ 고조파
특고압 한전계통에 연계되는 분산형전원은 연계용량에 관계없이 한전이 계 통에 적용하고 있는 「배전계통 고조파 관리기준」에 준하는 허용기준을 초 과하는
고조파 전류를 발생시켜서는 안 된다.
|
챗봇
출력
|
고조파란 전기 전력 시스템에서 전류의 변동을 의미하는 파동입니다. 고조파가 발생하면 전력의 안정성이 저하될 수 있습니다. 특히, 특고압 한전계통에
연계되는 분산형 전원 시스템에서 고조파가 문제가 될 수 있습니다. 따라서, 이러한 시스템에서는 "배전계통 고조파 관리 기준"에 맞지 않는 전류를 발생시키는
것을 허용하지 않도록 제한하는 제한 기준이 있습니다.
|
다만, 제안한 키워드 기반의 전력분야 특화형 챗봇 모델 또한 개선점을 가지고 있음을 확인하였다. 가령 “분산형전원 이상 시 보호협조에 대해 설명해줘”라는
입력을 가한다면, 챗봇 모델은 참고한 자료에서 키워드인 “분산형전원”, “보호협조”에 대한 자료를 추출하고, 이를 토대로 답변을 생성하게 된다. 이때,
참고문서 내 분산된 각각의 문장들을 조합하고 재생성하는 과정에서 아래의 표 5와 같이 통일성이나 문장의 완성도가 다소 감소하는 경향을 보인다.
그러나 이는 현재 연구가 주로 용어 정의와 간단한 규정 검색에 초점을 맞추어 설계되었기 때문임을 명시하며, 향후 연구에서는 이를 확장하여 규정의 해석과
같은 복잡한 문제 해결형 질의에 대한 대응 능력을 강화하고, 상용 챗봇 등과의 성능을 심층적으로 비교 및 분석하여 전력 분야의 구체적인 상황에서 효과적으로
활용할 수 있도록 개선할 계획이다.
표 4 제안 챗봇의 Robustness Test 결과(플리커)
Table 4 Robustness Test Results of the Proposed Chatbot (Flicker)
질문
|
플리커가 뭐야?
|
챗봇 출력
|
플리커(flicker)는 전력망의 전압 변동으로 인해 발생하는 전등의 밝기 변화 현상을 말합니다. 이는 특히 분산형 전원 시스템에서 빈번하게 발생할
수 있습니다. 이는 전기 사용자에게 시각적 자극을 줄 수 있으며, 설비의 오동작을 초래할 수 있습니다. 따라서 전기 시스템은 플리커나 설비의 오동작을
줄이기 위해 적절한 관리와 조정이 필요합니다.
|
질문
|
플리커에 대해 설명해줘
|
챗봇 출력
|
플리커는 입력전압이 빈번하게 변동되는 현상을 의미하며, 이는 전등조명의 강도에 변동을 일으킬 수 있습니다. 분산형전원 시스템은 이러한 전압 변동을
일으키기 쉬우며, 이를 통해 플리커 현상이 발생할 수 있습니다. 플리커는 시각적인 자극을 줄 수 있으며, 이는 전기 시스템의 안정성과 사용자 경험에
부정적인 영향을 미칠 수 있습니다.
|
질문
|
flicker가 뭐야?
|
챗봇 출력
|
플리커(flicker)는 전력망의 입력전압이 빈번하게 변화하여 발생하는 전등의 강도나 색상이 변하는 현상입니다. 이는 분산형전원 시스템에서 자주 발생할
수 있으며, 시각적으로 눈에 띄는 변화로 사용자에게 불편을 초래할 수 있습니다. 전력망의 안정성을 높이고 플리커 현상을 최소화하기 위한 노력이 필요합니다.
|
표 5 제안 챗봇의 출력 예시(분산형전원 이상시 보호협조)
Table 5 Example outputs of the proposed chatbot(protection coordination during DG
failure)
질문
|
분산형전원 이상시 보호협조에 대해 설명해줘
|
챗봇 출력
|
분산형전원 배전계통의 연계 기술기준에 따르면, 분산형전원 배전계통이 이상 시 보호협조가 이루어지는 방식은 다음과 같습니다. 분산형전원 이상시 보호협조란,
분산형전원(Solar PV) 장비가 배전계통에 이상이 발생했을 때, 주변 전력망에 미치는 영향을 최소화하기 위해 수행되는 협조적인 행동을 의미합니다.
… (중략) … 분산형전원의 계통가압 중지 시간은 비정상 전압 상태에 따라 다르게 결정되며, 이를 분리 시간이라고 합니다. 분산형전원 이상시 보호협조에
대해 설명해주신 내용은 다음과 같습니다. 분산형전원 이상시 보호협조에 대해 설명하자면, 분산형전원 시스템이 비정상 상태로 전환될 경우, 전력망의 안정성을
유지하기 위해 운영 지속 시간과 분리 시간이 필요합니다.
|